0

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

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

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

    class BeforeControllerListener
    {
        public function onKernelController(FilterControllerEvent $event)
        {
            // @some_vars
        }
    

如何@some_vars从侦听器注入模板?两种方法中的变量都不是静态的,因此全局变量不是答案。

4

1 回答 1

2

在你onKernelController()做的:

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

在你productsAction()做的:

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

干杯;)

于 2012-07-30T20:06:46.737 回答