自定义 Slim Not Found 处理程序取决于路线
Custom Slim Not Found Handler depending upon route
在 Slim 中,我们可以通过将它们分配给容器来创建自定义的未找到处理程序。
这很好,但我们需要能够根据当前路由组定义自定义处理程序。因此,例如,请考虑以下路由定义:
$app->group('/api', function() use ($app) {
});
$app->group('/', function() use ($app) {
});
使用 /api
组时,我们希望 Not Found 处理程序定义如下:
$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 中根据路由组成功分配了不同的处理程序吗?
没有多个未找到处理程序的概念。它在容器中作为单一服务实现。
但是您的一个处理程序可以很好地包含逻辑。例如,本机 NotFound
处理程序为接受的内容类型执行不同的条件输出。
您的单个处理程序可以轻松检查 $request
中的任何必要上下文并相应地修改 return。
在 Slim 中,我们可以通过将它们分配给容器来创建自定义的未找到处理程序。
这很好,但我们需要能够根据当前路由组定义自定义处理程序。因此,例如,请考虑以下路由定义:
$app->group('/api', function() use ($app) {
});
$app->group('/', function() use ($app) {
});
使用 /api
组时,我们希望 Not Found 处理程序定义如下:
$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 中根据路由组成功分配了不同的处理程序吗?
没有多个未找到处理程序的概念。它在容器中作为单一服务实现。
但是您的一个处理程序可以很好地包含逻辑。例如,本机 NotFound
处理程序为接受的内容类型执行不同的条件输出。
您的单个处理程序可以轻松检查 $request
中的任何必要上下文并相应地修改 return。