我需要从两个地方将变量传递给模板:
普通控制器的方法,例如:
class ProductsController extends Controller
{
/**
* Products
* @Route("", name="products")
* @Template
*/
public function productsAction()
{
return array('var1' => 'sth', 'var2' => 'etc);
}
Bootstrap控制器(由 kernel.controller 事件触发的侦听器)
class BeforeControllerListener
{
public function onKernelController(FilterControllerEvent $event)
{
// @some_vars
}
如何从监听器向模板注入@some_vars
?两种方法中的Vars都不是静态的,因此全局变量不是答案。
答案 0 :(得分:2)
在onKernelController()
执行:
$event->getRequest()->attributes->add(array('someVar' => 'someValue'));
在productsAction()
执行:
$request->attributes->get('someVar');
干杯;)