У меня есть группа маршрутов, которая применяет промежуточное программное обеспечение ко всем вложенным маршрутам. Я передаю ему параметр.
Однако внутри группы у меня есть конкретный маршрут, для которого я хочу передать другой параметр. Что я делаю следующим образом:
Route::group(['prefix' => '/' . $languagePrefix, 'middleware' => ['sessionapi', 'abtest:0']], function () {
// other routes
Route::get('/i18n', [
'as' => 'api:i18n',
])->middleware('abtest:1');
}
Но в самом промежуточном программном обеспечении handle параметр всегда равен 0, общий, даже если я посещаю маршрут с другим параметром.
Почему?
public function handle($request, \Closure $next, string $customPar = null)
{
// ...
dd($customPar); // always 0
// ...
}
Я пытался использовать ->withoutMiddleware(['abtest'])->->middleware('abtest:1'), но не получилось






Вы не можете заменить промежуточное программное обеспечение abtest:0. Потому что он был выполнен первым. Поэтому вы должны изменить структуру маршрута.
Route::group(['prefix' => '/' . $languagePrefix, 'middleware' => ['sessionapi']], function () {
Route::middleware('abtest:0')->group( function(){
// all routes using abtest:0
});
Route::get('/i18n', [
'as' => 'api:i18n',
])->middleware('abtest:1');
});