2011-10-07 4 views
0

응용 프로그램의 기본 경로를 변경하여 application.ini가 아닌 Bootstrap.php를 통해 선택적 매개 변수를 사용하고 싶습니다. 나는 모든 "탈출"루트를 설정하는 데 문제가 있습니다. 심지어 알지도 못합니다. 여러 경로를 설정해야하는지 아니면 하나만 할 수 있는지도 모릅니다.기본 젠드 경로에 선택적 매개 변수를 추가하십시오.

경로는

":module/:area/:controller/:action" 

과 같이해야합니다 : 영역은 선택 사항이며

그래서 http://www.example.com/my_module/my_controller/my_action에 대한 모든 액세스에 나는 다음의 플러그인 FC를 통해 얻을 수있는 '공개'로 기본값 :

$request->getParam('area') = "public" 

그리고 http://www.example.com/my_module/my_area/my_controller/my_action에서 내가 얻을 :

기본 모듈, 인덱스 http://www.example.com/default/public/index/index 같은 컨트롤러와 그도 전달되지 않습니다 경우 인덱스 조치 및로드 http://www.example.com/ 반환에 빠져 있도록

주요 문제는 모든 경로를 만드는 것입니다.

그리고 URL 도우미를 사용하여 내부 URL을 생성하고이 새로운 기본 경로의 올바른 어셈블리를 존중합니다.

편집 : 기본 경로가 모듈에 대한 안전 장치와 함께 제공되는 것으로 알고 있는데, 컨트롤러에 기본적으로 존재하지 않는다면 URL의 다른 부분과 모듈 자체에 대해 유사한 동작을 모방하는 방법 부트 스트랩에서 생성 할 때.

누구나 나에게 약간의 빛을 줄 수 있습니까?

답변

1

이 솔루션은 실제로 Zend_Controller_Router_Route_Abstract을 확장하고 URL을 거치며 모듈, 영역, 컨트롤러 및 동작의 존재를 확인하여 전체 기능 URL을 작성하거나 오류 컨트롤러로 발송합니다. ,

무거운 작품은 match()assemble() 방법 사이에 이루어집니다 내가 젠드 클래스 Zend_Controller_Router_Route_Module THT는, 대신 모듈은 I 허용 지역의 화이트리스트를 만들어 디스패처에있는 경우 확인하는 모듈에 대해 유사한 작업을 참조로 사용 일치하지 않으면 경로 부분이 컨트롤러이고, 다음 동작과 그 이상의 부분이 매개 변수라고 간주합니다.

그것은 마치 마법처럼 일했습니다!

1

Zend_Controller_Router_Rewrite을 확장하고 기본 라우터 설정 및 URL 조합을 변경 한 다음 Zend_Controller_Front에서 ->setRouter()을 사용하여 기본값 대신 새 라우터 인스턴스를 사용할 수 있습니다. 그렇게하기 전에 class Zend_Controller_Router_Rewrite을 검색하고 학습하십시오.

+0

Yeap, 이건 내가 피하려고하는 것입니다. 비록이 작업을 단순히 루트를 추가하는 방법으로 만들었지 만 ( –

+0

경로를 추가하면 오른쪽 컨트롤러/동작에 액세스하는 데 도움이 될 수 있지만 다른 설정으로 URL을 생성 할 수 있도록 라우터를 변경해야합니다. 항상 라우터에 대한 변경을 피하기 위해'setGlobalParam'을 사용하십시오. 그러나 링크가 항상 당신이 제안한 것과 같이 보이지는 않습니다. –

+0

재 작성된 Zend_Controller_Router_Route_Module의 수정 된 버전을 사용하기로 결정했습니다. 그런 다음 부트 스트랩에 사용합니다! 결과를 알게하고 지금 작업하십시오! –