带有通配符的Silex路由引发错误500

时间:2016-10-07 13:38:50

标签: php twig silex

我刚注意到当网址错误时: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 %}

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式停止404错误:

if (!$article) {
    $app->abort(404);
}

if (!$article) {
    throw new \Symfony\Component\HttpKernel\Exception\HttpException(404);
}