Yes, i thought i can use it instead if event-engine, but i see it's not
good way.
But you can get tagged services by tag in Controller:
class SomeController extends Controller {
>
> protected $containerBuilder;
>
> /**
> * @Route("/someurl/{name}")
> * Template()
> */
> public function indexAction($name) {
> $tag = 'some.tag';
>
> $controller_list = $this->container->getServiceIds();
> $this->containerBuilder = $this->getContainerBuilder();
>
> $tags = array();
>
> foreach ($controller_list as $id) {
>
> $definition = $this->resolveServiceDefinition($id);
>
> if ($definition instanceof Definition && in_array($tag,
> array_keys($definition->getTags()))) {
> $tags[] = $id;
> }
> }
>
return array();
> }
>
> protected function resolveServiceDefinition($serviceId) {
> if ($this->containerBuilder->hasDefinition($serviceId)) {
> return $this->containerBuilder->getDefinition($serviceId);
> }
>
> // Some service IDs don't have a Definition, they're simply an
> Alias
> if ($this->containerBuilder->hasAlias($serviceId)) {
> return $this->containerBuilder->getAlias($serviceId);
> }
>
> // the service has been injected in some special way, just return
> the service
> return $this->containerBuilder->get($serviceId);
> }
>
> protected function getContainerBuilder() {
> if (!is_file($cachedFile =
> $this->container->getParameter('debug.container.dump'))) {
> throw new \LogicException(sprintf('Debug information about the
> container could not be found. Please clear the cache and try again.'));
> }
>
> $container = new ContainerBuilder();
>
> $loader = new XmlFileLoader($container, new FileLocator());
> $loader->load($cachedFile);
>
> return $container;
> }
>
> }
>
>
вторник, 28 августа 2012 г., 15:38:02 UTC+4 пользователь Anton Serdyuk
написал:
>
> Hi!
>
> AFAIK, you cannot do it in Controller, because when DI container
> compiled, there is no more tag information in it.
> You can find tagged services while container is compiling (in custom
> compiler pass) and inject them all to some service like twig
> extensions injected:
>
> https://github.com/symfony/TwigBundle/blob/master/TwigBundle.php#L30
>
> https://github.com/symfony/TwigBundle/blob/master/DependencyInjection/Compiler/TwigEnvironmentPass.php
>
>
> On Tue, Aug 28, 2012 at 11:42 AM, liuggio <[email protected] <javascript:>>
> wrote:
> > mmmm
> > Are you sure you really need in the controller?
> >
> >
> >
> >
> > On Tue, Aug 28, 2012 at 9:55 AM, Ivan Lubomir
> > <[email protected]<javascript:>>
> wrote:
> >>
> >> Hello!
> >>
> >> I should get list of services by tag in Controller. How to do it?
> >>
> >> --
> >> If you want to report a vulnerability issue on symfony, please send it
> to
> >> security at symfony-project.com
> >>
> >> You received this message because you are subscribed to the Google
> >> Groups "symfony developers" group.
> >> To post to this group, send email to
> >> [email protected]<javascript:>
> >> To unsubscribe from this group, send email to
> >> [email protected] <javascript:>
> >> For more options, visit this group at
> >> http://groups.google.com/group/symfony-devs?hl=en
> >
> >
> >
> >
> > --
> > __________________liuggio_________________________________
> >
> > __/|_ We reject kings, presidents and voting.
> > /o ) \/ We believe in rough consensus
> > )__ v _/\ and running code (I.E.T.F. credo)
> > ______________________________________________________________
> >
> > --
> > If you want to report a vulnerability issue on symfony, please send it
> to
> > security at symfony-project.com
> >
> > You received this message because you are subscribed to the Google
> > Groups "symfony developers" group.
> > To post to this group, send email to
> > [email protected]<javascript:>
> > To unsubscribe from this group, send email to
> > [email protected] <javascript:>
> > For more options, visit this group at
> > http://groups.google.com/group/symfony-devs?hl=en
>
--
If you want to report a vulnerability issue on symfony, please send it to
security at symfony-project.com
You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en