[ ZendFramework1 ] アクションメソッドが呼び出されないようにする(setDispatched)

Pocket

ここでは、Zend Framework1 でアクションメソッドが呼び出されないように無効化するサンプルスクリプトを掲載しています。

何度も同じこと言いますが、Zend Framework1 は使われているのだろうか?2 も怪しいような気もしますが。。。

スポンサーリンク


アクションメソッドの呼び出しを無効化する(setDispatched)

次のスクリプトは、アクションメソッドが呼び出されないようにする制御するサンプルです。詳細は、サンプルコード内のコメントを参照ください。

class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        /*
         * init メソッド内で dispatched フラグを false にしても
         * preDispatch メソッドは呼び出される。(内部で true に上書きされる)
         */
        $this->getRequest()->setDispatched(false);
    }

    public function preDispatch()
    {
        /*
         * preDispatch メソッド内で dispatched フラグを false にすると
         * リクエストされた アクションおよび postDispatch メソッドはコールされなくなる。
         * ただし、アクションヘルパーの postDispatch は呼び出される
         */
        $this->getRequest()->setDispatched(false);
    }

    public function indexAction()
    {
        /*
         * アクションメソッドで dispatched フラグを false にしても
         * postDispatch メソッドは呼び出される。
         * 
         * 従って、postDispatch 内で処理の可否を行う必要がある
         */
        $this->getRequest()->setDispatched(false);
    
    }

    public function postDispatch()
    {
        /*
         * アクションで setDispatched メソッドで false が渡されている場合は
         * 処理をスキップするサンプルコード
         */
        if(!$this->getRequest()->isDispatched()) {
            return;
        }
        
        /*
         * dispatched フラグが true の場合の処理
         */
    }
}
スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>