带通配符的 Silex 路由抛出错误 500
Silex Routing with wildcard throws error 500
我刚刚注意到,当 URL 出现错误时,例如: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 %}
?
感谢您的回答。
您可以通过这种方式停止出现 404 错误的应用程序:
if (!$article) {
$app->abort(404);
}
或
if (!$article) {
throw new \Symfony\Component\HttpKernel\Exception\HttpException(404);
}
我刚刚注意到,当 URL 出现错误时,例如: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 %}
?
感谢您的回答。
您可以通过这种方式停止出现 404 错误的应用程序:
if (!$article) {
$app->abort(404);
}
或
if (!$article) {
throw new \Symfony\Component\HttpKernel\Exception\HttpException(404);
}