Cakephp3でも$this->Auth->user()を使いたい!
Cakephp2系から3系へ移行した直後の方へシリーズ
$this->Auth->user()がCake3系にないのでヘルパーを作る。
幸いにも既にAuthHelperを作った方がおられるので、userメソッドだけ拡張させていただく
<?php /** * AuthHelper: Authの変数にアクセスできる * @usage $this->Auth->get('Admin.id'), $this->Auth->get('User.email') * @usage $this->Auth->user(), $this->Auth->user('email') */ namespace App\View\Helper; use Cake\View\Helper; use Cake\Controller\Component; class AuthHelper extends Helper { /** * The current user, used for stateless authentication when * sessions are not available. * * @var array */ protected $_user = null; /** * Initialize current user from session data * before rendering view. * * @return void */ public function Initialize(array $config) { $this->_user = $this->request->Session()->read('Auth'); } /** * Get the current user. * * @param string $key field to retrieve. Leave null to get entire User record * @return array|null Either User record or null if no user is logged in. */ public function get($key = null) { if( empty($key) ) { return $this->_user; } if( strpos($key, '.') !== false ) { list($sessionKey, $field) = explode('.', $key); return isset($this->_user[$sessionKey][$field]) ? $this->_user[$sessionKey][$field] : null; } return null; } public function user($key = null){ return $this->get('User.'.$key); } }
認証用ユーザーモデルがUserModelじゃない時はuser関数を
return $this->get('MyUser.'.$key);
で任意に書き換えてください。
しかしCakephp3系のコンセプトに真っ向から歯向かう改修ではある
(データ取得メソッドはgetつかってわかりやすく〜的なやつ)