在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中的路由组成功分配了不同的处理程序?
答案 0 :(得分:1)
没有多个找不到处理程序的概念。它是在容器中作为单一服务实现的。
但是您的一个处理程序可以包含逻辑就可以了。例如,本机NotFound
处理程序会对接受的内容类型执行各种条件输出。
您的单个处理程序可以轻松检查$request
中是否有任何必要的上下文,并相应地修改return。