첫 번째 문제는 경로를 사용할 때 규칙을 여러 변수와 일치시키기 위해 매우 특정한 제약 조건이 필요하다는 것입니다.
// url/: lang/: module/: controller/: action 및 // url/: module/: controller/: action 첫 번째 구조 만 사용하도록 설정합니다. 이렇게하면 첫 번째 규칙을 // url/: lang/: controller/: 액션에서 분리하는 것이 더 쉬울 것이며 각 규칙에는 서로 다른 "단어"(URL 부분)가있는 규칙이 두 개뿐입니다. (ZF 그 정보를 필요로하기 때문에) 두 번째 경로에서 모듈을 기본하면서, 두 번째위한 URL과 일치하지 않도록
$withModule = new Zend_Controller_Router_Route(
':lang/:module/:controller/:action',
array()
);
$withoutModule = new Zend_Controller_Router_Route(
':lang/:controller/:action',
array(
'module' => 'default'
)
);
$router->addRoute('withModule', $withModule);
$router->addRoute('withoutModule', $withoutModule);
첫 번째 경로에서 당신은 어떤 기본값을 지정하지 마십시오.
if(!$this->_getParam('lang')) {
//this should cover the 3rd use case
$this->_redirect('/en/' + $this->view->url(), array('exit' => true, 'prependBase' => false));
} else {
//setup Zend_Translate
}
다른 가능성 : 제 규칙으로서
, 난 언어 PARAM 아래의 예에서와 같이 수신되는지 확인 MyLib_Controller 추천 및 초기화() 메소드에서 기지국 상위 제어기 것을 사용 제안 : lang 변수를 2 글자 단어로 제한하고 있지만 문제가 생길 수 있으므로이를 피하는 것이 더 좋습니다.