1

zf2の__contructor関数でアクション名を取得するにはどうすればよいですか

基本的に、ユーザーがログインしているかどうかを確認したいのですが、そうでない場合はログインページにリダイレクトします

zf2で同様のものを探して、zendフレームワーク1で以下のコードを使用しました

if (Zend_Auth::getInstance()->hasIdentity()) {
  // If the user is logged in, we don't want to show the login form;
  if (in_array($this->getRequest()->getActionName(), 'login')) {
     $this->_helper->redirector('index', 'index');
  }
} else {
  if (!in_array($this->getRequest()->getActionName(), 'login')) {
     $this->_helper->redirector('login', 'user');
  }
}
4

4 に答える 4

3

現在のコントローラ アクションを取得するには:

  $matches      = $this->getEvent()->getRouteMatch();
  $action          = $matches->getParam('action','');
于 2013-10-11T12:54:58.023 に答える
2

既存の回答に加えて:

その__construct()ようなことにはかなり悪い場所です。これは主に、ZF2 内の多くのクラス内で、コンストラクターがその周囲を認識していないためです。多くの情報は、最初の構築後にのみクラスに渡されます。

ACL チェックなどに関して言えば、コントローラーは一般的に、物事を行うのに非常に悪い場所です。これはできるだけ早く発生する必要があり、ZF2 の EventManager を使用して特定のイベントにフックし、ACL チェックを内部に配置します。

ServiceManager の助けを借りて、要求されたコントローラーとアクション、および ACL サービスへのアクセスを取得でき、ユーザーをリダイレクトするか通過させるかを選択できます。

Remi が指摘したように、幸いなことに、仕事を支援するモジュールがいくつかあります。ZfcUser大丈夫だ。ACL Wise もチェックしたくなるでしょうBjyAuthorize

于 2013-10-11T13:20:13.523 に答える
2

ZfcUserモジュールを使用してください。インストール後、それを統合するのは非常に簡単です

ユーザーが接続されているかどうかを確認する方法

https://github.com/ZF-Commons/ZfcUser/wiki/How-to-check-if-the-user-is-logged-in

リダイレクト

controller.php で

return $this->redirect()->toRoute('yourroute', array());

その他の便利なリンク

https://github.com/ZF-Commons/ZfcUser/wiki http://framework.zend.com/manual/2.2/en/modules/zend.mvc.plugins.html

于 2013-10-11T11:01:56.397 に答える
1

これでアクション名を取得 $this->getEvent()->getRouteMatch()->getParam('action', '');

于 2013-11-21T04:43:05.757 に答える