0

2つの場所からテンプレートに変数を渡す必要があります。

  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 に答える