「CakePHP」タグアーカイブ

CakePHP3でのビューでのユーザー情報の表示

CakePHP 3で、ビューにどうやってAuth->Userの情報を表示させようか検討しました。

簡単なのは、
$this->request->getSession()->read(‘Auth.User.name’)
のようにセッション変数から取得することなのですが、コントローラーの制御から外れて、ビューが勝手に値を取得しているような気がしてモヤモヤしていました。

一方、
$this->Auth->user(‘name’)
のような書き方もビューでは出来ないし…

そこで、AppControler.phpのbeforeRenderで値をsetして、ビューから統一的に変数から取得することにしました。

具体的には、AppController.phpに下記のコードを追記します。

public function beforeRender(Event $event) {
       if ($this->Auth !== null) {
          $this->set(‘auth_user’, $this->Auth->user());
      } else {
          $this->set(‘auth_user’, null);
      }
}

また、エラー時に、ErrorControllerでAuthがない、と落ちてしまうので、ErrorController.phpのbeforeRenderにも追記します。

public function beforeRender(Event $event) {
    //エラーが発生した時にAuthがないnoticeが発生するためnullをセットする
   $this->Auth = null;
   parent::beforeRender($event);
}

これで、どのビューでも$auth_user->nameと統一的に扱うことが出来るようになりました。変なこだわりだな、とは思いましたが、スッキリしました。

CakePHP 3.7でのお話でした。