2016-09-30 16 views
0

私はCakePHP 3.x - AuthComponent::user() in Viewのようなさまざまな投稿を読んでいますが、そこにはがあります。はどこにでも使えるようにしています。アプリケーション。CakePHP 3 - ユーザデータにアクセスする(.ctpファイル)

CakePHP 2.xでは、ログインしたユーザのnavbarにそのようなユーザ名を表示するのはかなり簡単でした。これが行われた方法は、Authコンポーネントを使用し、AppController内にユーザーの詳細(名、姓など)の配列でグローバルにアクセス可能な変数を設定することでした。

CakePHP 3.xではこれがどのように達成されるか分かりません。

$this->Auth->user('id');のようなものは、コントローラでのみ動作するようです。

コントローラからビューに渡すことができます。しかし、それをグローバルテンプレート(default.ctpなど)に入れたい場合はどうすればよいでしょうか?あなたはCakePHP 3.xでこれをどのようにしていますか?例として$this->Auth->user('id');しか提供していないので、Cakeのウェブサイトのドキュメントは実際にあなたに言いません。セッション

$this->request->session()->read('User.name'); 

http://book.cakephp.org/3.0/en/development/sessions.html#accessing-the-session-object

答えて

0

のアクセスは、テンプレートで使用されているコンポーネントは、コントローラとヘルパーで使用されていることに注意してください。ビルドのAuthヘルパーには何もありません。

ログインしているすべての認証ユーザーデータはセッション内に保存されているため、セッションヘルパーとセッションコンポーネントの両方があるため、前者をテンプレートで使用できます。これは、この形式でログインしているユーザーのすべての詳細を返します

$user = $this->request->session()->read('Auth.User'); 

Array(
    [id] => 1 
    [username] => abc 
    [email] => [email protected] 
    ....... 
) 

参考:Accessing the Session Object

+0

それとも、あなたはステートフルとステートレス認証に対応して、それを維持したい場合は、より良いです[Tools Auth classes](https://github.com/dereuromark/cakephp-tools/blob/master/docs/Auth/Auth.md)を使用してください。 – mark

0

経由

関連する問題