2012-03-27 46 views
1

我有以下的Symfony控制器:使用约定优于配置中的Symfony2控制器/视图

/** 
* 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基于我的控制器和操作找出使用哪个模板,如果是这样,怎么办?

回答

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

PS不要将Symfony 1.x与Symfony 2.x比较。这是两种不同的框架。 Symfony 2倾向于通过魔法来表达。

1

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

相关问题