有没有办法在Laravel中间件中获取当前路由的父路由组?
public function handle($request, Closure $next, $guard = null)
{
// here I mean
}
答案 0 :(得分:3)
您无法从路线中获取该组,尤其是您可以在其他组中嵌套组。
能够分辨当前请求属于哪个组的最简单方法是向中间件添加参数 - 有关详细信息,请参阅文档:https://laravel.com/docs/5.2/middleware#middleware-parameters
首先,在 handle()方法中声明参数:
public function handle($request, Closure $next, $group = null)
{
// your logic here
}
然后,在将中间件分配给组时,您可以将组名称作为参数传递:
Route::group(['middleware' => 'yourmiddleware:groupname'], function () {
// your routes go here
});
然后在您的中间件中,您可以根据传递的组名执行不同的操作:
if ($group === 'groupname') {
// some custom logic here
}
如果您计划为不同组执行的逻辑不同,则应考虑实施多个中间件,而不是将组名作为参数传递,以便将职责分开。