我有一個接受引數的 Laravel 中間件。該中間件在組級別分配給一組路由。我需要專門為該組內的單個路由覆寫引數。我該怎么做呢?
如果我添加->middleware('my_middleware:new_param')到特定路由,那么中間件將執行兩次:第一次使用組級別的默認引數,第二次使用新引數。
如果我添加,->withoutMiddleware('my_middleware')->middleware('my_middleware:new_param')則中間件根本不會執行。
例子
\App\Http\內核:
class Kernel extends HttpKernel {
protected $middleware = [
...
];
protected $middlewareGroups = [
'my_middleware_group' => [
'my_middlware:default_param',
...,
],
];
protected $routeMiddleware = [
'my_middlware' => \App\Http\Middleware\MyMiddleware::class,
...
];
}
\App\Providers\RouteServiceProvider:
class RouteServiceProvider extends ServiceProvider {
public function boot() {
$this->routes(function () {
Route::middleware('my_middleware_group')
->group(base_path('routes/my_routing_group.php'));
});
}
}
路線/my_routing_group.php:
// Neither the following line
Route::get('/my-url', [MyController::class, 'getSomething'])->middleware(['my_middlware:new_param']);
// nor this line works as expected
Route::get('/my-url', [MyController::class, 'getSomething'])->withoutMiddleware('my_middleware')->middleware(['my_middlware:new_param']);
uj5u.com熱心網友回復:
答案很簡單:還必須重復->withoutMiddleware不希望使用的確切引數。這意味著
路線/my_routing_group.php:
Route::get('/my-url', [MyController::class, 'getSomething'])
->withoutMiddleware(['my_middlware:default_param']) // the original parameters must be repeated, too
->middleware(['my_middlware:new_param']);
訣竅。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395347.html
標籤:php 拉拉维尔 网址路由 laravel-8 laravel 中间件
