Запустите промежуточное ПО при условии - Laravel - PullRequest
0 голосов
/ 11 октября 2018

У меня есть промежуточное ПО, которое проверяет определенный параметр заголовка в запросе и отправляет ответ на основании этого.

Но у меня проблема в том, что я не хочу, чтобы это промежуточное ПО всегда запускалось нафункция в моем контроллере.Я хочу, чтобы промежуточное программное обеспечение запускалось, если условие выполнялось в функции (например: функция хранилища).

Как мне этого добиться?

1 Ответ

0 голосов
/ 11 октября 2018

Промежуточное программное обеспечение вызывается до нажатия на действие контроллера.Таким образом, невозможно выполнить промежуточное программное обеспечение на основе условия внутри действия.Однако возможно условное выполнение промежуточного программного обеспечения:

Через запрос

Вы можете добавить условие к объекту запроса (скрытое поле или подобное)

public function handle($request, Closure $next)
{
    // Check if the condition is present and set to true
    if ($request->has('condition') && $request->condition == true)) {
        //
    }

    // if not, call the next middleware
    return $next($request);
}

С помощью параметра

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

routs / web.php

Route::post('route', function () {
//
})->middleware('FooMiddleware:true');

FooMiddleware

public function handle($request, Closure $next, $condition)
{
    // Check if the condition is present and set to true
    if ($condition == true)) {
        //
    }

    // if not, call the next middleware
    return $next($request);
}
...