我刚注意到当网址错误时:http://example.com/articles/qslkdqm;控制器抛出错误500而不是错误404。
因此,当控制器检查slug以检索数据时,我尝试手动更改StatusCode:
控制器
$article = $app['dao.article']->getArticle($slug);
if (!$article) {
$response = new Response();
$response->setStatusCode(404);
}
但它不起作用,仍然会引发错误500.
这是正常的吗?我们完全同意这应该是404?
据我所知,它会抛出错误500,因为某些变量未定义(即文章的标题)。这是否意味着在每个变量调用中,我只检查它的存在,如:
{% if title is defined %}
...
{% endif %}
感谢您的回答。
答案 0 :(得分:1)
您可以通过以下方式停止404错误:
if (!$article) {
$app->abort(404);
}
或
if (!$article) {
throw new \Symfony\Component\HttpKernel\Exception\HttpException(404);
}