来自几个类的Symfony2模板变量

时间:2012-07-30 16:00:03

标签: php events symfony listener

我需要从两个地方将变量传递给模板:

  1. 普通控制器的方法,例如:

    class ProductsController extends Controller
    {
        /**
         * Products
         * @Route("", name="products")
         * @Template
         */
        public function productsAction()
        {
            return array('var1' => 'sth', 'var2' => 'etc);
        }
    
  2. Bootstrap控制器(由 kernel.controller 事件触发的侦听器)

    class BeforeControllerListener
    {
        public function onKernelController(FilterControllerEvent $event)
        {
            // @some_vars
        }
    
  3. 如何从监听器向模板注入@some_vars?两种方法中的Vars都不是静态的,因此全局变量不是答案。

1 个答案:

答案 0 :(得分:2)

onKernelController()执行:

$event->getRequest()->attributes->add(array('someVar' => 'someValue'));

productsAction()执行:

$request->attributes->get('someVar');

干杯;)