2009-12-11 5 views
3

ZF 1.9.6 요청의 사용자 에이전트를 기반으로 모듈을 변경하려고합니다. Front에서 요청 개체를 가져 오려고하면 NULL이 표시됩니다.Zend Framework에서 모듈 이름 변경

현재 내가 만든 부트 스트랩 _initModule 메서드에서 모듈 이름을 설정하려고합니다.

$front = Zend_Controller_Front::getInstance(); 
$request = $front->getRequest(); // This is NULL 
$request = new Zend_Controller_Request_Http(); 
$request->setModuleName('iphone'); 
$front->setRequest($request); 

그러나 실행할 때 여전히 '기본'모듈로 이동합니다.

답변

7

요청 라우팅이 시작되기 전에 발생하기 때문에 부트 스트랩이 적절한 장소라고 생각하지 않습니다.

나는 그것에 대해 preDispatch 프론트 컨트롤러 플러그인을 사용하는 것이 좋습니다 것

:

class Your_Application_Plugin_ModuleSelector extends Zend_Controller_Plugin_Abstract { 
    public function preDispatch(Zend_Controller_Request_Abstract $request) { 
     ... 
     $request->setModuleName('iphone'); 
    } 
... 
} 

으로 :

resources.frontController.plugins.moduleselector = "Your_Application_Plugin_ModuleSelector" 

에서 당신 application.ini

+0

나는이 나보다 훨씬 더 나은 해결책이 동의 견딜 수 없는. 도와 주셔서 감사합니다! – mctom987

+0

나는 감동했다! 감사! 클래스 정의는 어디로 가야합니까? – KOGI

+0

어디서나 자동로드가 찾을 수 있습니다. –

관련 문제