2016-08-09 30 views
2

Ich habe (schematisch) die folgende Situation:Laravel ausschließt Route in verschachtelter Middleware Gruppe

MiddlewareGroup1{ 

    MiddlewareGroup2{ 

     Route::resource(...); 
     ... 
     Route::post('some-ajax-request', '[email protected]'); 

    } 

    OtherNestedMiddlewareGroups{ 
     ... 
    } 

} 

Ich habe das Problem, dass ich MiddlewareGroup2 für die Ajax-Route anwenden möge, aber nicht MiddlewareGroup1. Wie kann ich MiddlewareGroup1 nicht anwenden, aber MiddlewareGroup2 behalten?

+0

Sie möchten keine andere MiddlewareGroup2 außerhalb von MiddlewareGroup1 erstellen? –

+0

@ rap-2-h eher nicht, es ist für eine große Anwendung mit vielen Routen und ich definiere nicht mehrere der gleichen Gruppen, um einen gut strukturierten Überblick in der Routes-Datei zu behalten, wenn das Sinn macht – Markinson

+0

Ok I verstehen, aber IMO it * macht mehr Sinn * MiddlewareGroup2 aus MiddlewareGroup1 zu haben, wenn es nicht gilt. Wie auch immer, es ist nur eine Meinung! –

Antwort

2

Ich denke, es gibt hier keine integrierte Lösung. Sie können diese Route außerhalb MiddlewareGroup1 setzen oder Sie könnten in MiddlewareGroup1, wie aktuelle URL überprüfen: Diese wird MiddlewareGroup1 Middleware für definierte URL (s)

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

überspringen.

Wenn Sie viele ähnliche Ajax-Routen haben, könnten Sie ähnliche URLs für sie ('Ajax-Add-Sachen', 'Ajax-do-some-Sachen' usw.) verwenden und überprüfen Sie sie wie folgt aus:

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

Gute Antwort, danke! Um zusätzliche Routen auszuschließen, definiere ich ein Array mit ausgeschlossenen Routen in der Middleware und Foreach +, um sie zu überprüfen, ob sie gültig ist. – Markinson

Verwandte Themen