2012-04-09 7 views
1

는이 전과 같이 다른 모듈에 확장 할과에서 나는 User_RegistrationController 있다고 가정 해 봅시다공유 젠드 모듈 컨트롤러

(!) Fatal error: Class 'User_RegisterController' not found /application/modules/clinic/controllers/RegisterController.php on line 4 

다른 모듈에서 컨트롤러를 확장 할 수있는 방법이 있습니까?

답변

3

별도의 라이브러리 클래스로로 기본 컨트롤러를 당길 수 :

class App_Controller_Action_MyController extends Zend_Controller_Action 
{ 
    // your base controller code here 
} 

그런 다음 모듈 foo의 컨트롤러가 비어있을 수 있습니다 : 모듈 bar의 컨트롤러가 포함 할 수있는 동안

class Foo_MyController extends App_Controller_Action_MyController 
{ 
} 

당신의 재정의 :

class Bar_MyController extends App_Controller_Action_MyController 
{ 
    // override your members/methods 
} 

App_autoloadernamespace으로 추가하는 것을 잊지 마십시오.

1

오토로더는 다른 모듈에서 컨트롤러를 찾도록 설정되지 않았습니다. 당신이 무슨 일을하고 싶은 경우

, 당신은 단순히 클래스 정의 위에 require_once 문을 추가 할 수 있습니다

require_once APPLICATION_PATH . '/modules/user/controllers/RegisterController.php'; 

class Clinic_RegisterController extends User_RegisterController 
{ 
    //... 
} 
0

을 확장 할 다른 모듈에서 컨트롤러가 필요합니까 왜? 이렇게하면 다른 모듈에 대한 종속성이 생깁니다. 두 컨트롤러에 공통 코드가있는 경우 응용 프로그램 계층에 action helpers을 사용하십시오.

+0

글쎄, 나는 다른 사용자의 등록과 로그인을 재 실시 할 수있는 전체 컨트롤러를 가지고 있지만, 코드를 복제하고 싶지는 않지만, 액션 헬퍼는 컨트롤러에 의한 상속이 솔루션이 될 수 있기 때문에 몇 가지 액션과 메소드에 대해 작은 것처럼 보인다. . –

+0

두 번째 컨트롤러에서 등록/로그인을 복제하려고 시도한 작업은 무엇입니까? –

+0

Beacose 나는 하나의 모듈에서 고객의 역할을 말할 수있는 것들을 분리시켜야하고, 두 번째 모듈에서 클리닉 역할을한다고하면, 나는 그들을 많이 재사용 할 것이다. 그래서 나는 사용하지 않을 행동으로 코드를 복제하고 싶지 않습니다. –