0

Zend Framework 1を使用して、アクセスするにはログインが必要なWebサイトで作業しており、ログインを容易にするためにloginActionという名前のアクションを持つコントローラー名UserControllerを作成しました。現在、システムを設定しているので、ユーザーがサイトにアクセスしようとしてログインしていない場合、ユーザーは/ user / loginにリダイレクトされますが、これによりURLが変更されるため、これは発生しません。これにより、ユーザーがログインしていない場合にコントローラー内でコントローラーを切り替えようとしているところまで来ました。これまでのところ、次のようになっています。

require_once(APPLICATION_PATH . '/controllers/UserController.php');
$this->_helper->viewRenderer->renderBySpec('login', array('controller'=>'user'));
$controller = new UserController($this->getRequest(),$this->getResponse());
return $controller->loginAction();

これでも、非表示にしようとしているページはレンダリングされますが、loginActionを呼び出しているように見えます。誰かがこれを行うためのより良い方法を持っていますか、または私はそれを修正することができますか?

4

1 に答える 1

3

コントローラのpreDispatchメソッド内で_forward()を呼び出すことができます。

public function preDispatch()
{
    parent::preDispatch();
    if (!is_user_logged) {
        $this->_forward('login','user');
    }
}

参照: http: //framework.zend.com/manual/1.12/en/zend.controller.action.html#zend.controller.action.utilmethods

于 2012-11-26T15:46:07.757 に答える