Hi!

This is very-very bad aproach for my point of view. You should not
create ContainerBuilder in controller (tecnically of cause you can)
because it costs a lot. It will be very slow solution compared to
twig-extension approach.

On Tue, Aug 28, 2012 at 9:10 PM, Ivan Lubomir <[email protected]> wrote:
> 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]> wrote:
>> > mmmm
>> > Are you sure you really need in the controller?
>> >
>> >
>> >
>> >
>> > On Tue, Aug 28, 2012 at 9:55 AM, Ivan Lubomir <[email protected]>
>> > 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]
>> >> 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
>> >
>> >
>> >
>> >
>> > --
>> >  __________________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]
>> > 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
>
> --
> 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

-- 
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

Reply via email to