我厌倦了在Symfony2的每个动作结束时写这个:
return $this->render('Project:Bundle:view.twig', array(
'foo' => 1,
'bar' => 2
));
所以我试图在动作运行后挂钩请求生命周期,以便为自己节省一些打字。我希望能够在我的控制器中执行与此类似的操作:
$this->params = array(
'foo' => 1,
'bar' => 2
);
然后,侦听器会将参数传递给渲染器,并使用操作名称自动检测模板。我意识到我需要使用事件监听器来实现这一点,但我似乎无法在正确的时间进入生命周期......
仅供参考 - 我有一个Zend背景,这是我第一次使用Symfony2时(obv)...如果我以完全错误的方式接近这个问题,请大喊!
答案 0 :(得分: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
)在默认位置查找视图。