2009-09-24 2 views
0

좋아, 나는 단어 이상으로 좌절감을 느낀다!Zend Framework 1.9 addModuleDirectory가 작동하지 않습니까?

나는 ZF 1.9 응용 프로그램이 있습니다. 다음은 내 bootstrap.php에 : 나는 ZF 라이브러리 파일에 일부 추적 코드를 삽입 한

$front = Zend_Controller_Front::getInstance(); 
$front->addModuleDirectory(dirname(__FILE__).'/modules'); 

, 나는 addModuleDirectory 호출 및 addControllerDirectory에 후속 내부 호출을 볼 수 있습니다 - 그것은 올바른 값을 가지고 모듈 이름과 경로. 내부 _controllerDirectory 변수를 덤프하면 (이것은 라이브러리/컨트롤러/Dispatcher/Standard.php에 모두 포함되어 있음) 모듈 디렉토리를 볼 수 있습니다.

내 추적이 보여주는 것은 기본 컨트롤러 디렉토리가 기본 컨트롤러에 추가된다는 것입니다.

그러나 다음에 dispatch()를 호출 할 때 _controllerDirectory 변수를 다시 덤프하고 기본 모듈의 컨트롤러 디렉토리 만 가져옵니다. WTF? 나는 추적 여기가 (내게로 주석)입니다 ... 파일로 가고있다 :

 
    -- first call, triggered by addModuleDirectory(): 
    Adding 13:09:08 
    Module itemquestion 
    Path /Users/don/Documents/Aptana Studio Workspace/cahoots2/application/modules/itemquestion/controllers 

    -- You can see my dir is in here... 
    _controllerDirectory contains: 13:09:08 
    /Users/don/Documents/Aptana Studio Workspace/cahoots2/application/modules/itemquestion/controllers 

    -- second call, triggered internally by ZF: 
    Adding 13:09:08 
    Module default 
    Path /Users/don/Documents/Aptana Studio Workspace/cahoots2/application/controllers 

    -- Where's my directory???? 
    _controllerDirectory contains: 13:09:08 
    /Users/don/Documents/Aptana Studio Workspace/cahoots2/application/controllers 

무엇 세계

내가 잘못하고 있는가? 모듈의 디렉토리를 영구 유지할 수없는 이유는 무엇입니까?

EDIT : 약간의 추가 세부 사항./modules 폴더에 두 번째 모듈을 추가했습니다. 이제 _controllerDirectory 변수에 추가되고 표시되는 첫 번째 모듈을 볼 수 있습니다. 그런 다음 두 번째가 추가 된 것을 볼 수 있으며 두 변수 모두 변수에서 볼 수 있습니다. 그런 다음 기본 모듈이 추가 된 것을보고 그 호출 후에 _controllerDirectory에서 유일한 것입니다.

답변

3

좋아,이 솔루션은 application.ini이를 추가하는 것 : 좀 직관적 심지어 원격으로 ZF 참조 설명서에 설명되지 않은 적어도입니다

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 

합니다. 오우. 그러나 이것은 문제를 해결 한 것으로 보인다.

+0

저는 모듈 디렉토리 구조와 프로퍼티 설정에 대해서도 열심히 노력해 왔습니다. 이 주제에 대한 문서는 매우 가난한 ATM입니다 ... – NDM

-1

글쎄, 부트 스트랩에 어떤 부분을 넣어야하는지에 달려 있다고 생각합니다. 응용 프로그램 리소스 컨트롤러 전에 넣으면 덮어 쓸 수 있기 때문입니다. 전면 컨트롤러가이 같은 것을 사용할 수있는 부트 스트랩되어 있는지 확인하려면 다음

protected function _initFrontModules() { 
     $this->bootstrap('frontController'); 
     $front = $this->getResource('frontController'); 
     $front->addModuleDirectory('path/to/modules'); 
} 

당신이 먼저 당신의 방법을 실행 한 후 플러그인의 하나를 덮어 쓸 수 있습니다 부트 스트랩 라인을 생략합니다.

+0

이 코드는 어디에 있습니까? 컨텍스트가 없습니다! – KOGI

+0

부트 스트랩 파일에서 ;-) – Chris