我有检查在请求特定的报头参数并发送回基于该响应的中间件。
但我的问题是,我不希望这种中间件总是在我的控制器的功能运行。 我想中间件上运行。如果条件的功能得到真正的(例如:存储功能)。
我怎样才能做到这一点?
我有检查在请求特定的报头参数并发送回基于该响应的中间件。
但我的问题是,我不希望这种中间件总是在我的控制器的功能运行。 我想中间件上运行。如果条件的功能得到真正的(例如:存储功能)。
我怎样才能做到这一点?
中间件撞上控制器操作之前调用。 因此,它无法执行基于动作的内部条件的中间件。 但是,它是可能的中间件的条件执行:
您可以将条件添加到请求对象(隐藏字段或类似)
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);
}
将参数传递到中间件,你必须将其设置在路由定义。 定义路由和追加一个:
与所述条件的(一个布尔在本例中)的值到中间件的名称。
路线/ 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);
}