我正在使用 PHP 5.4.7 的最新版本 Symfony 2.1.4 开发一个新项目。
我浏览了自述文件,通过了app/check.php
配置,Acme Demo 运行良好,每个页面都经过测试。
然后,我添加了我自己的包,编辑了app/AppKernl.php
,然后app/routing.yml
它从我的包中加载了我自己的包,并在routing.yml
我的包中测试了indexAction()
SetupController
return $this->render('MyBundle:Setup:index.html.twig');
该页面按预期显示。
然后我改成使用注解,于是Controller文件就变成了
// ...
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 Internal Server Error (LogicException),并带有以下消息:
The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?
我尝试将$this->render('...')
行添加到indexAction()
页面呈现,但没有它只是这个 500 错误。
Acme Demo 仍然运行良好。我尝试使用@Template('MyBundle:Setup:index.html.twig')
and@Template()
而不是@Template
,仍然出现相同的错误。模板文件放置在正确的位置,因为该$this->render()
方法发现它没有问题。
我检查并确保我没有关闭任何配置文件中的注释。我还尝试清除缓存,包括开发和生产缓存,但仍然没有运气。
我可以将$this->render()
其用作解决方法,但我想知道 Symfony 不允许我使用它的注释有什么问题。
提前感谢您的任何帮助或建议!如果有任何其他信息可以提供帮助,请告诉我。