Laravel排除嵌套中间件组中的路由

时间:2016-08-09 14:34:15

标签: php laravel middleware

我(示意性地)有以下情况:

MiddlewareGroup1{

    MiddlewareGroup2{

        Route::resource(...);
        ...
        Route::post('some-ajax-request', 'SomeController@action');

    }

    OtherNestedMiddlewareGroups{
        ...
    }

}

我遇到的问题是我希望MiddlewareGroup2申请ajax路由,但不是MiddlewareGroup1。如何使MiddlewareGroup1不适用,但保留MiddlewareGroup2?

1 个答案:

答案 0 :(得分:2)

我想这里没有内置的解决方案。您可以将此路线放在MiddlewareGroup1之外,也可以在MiddlewareGroup1中查看当前请求网址,例如:

....
if ($request->is('some-ajax-request')) {
    return $next($request);
}
....

这将跳过已定义URL的MiddlewareGroup1中间件。

如果你有许多类似的ajax路线,你可以使用类似的URL('ajax-add-stuff','ajax-do-some-stuff'等)并像这样检查它们:

if ($request->is('ajax*')) { .... }