2013-07-12 1 views
1

맞춤형보고 환경을 Laravel 4로 마이그레이션하려고합니다. 현재 200 개가 넘는 보고서 페이지가 있습니다. 조직적인 이유로, 우리는 광범위한 디렉토리 구조에 배치합니다. 보고서 디렉토리는 다음과 같습니다.laravel 4 요청을 가변 깊이 하위 디렉터리로 라우팅하는 방법

reports 
    - main1 
     - sub1 
     - deep1 
     - deep2 
     - sub2 
     - deep3 
      - deeper4 
.. etc 

가장 깊은 수준에서 전화를 걸 수있는 컨트롤러가 있습니다. /reports/main1/sub1/deep1/action과 같은 URL을 사용하고 싶습니다.

모든 보고서 요청을 올바른 컨트롤러로 보낼 경로를 어떻게 설정할 수 있습니까? 깊이를 유감스럽게도 가변적으로 복잡하게 만듭니다.

편집

우리는 단순히 우리가 ID를 통해로드 할 수 보고서 쿼리를 필요는 없지만, 각 대상 보고서의 숫자를 렌더링하는 모든 종류의 것들을 할 수있는 PHP 파일입니다, 기반 사용자 입력. 그것이 조직화 된 상태로 유지되는 이유입니다. 우리는 모든 것을 광범위한 디렉토리 구조에 집어 넣습니다. 200 개 경로를 지정하지 않고도 디렉토리 트리에서 올바른 컨트롤러로 라우팅 할 수있는 방법이 있다면 무엇을 요구하고 있습니까?

+0

'path/to/report'를'path-to-report' (하이픈으로 연결)으로 구분할 수 있습니까? 그런 다음 슬래시로 경로를 재구성하고 컨트롤러 내에서 처리 할 수 ​​있다고 생각합니다. – Sterex

답변

1

URL (디렉토리 경로)이 앱에서 어떻게 작동하는지에 대한 자세한 정보가 필요하다고 생각합니다. URL이 특정 보고서를 가리키는 것처럼 들립니다. 보고서 당 ID가 하나 뿐인 대신 보고서 식별자는 URL 경로입니까? 당신은 가변 길이의 경로와 일치하는 정규 표현식을 사용할 수 있습니다

:

여기에 대한 답변에서 자상입니다.

reports/some/much_deeper/path-7 

컨트롤러 방법 report($path)가에가 $path 변수를 사용할 수있을 것이다 : 그 정규식과 같은 URL을 일치

Route::get('reports/{path}', '[email protected]') 
    ->where('path', '[A-Za-z0-9\/\-\_]'); 

.

+0

감사합니다. 예, 현재 200 개의 "메인"PHP 파일이 200 개의 컨트롤러로 전환되어야합니다. 큰 보고서 컨트롤러의 속성으로로드 할 수있는 표준 보고서 페이지의 양을 고려하고 있습니다. 작동하지 않는 * 와일드 카드 대신 그 정규식을 사용하는 것이 좋습니다. – winkbrace

+0

여러 슬래시가있는 경로가 ReportsController로 전달되지 않기 때문에 불행히도이 솔루션이 작동하지 않습니다. – winkbrace

+0

작동하지 않는 경로를 표시 할 수 있습니까? 정규 표현식을 조정할 수 있는지 알게 될 것입니다. – fideloper

관련 문제