自定义Slim Not Found处理程序(取决于路由)

时间:2019-02-21 15:52:01

标签: php slim

在Slim中,我们可以通过将自定义的Not Found处理程序分配给Container来创建它们。

这很好,但是我们需要能够基于当前路由组定义自定义处理程序。因此,例如,请考虑以下路线定义:

$app->group('/api', function() use ($app) {

});

$app->group('/', function() use ($app) {

});

在使用/api组时,我们希望按以下方式定义“未找到”处理程序:

$container['notFoundHandler'] = function ($c)
{
    return function( $request, $response ) use ( $c )
    {
        return $response->withStatus(404)
                        ->withJSON([
                            'statusCode'  => 404,
                            'errorCode'   => 1001,
                            'description' => $c->get('errors')->get( 1001 ),
                            'timestamp'   => date('c')
                        ]);
    };
};

但是,当使用基本路由(/)时,我们想使用其他HTML处理程序。是否有人根据Slim 3中的路由组成功分配了不同的处理程序?

1 个答案:

答案 0 :(得分:1)

没有多个找不到处理程序的概念。它是在容器中作为单一服务实现的。

但是您的一个处理程序可以包含逻辑就可以了。例如,本机NotFound处理程序会对接受的内容类型执行各种条件输出。

您的单个​​处理程序可以轻松检查$request中是否有任何必要的上下文,并相应地修改return。