Yes, i agree with you.

среда, 29 августа 2012 г., 0:18:29 UTC+4 пользователь Anton Serdyuk написал:
>
> 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 
> <lubom...@gmail.com<javascript:>> 
> 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 <liu...@gmail.com> wrote: 
> >> > mmmm 
> >> > Are you sure you really need in the controller? 
> >> > 
> >> > 
> >> > 
> >> > 
> >> > On Tue, Aug 28, 2012 at 9:55 AM, Ivan Lubomir <lubom...@gmail.com> 
> >> > 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 symfon...@googlegroups.com 
> >> >> To unsubscribe from this group, send email to 
> >> >> symfony-devs...@googlegroups.com 
> >> >> 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 symfon...@googlegroups.com 
> >> > To unsubscribe from this group, send email to 
> >> > symfony-devs...@googlegroups.com 
> >> > 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 
> > symfon...@googlegroups.com<javascript:> 
> > To unsubscribe from this group, send email to 
> > symfony-devs...@googlegroups.com <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 symfony-devs@googlegroups.com
To unsubscribe from this group, send email to
symfony-devs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to