2013-08-20 10 views
0

제 애플리케이션에는 몇 가지 방법이있는 메인 컨트롤러가 있습니다. 그 중 하나는 사용자가 로그인 한 경우 확인하고 사용자를 리디렉션하지 않을 경우 양식을 로그인 등Zend 컨트롤러는 두 클래스에서 확장됩니다.

class FA_Controller_Auth extends Zend_Controller_Action { 
    public function preDispatch() { 
    //chceck user is login 
    } 
} 

aand가 모든 컨트롤러는이 기본 클래스에서 확장

IndexController extends FA_Controller_Auth{} 

하지만 지금은 멀티 건물입니다 Zend_Payment_Controllerso Payment_GatewayController의 지불 게이트웨이는 Zend_Payment_Controller에서 확장되어야합니다. 하지만 사용자가 로그인하거나하지 않은 경우 chack 필요 및 다중 나는 PHP에서 클래스를 확장 멀티 사용하는 방법이 없습니다 알고 있지만 어쩌면 더 나은 방식이있다

Payment_GatewayController extends Zend_Payment_Controller, FA_Controller_Auth 

을 연장처럼 내가 뭔가를해야만 찾고 있어요 승인을 확인하기 위해 조치 도우미 또는 플러그인을 수행 하시겠습니까? 감사합니다.

감사합니다.

답변

1

하나의 클래스 만 확장 할 수 있습니다. 이것이 바로 기본 컨트롤러 클래스를 사용하는 것이 나쁜 관행으로 간주되는 이유입니다. 대신 두 검사의 논리를 컨트롤러 플러그인으로 옮겨야합니다.

+0

덕분에 매우 유용했습니다. 그러나 컨트롤러 플러그인은 모든 컨트롤러와 액션을 실행하지만, 그래서 그것을이 작업에 사용할 권한 부여 검사입니다해야 할 몇 가지 작업은 권한 부여를 검사 할 필요가 없습니다 : '클래스 SilverCms_Controller_Plugin_Auth이 Zend_Controller_Plugin_Abstract { 공공 기능 dispatchLoopStartup (Zend_Controller_Request_Abstract 확장 $ oRequest) { $ sAction = strtolower ($ oRequest-> getActionName()); if ($ sAction === 'confirmEmail') { return; }}' 어쩌면 더 좋은 방법이 있을까요? –

+1

아니, 당신이하는 방법이 최선의 방법입니다. –

+0

확인해 주셔서 감사합니다. –