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

Laravel exclude route in nested Middleware group

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

MiddlewareGroup1{

    MiddlewareGroup2{

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

    }

    OtherNestedMiddlewareGroups{
        ...
    }

}

我有一个问题,我希望 MiddlewareGroup2 申请 ajax 路由,而不是 MiddlewareGroup1。如何让 MiddlewareGroup1 不适用,但保留 MiddlewareGroup2?

我想这里没有内置解决方案。您可以将此路由放在 MiddlewareGroup1 之外,或者您可以在 MiddlewareGroup1 中检查当前请求 url,例如:

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

这将跳过定义的 URL(s) 的 MiddlewareGroup1 中间件。

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

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