simplify to add widgets via plugin (#1308)
This commit is contained in:
@@ -11,7 +11,6 @@ namespace App\Widget\Renderer;
|
|||||||
|
|
||||||
use App\Widget\Type\SimpleWidget;
|
use App\Widget\Type\SimpleWidget;
|
||||||
use App\Widget\WidgetInterface;
|
use App\Widget\WidgetInterface;
|
||||||
use ReflectionClass;
|
|
||||||
|
|
||||||
class SimpleWidgetRenderer extends AbstractTwigRenderer
|
class SimpleWidgetRenderer extends AbstractTwigRenderer
|
||||||
{
|
{
|
||||||
@@ -20,11 +19,18 @@ class SimpleWidgetRenderer extends AbstractTwigRenderer
|
|||||||
return $widget instanceof SimpleWidget;
|
return $widget instanceof SimpleWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param SimpleWidget $widget
|
||||||
|
* @param array $options
|
||||||
|
* @return string
|
||||||
|
* @throws \ReflectionException
|
||||||
|
* @throws \Twig\Error\LoaderError
|
||||||
|
* @throws \Twig\Error\RuntimeError
|
||||||
|
* @throws \Twig\Error\SyntaxError
|
||||||
|
*/
|
||||||
public function render(WidgetInterface $widget, array $options = []): string
|
public function render(WidgetInterface $widget, array $options = []): string
|
||||||
{
|
{
|
||||||
$name = (new ReflectionClass($widget))->getShortName();
|
return $this->renderTemplate($widget->getTemplateName(), [
|
||||||
|
|
||||||
return $this->renderTemplate(sprintf('widget/widget-%s.html.twig', strtolower($name)), [
|
|
||||||
'data' => $widget->getData($options),
|
'data' => $widget->getData($options),
|
||||||
'options' => $widget->getOptions($options),
|
'options' => $widget->getOptions($options),
|
||||||
'title' => $widget->getTitle(),
|
'title' => $widget->getTitle(),
|
||||||
|
|||||||
@@ -11,4 +11,10 @@ namespace App\Widget\Type;
|
|||||||
|
|
||||||
class SimpleWidget extends AbstractWidgetType
|
class SimpleWidget extends AbstractWidgetType
|
||||||
{
|
{
|
||||||
|
public function getTemplateName(): string
|
||||||
|
{
|
||||||
|
$name = (new \ReflectionClass($this))->getShortName();
|
||||||
|
|
||||||
|
return sprintf('widget/widget-%s.html.twig', strtolower($name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ use App\Widget\Type\SimpleWidget;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers \App\Widget\Type\Counter
|
* @covers \App\Widget\Type\Counter
|
||||||
|
* @covers \App\Widget\Type\SimpleWidget
|
||||||
*/
|
*/
|
||||||
class CounterTest extends AbstractWidgetTypeTest
|
class CounterTest extends AbstractWidgetTypeTest
|
||||||
{
|
{
|
||||||
@@ -33,4 +34,10 @@ class CounterTest extends AbstractWidgetTypeTest
|
|||||||
$sut = $this->createSut();
|
$sut = $this->createSut();
|
||||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testTemplateName()
|
||||||
|
{
|
||||||
|
$sut = new Counter();
|
||||||
|
self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ use App\Widget\Type\SimpleWidget;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers \App\Widget\Type\More
|
* @covers \App\Widget\Type\More
|
||||||
|
* @covers \App\Widget\Type\SimpleWidget
|
||||||
*/
|
*/
|
||||||
class MoreTest extends AbstractWidgetTypeTest
|
class MoreTest extends AbstractWidgetTypeTest
|
||||||
{
|
{
|
||||||
@@ -33,4 +34,10 @@ class MoreTest extends AbstractWidgetTypeTest
|
|||||||
$sut = $this->createSut();
|
$sut = $this->createSut();
|
||||||
self::assertInstanceOf(SimpleWidget::class, $sut);
|
self::assertInstanceOf(SimpleWidget::class, $sut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testTemplateName()
|
||||||
|
{
|
||||||
|
$sut = new More();
|
||||||
|
self::assertEquals('widget/widget-more.html.twig', $sut->getTemplateName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user