mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 21:34:25 +00:00
ChillEntityRenderExtension: change the way the service in constructed by using tags
This commit is contained in:
parent
50410d190f
commit
81b7b49170
@ -70,7 +70,6 @@ class ChillMainBundle extends Bundle
|
|||||||
$container->addCompilerPass(new MenuCompilerPass());
|
$container->addCompilerPass(new MenuCompilerPass());
|
||||||
$container->addCompilerPass(new ACLFlagsCompilerPass());
|
$container->addCompilerPass(new ACLFlagsCompilerPass());
|
||||||
$container->addCompilerPass(new GroupingCenterCompilerPass());
|
$container->addCompilerPass(new GroupingCenterCompilerPass());
|
||||||
$container->addCompilerPass(new RenderEntityCompilerPass());
|
|
||||||
$container->addCompilerPass(new CRUDControllerCompilerPass());
|
$container->addCompilerPass(new CRUDControllerCompilerPass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,21 +25,17 @@ class ChillEntityRenderExtension extends AbstractExtension
|
|||||||
protected $defaultRender;
|
protected $defaultRender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var ChillEntityRenderInterface
|
* @var iterable|ChillEntityRenderInterface[]
|
||||||
*/
|
*/
|
||||||
protected $renders = [];
|
protected $renders = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ChillEntityRenderExtension constructor.
|
* ChillEntityRenderExtension constructor.
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct(iterable $renders)
|
||||||
{
|
{
|
||||||
$this->defaultRender = new ChillEntityRender();
|
$this->defaultRender = new ChillEntityRender();
|
||||||
}
|
$this->renders = $renders;
|
||||||
|
|
||||||
public function addRender(ChillEntityRenderInterface $render)
|
|
||||||
{
|
|
||||||
$this->renders[] = $render;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,7 +74,6 @@ class ChillEntityRenderExtension extends AbstractExtension
|
|||||||
if (null === $entity) {
|
if (null === $entity) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->getRender($entity, $options)
|
return $this->getRender($entity, $options)
|
||||||
->renderString($entity, $options);
|
->renderString($entity, $options);
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Chill\MainBundle\Templating\Entity;
|
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
use Symfony\Component\DependencyInjection\Reference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add service tagged with `chill.render_entity` to appropriate service.
|
|
||||||
*/
|
|
||||||
class CompilerPass implements CompilerPassInterface
|
|
||||||
{
|
|
||||||
public function process(ContainerBuilder $container)
|
|
||||||
{
|
|
||||||
$extension = $container->getDefinition(ChillEntityRenderExtension::class);
|
|
||||||
|
|
||||||
foreach ($container->findTaggedServiceIds('chill.render_entity') as $id => $tags) {
|
|
||||||
$extension->addMethodCall('addRender', [new Reference($id)]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -32,6 +32,8 @@ services:
|
|||||||
- { name: twig.extension }
|
- { name: twig.extension }
|
||||||
|
|
||||||
Chill\MainBundle\Templating\Entity\ChillEntityRenderExtension:
|
Chill\MainBundle\Templating\Entity\ChillEntityRenderExtension:
|
||||||
|
arguments:
|
||||||
|
$renders: !tagged_iterator chill.render_entity
|
||||||
tags:
|
tags:
|
||||||
- { name: twig.extension }
|
- { name: twig.extension }
|
||||||
|
|
||||||
|
@ -25,6 +25,9 @@ class ChillPersonBundle extends Bundle
|
|||||||
$container->getExtension('chill_main')
|
$container->getExtension('chill_main')
|
||||||
->addWidgetFactory(new PersonListWidgetFactory());
|
->addWidgetFactory(new PersonListWidgetFactory());
|
||||||
|
|
||||||
|
$container->registerForAutoconfiguration(PersonRenderInterface::class)
|
||||||
|
->addTag('chill.render_entity');
|
||||||
|
|
||||||
$container->addCompilerPass(new AccompanyingPeriodTimelineCompilerPass());
|
$container->addCompilerPass(new AccompanyingPeriodTimelineCompilerPass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user