2011-11-18 175 views
3

我很無聊在Symfony2的每一個動作結束寫這個的:如何將控制器變量傳遞給Symfony2中的EventListener?

return $this->render('Project:Bundle:view.twig', array(
            'foo' => 1, 
            'bar' => 2 
           )); 

所以我試圖鉤到請求生命週期的動作已運行剛過,爲了自己節省一些打字。我希望能夠做一些類似的在我的控制器來代替:然後

$this->params = array(
    'foo' => 1, 
    'bar' => 2 
); 

一位聽衆會通過PARAMS到渲染,並自動檢測使用的動作名稱的模板。我知道我需要使用事件偵聽器來實現這一點,但我似乎無法掛接到在正確的時間生命週期...

  • kernel.controller是好的,因爲我可以在得到控制器,但它的行動已經運行之前,所以$ this-> params不會被設置
  • kernel.response是在行動已經運行後,但我似乎無法得到控制器本身從這裏

僅供參考 - 我有一個Zend背景,這是(obv)我第一次使用Sy mfony2 ...如果我用完全錯誤的方式來解決這個問題,大喊!

回答

2

如果您使用的SensioFrameworkExtraBundle,您可以使用@Template()註釋和返回數組:

<?php 

namespace Acme\FooBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

class BarController 
{ 
    /** 
    * @Template() 
    */ 
    public function bazAction() 
    { 
     return array(
      'some_value' => $someValue; 
     ); 
    } 
} 

的註解告訴它來尋找基於捆綁,控制器和行動在默認位置視圖名稱(在這種情況下,AcmeFooBundle:Bar:baz.html.twig)。

+0

那麼,如果那不是我所追求的!謝謝! – Mathew

相關問題