带有通配符的Silex路由抛出错误500


Silex Routing with wildcard throws error 500

我刚刚注意到,当有一个错误的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);
}
相关文章: