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

Jas*_*ett 1 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');
}
Run Code Online (Sandbox Code Playgroud)

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

我不得不想象我错过了一些东西.似乎他们不会在Symfony 1.x中应用约定优于配置概念,然后在Symfony> = 2.0中放弃它.

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

Jak*_*las 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();
}
Run Code Online (Sandbox Code Playgroud)

阅读文档中有关@Template注释的更多信息:http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/view.html

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