2016-08-09 4 views
2

내가 (모식) 다음과 같은 상황이 있습니다Laravel 중첩 된 미들웨어 그룹의 경로를 제외

MiddlewareGroup1{ 

    MiddlewareGroup2{ 

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

    } 

    OtherNestedMiddlewareGroups{ 
     ... 
    } 

} 

내가 MiddlewareGroup1을 내가 MiddlewareGroup2가 아약스 경로에 대해 적용 할 문제가 아니라. MiddlewareGroup1을 적용하지 않고 MiddlewareGroup2를 유지하려면 어떻게합니까?

+0

MiddlewareGroup1 외부에 다른 MiddlewareGroup2를 만들고 싶지 않으십니까? –

+0

@ rap-2-h 오히려 그렇지 않다. 라우트가 많은 큰 애플리케이션을위한 것이고 라우트 파일에서 구조화 된 개요를 유지하기 위해 동일한 그룹을 여러 개 정의하지 않는다. 이해가된다면 – Markinson

+0

Ok I 이해하지만 IMO가 적용되지 않으면 MiddlewareGroup2에서 MiddlewareGroup1을 제거하는 것이 더 의미가 있습니다. 어쨌든, 그것은 단지 의견입니다! –

답변

2

여기 솔루션이 내장되어 있지 않습니다. 당신은 MiddlewareGroup1 외부에서이 경로를 넣을 수 있습니다 또는 당신처럼, MiddlewareGroup1에서 현재 요청 URL을 확인할 수 있습니다 : 정의 된 URL (들)에 대한 MiddlewareGroup1 미들웨어를 건너 뜁니다

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

이. 당신은 많은 유사한 아약스 노선이있는 경우

, 당신은 그들을 위해 유사한 URL을 사용할 수 있습니다 ('아약스 --재료 추가', '아약스-DO-일부-물건'등)와 같이이를 확인 :

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

감사합니다! 또한 더 많은 경로를 제외하기 위해 미들웨어에서 제외 된 경로가있는 배열을 정의하고 foreach + ifelse를 사용하여 유효한지 확인합니다. – Markinson

관련 문제