2012-08-16 3 views
0

모듈 기반 zend 응용 프로그램이 있습니다. 나는 버전 번호 (param)를 기반으로 모듈을 적절하게 라우팅하려고한다. 즉. domain.com/api/v1.Zend Custom Routes, 매개 변수 이름 만 사용, 값 없음

내 응용 프로그램 내 부트 스트랩 라우터가 올바르게 라우팅이이

-application 
... 
--modules 
----default 
----api 
----api2 
... 

처럼 보이지만 기본 모듈, 'API'에.

$frontController = Zend_Controller_Front::getInstance(); 

    $router = $frontController->getRouter(); 

    $route = new Zend_Controller_Router_Route(
        'api/:apiversion/:controller/:action/*', 

        array('module' => 'api', 
         'apiversion' => ':apiversion', 
         'controller' => ':controller', 
         'action' => ':action') 
    ); 

    $router->addRoute('api', $route); 

apiversion의 PARAM, 'V1', 'V2'에 내가 경로를 기반으로 할 수 있습니까?

domain.com/api/v2/users/id/5 => /api2/users/id/5 

그래 내가 내가 사용자 입력 domain.com/api2/ ... -not 내가 원하는 무엇을 할 수 이해합니다.

- 예 사용자 입력을 domain.com/api/version/2로 할 수 있음을 이해합니다 .- 원하는 바가 아닙니다.

나는 내가 원하는 것을 달성 할 수없는 경우에만 그렇게 할 것입니다. 나는 내가 할 수있는 그림 당신 :

감사 A -> getParam ("V1")는 다음, 꽤, 동적 인 방법

답변

1

무엇에 대한가없는 한, 해당 모듈을 설정 존재하는지 그런 일을 뭔가 :

$frontController = Zend_Controller_Front::getInstance(); 

$router = $frontController->getRouter(); 

$route = new Zend_Controller_Router_Route(
      'api/v1/:controller/:action/*', 

      array('module' => 'api', 
       'apiversion' => 'v1', 
       'controller' => ':controller', 
       'action' => ':action') 
); 

$router->addRoute('api', $route); 
$route2 = new Zend_Controller_Router_Route(
      'api/v2/:controller/:action/*', 

      array('module' => 'api2', 
       'apiversion' => 'v2', 
       'controller' => ':controller', 
       'action' => ':action') 
); 

$router->addRoute('api2', $route2); 

감사

mimiz

+0

흠. 처음에는 비슷한 것을 시도했지만 api를 얻고있었습니다 : v1 리소스가 문제를 발견하지 못했습니다 (ACL 구현됨). 하지만 이제는 당연히 작동하고 있습니다 : p – steve

+0

또한 버전 번호를 정의하지 않고 일반 버전 경로를 찾으려고했지만이 방법이 효과적입니다. – steve

관련 문제