Php Symfony 2.1@Template annotation引发500个内部服务器错误

Php Symfony 2.1@Template annotation引发500个内部服务器错误,php,templates,annotations,symfony-2.1,Php,Templates,Annotations,Symfony 2.1,我正在使用PHP5.4.7开发最新版本的Symfony2.1.4的一个新项目 我浏览了自述文件,通过了app/check.php和配置,Acme演示运行良好,每个页面都经过了测试 然后,我添加了我自己的包,编辑了app/appkernel.php,以及app/routing.yml,因此它从我的包中加载了我自己的routing.yml,并使用 return $this->render('MyBundle:Setup:index.html.twig'); 页面按预期显示 然后我将其更改为使

我正在使用PHP5.4.7开发最新版本的Symfony2.1.4的一个新项目

我浏览了自述文件,通过了
app/check.php
和配置,Acme演示运行良好,每个页面都经过了测试

然后,我添加了我自己的包,编辑了
app/appkernel.php
,以及
app/routing.yml
,因此它从我的包中加载了我自己的
routing.yml
,并使用

return $this->render('MyBundle:Setup:index.html.twig');
页面按预期显示

然后我将其更改为使用注释,因此控制器文件变为

// ...
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

// ...

class SetupController extends Controller
{
    /**
     * @Route("/", name="_setup")
     * @Template
     */
    public function indexAction(){
        // This method is totally empty.

        // Uncommenting the following line actually works, but I want to stick with
        // annotations if possible

        // return $this->render('MyBundle:Setup:index.html.twig');
    }
}
_setup:
    resource: "@MyBundle/Controller/SetupController.php"
    type:     annotation
而路由文件就变成了

// ...
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

// ...

class SetupController extends Controller
{
    /**
     * @Route("/", name="_setup")
     * @Template
     */
    public function indexAction(){
        // This method is totally empty.

        // Uncommenting the following line actually works, but I want to stick with
        // annotations if possible

        // return $this->render('MyBundle:Setup:index.html.twig');
    }
}
_setup:
    resource: "@MyBundle/Controller/SetupController.php"
    type:     annotation
现在,页面抛出500内部服务器错误(LogicException),并显示以下消息:

The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?
我尝试将
$this->render(“…”)
行添加到
indexAction()
,页面呈现,但没有出现此错误

Acme演示仍然运行得很好。我尝试使用
@Template('MyBundle:Setup:index.html.twig')
@Template()
,而不是
@Template
,同样的错误仍然发生。模板文件放置在正确的位置,因为
$this->render()方法发现它没有问题

我检查并确保没有在任何配置文件中关闭注释。我还尝试清除缓存,包括dev和prod缓存,但仍然没有成功

我可以使用
$this->render()
作为解决方法,但我想知道Symfony不允许我使用的注释有什么问题


提前感谢您的帮助或建议!如果我能提供任何其他信息,请告诉我。

您应该始终返回
响应
-这是
$this-render(someTemplate)
实际做的事情。如果您不想退回任何东西:

return new Response;
symfony会很高兴的


[
Response
放在
Symfony\Component\HttpFoundation
包中供您参考。]

使用
@Template
注释时,您需要返回将传递到模板的变量的
数组()


如果您没有变量,只需返回数组()

,谢谢您的回复!但是,我正在跟踪注释from的用法,我没有看到它们返回响应对象。据我所知,当我们使用@Template注释时,返回的数组是传递到模板中的参数,而不是HTTP响应。如果我错了,请纠正我!这可能取决于控制器操作的主体,或者取决于模板文件的缺失[我现在不记得默认模板文件的约定]-请发布完整的方法以防万一!实际上,indexAction()的主体是空的,就像Symfony文档中的最后三个示例一样。我编辑了代码以提供有关控制器文件的更多详细信息,感谢您的建议!谢谢成功了!事实上,我已经试过了,但没有成功,我想我一定是忘记了在测试之前清除缓存。现在一切都很好!