在Symfony2控制器/视图中使用约定优于配置

时间:2012-03-27 20:00:16

标签: symfony

我有以下Symfony控制器:

/** 
 * Says thanks to the user for signing up.
 *
 * @Route("/thanks", name="user")
 * @Template()
 */
public function thanksAction()
{   
  return $this->render('VNNPressboxBundle:User:thanks.html.twig');
}

如果我没有包含return语句,则会收到错误消息,说控制器必须返回响应。有趣的是,我必须手动指定我的动作需要使用哪个模板,考虑到Symfony可以根据我的控制器和动作轻松解决这个问题。再加上Symfony 1.x如何运作。

我必须想象我错过了什么。看起来他们不会在Symfony 1.x中应用约定优于配置概念,然后在Symfony> = 2.0中放弃它。

是否有可能告诉Symfony根据我的控制器和操作找出要使用的模板,如果是,如何?

2 个答案:

答案 0 :(得分:6)

你必须归还一些东西。您正在使用@Template注释,因此您不必呈现响应,但仍需返回模板的参数数组(在您的情况下为空):

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

/** 
 * Says thanks to the user for signing up.
 *
 * @Route("/thanks", name="user")
 * @Template()
 */
public function thanksAction()
{   
  return array();
}

详细了解文档中的@Template注释:http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/view.html

P.S。不要将symfony 1.x与Symfony 2.x进行比较。这是两个不同的框架。 Symfony 2倾向于明确超越魔法。

答案 1 :(得分:1)

返回一个数组。在你的情况下,它将是一个空数组,但通常你会用你想要传递给模板的变量填充它。