Silex在匹配回调内触发404错误

时间:2017-03-06 15:11:44

标签: php symfony exception http-status-code-404 silex

我有这个代码,它匹配来自json文件的一些路由:

    $this->app->match($routePattern, function(Request $request, \Silex\Application $app) use($routeIdent, $templateConfig) {

          //now here i need to check some conditions and, 
          //in case, trigger 404 error, but without redirect!!!!

          if($templateConfig['test'] === true){
             //----> TRIGGER 404
          }

    });

有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了你的问题。如果你想在if中实现404处理?一种解决方案是在那里返回响应。例如。如果您使用Symfony \ Component \ HttpFoundation \ Response对象并内置twig服务,您可以这样做:

use Symfony\Component\HttpFoundation\Response    

$this->app->match($routePattern, function(Request $request, \Silex\Application $app) use($routeIdent, $templateConfig) {

    if($templateConfig['test'] === true){
         //----> TRIGGER 404
        return new Response( $app['twig']->render('404.html.twig'), 404); 
    }
})

我希望这就是你要找的东西。

答案 1 :(得分:1)

您可以使用abort()

return $app->abort(404);

返回不是必要的,因为它抛出,我只是喜欢用它作为一种方式来表示它作为一个退出点。