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\WidgetInterface;
|
||||
use ReflectionClass;
|
||||
|
||||
class SimpleWidgetRenderer extends AbstractTwigRenderer
|
||||
{
|
||||
@@ -20,11 +19,18 @@ class SimpleWidgetRenderer extends AbstractTwigRenderer
|
||||
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
|
||||
{
|
||||
$name = (new ReflectionClass($widget))->getShortName();
|
||||
|
||||
return $this->renderTemplate(sprintf('widget/widget-%s.html.twig', strtolower($name)), [
|
||||
return $this->renderTemplate($widget->getTemplateName(), [
|
||||
'data' => $widget->getData($options),
|
||||
'options' => $widget->getOptions($options),
|
||||
'title' => $widget->getTitle(),
|
||||
|
||||
@@ -11,4 +11,10 @@ namespace App\Widget\Type;
|
||||
|
||||
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\SimpleWidget
|
||||
*/
|
||||
class CounterTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
@@ -33,4 +34,10 @@ class CounterTest extends AbstractWidgetTypeTest
|
||||
$sut = $this->createSut();
|
||||
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\SimpleWidget
|
||||
*/
|
||||
class MoreTest extends AbstractWidgetTypeTest
|
||||
{
|
||||
@@ -33,4 +34,10 @@ class MoreTest extends AbstractWidgetTypeTest
|
||||
$sut = $this->createSut();
|
||||
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