我刚刚注意到,当有一个错误的URL,如:http://example.com/articles/qslkdqm;控制器抛出错误500,而不是错误404。
所以,当控制器检查段塞以检索数据时,我试图手动更改StatusCode:
控制器$article = $app['dao.article']->getArticle($slug);
if (!$article) {
$response = new Response();
$response->setStatusCode(404);
}
但是它不工作,仍然抛出错误500。
正常吗?我们完全同意这应该是一个404?
我知道它抛出了一个错误500,因为一些变量没有定义(即。文章的标题)。这是否意味着在每个变量调用中,我只需检查它的存在,就像:
{% if title is defined %}
...
{% endif %}
?
谢谢你的回答。
如果出现404错误,可以通过以下方式停止应用程序:
if (!$article) {
$app->abort(404);
}
或
if (!$article) {
throw new 'Symfony'Component'HttpKernel'Exception'HttpException(404);
}