2013-08-20 71 views
0

在我的應用程序中我有一個主控制器,其中有幾個方法。其中一個檢查,如果用戶登錄,如果不是將用戶重定向到登錄表單等Zend控制器擴展了兩個類

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

A和所有的控制器從這個主類擴展

IndexController extends FA_Controller_Auth{} 

,但現在我建立多從Zend_Payment_Controllerso付款gatwey Payment_GatewayController應該從Zend_Payment_Controller擴展。但我需要焯芬,如果用戶登錄或不和我期待的財產以後像多延長

Payment_GatewayController extends Zend_Payment_Controller, FA_Controller_Auth 

我知道有沒有辦法使用多在PHP擴展類,但也許有更好的方式來做到這一點,行動助手或插件來檢查授權? 此致敬禮。

問候。

回答

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

好的,非常感謝您的幫助! –