2

부트 스트랩 파일의 컨트롤러 이름을 기반으로 추가 설정 파일을로드하고 싶습니다. 부트 스트랩 (젠드 프레임 워크 1.1)에서 컨트롤러의 이름을 가져와야합니다. 이것이 가능한가?부트 스트랩에서 컨트롤러 이름 가져 오기

$front = Zend_Controller_Front::getInstance(); 
$controller = $front->getRequest()->getControllerName(); 

하지만이 작동하지 않습니다 :

나는 시도했다

Fatal error: Call to a member function getControllerName() on a non-object in [path]\application\Bootstrap.php on line 10 

답변

4

먼저 전면 컨트롤러를 부트 스트랩하여 사용해야합니다.

$bootstrap->bootstrap('frontController'); 
$front = $bootstrap->frontController; 
$controller = $front->getRequest()->getControllerName(); 
4

당신은 프론트 컨트롤러를 사용에 대한

예 부트 스트랩에 의해 먼저 요청 객체를 초기화해야 Bootstrap 클래스 :

$this->bootstrap('frontController'); 
$request = $this->getResource('frontController')->getRequest(); 
$controller = $request->getControllerName(); 

통해 부트 스트랩 파일에서 요청 개체를 사용하지 마십시오.

더 나은 해결책은 프런트 컨트롤러 플러그인과이 방법을 사용하는 pre-/postDispatch() 방법을 사용하는 것입니다.

더 복잡한 논리가 있거나 각 컨트롤러에 대해 더 많은 편의 방법이 필요한 경우 Zend_Controller_Action 클래스를 확장 할 수 있습니다.

+2

일을. 컨트롤러 플러그인은 제가가는 길입니다. –

+0

나는 Songos 솔루션을 추가하고 좀 더 이해할 수 있도록 썼습니다. –

+0

미안하지만, 원래의 대답은 URL을 직접 파싱하는 것이 었습니다. 그래서 나는 전체 대답을 완전히 바꿀 때, 특히 그것을 업 그레 이드 할 수 없습니다. 사람들이 받아 들인 대답보다 더 많은 것을 upvoted 것을 믿을 수 없다. –

3

이 또한처럼 작업을 수행 할 수 있습니다

 $router = new Zend_Controller_Router_Rewrite(); 
     $request = new Zend_Controller_Request_Http(); 
     $router->route($request); 
     $request->getActionName();