Laravel: замена параметров промежуточного программного обеспечения во вложенных маршрутах

У меня есть группа маршрутов, которая применяет промежуточное программное обеспечение ко всем вложенным маршрутам. Я передаю ему параметр.

Однако внутри группы у меня есть конкретный маршрут, для которого я хочу передать другой параметр. Что я делаю следующим образом:

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'), но не получилось

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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');


});

Другие вопросы по теме