Промежуточное программное обеспечение вызывается до нажатия на действие контроллера.Таким образом, невозможно выполнить промежуточное программное обеспечение на основе условия внутри действия.Однако возможно условное выполнение промежуточного программного обеспечения:
Через запрос
Вы можете добавить условие к объекту запроса (скрытое поле или подобное)
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);
}