Cake 2.3.5 を使用しています。メイン Web サイトの Blog+Authentication チュートリアルに従いました。すべてのページのヘッダーにウェルカム メッセージが表示されるように変更したいので、default.ctp でユーザー名を取得する必要があります。
私はこれらの方法を試しました:
//these don't work..
//in default.ctp
<div>Signed in as: <?php echo AuthComponent::user('username'); ?></div>
<?php $user = $this->Session->read('Auth.User');
echo $user['username']; ?>
どちらも常に null を返し、関数を開始した ID 番号に基づいて UsersController で php 変数を設定することにより、ユーザー ビューでユーザー名を正常に取得したページでも、何も出力されません。
//this works..
//in UsersController
$this->set('user', $this->User->read(null, $id));
//in users/view
<div>Signed in as: <?php echo $user['User']['username']; ?></div>
ログインしているユーザーのデータを default.ctp で取得するにはどうすればよいですか?
編集:
私はこれに問題があります:
$user = $this->Session->read('Auth.User');
$this->set('user', $user);
このコードをデフォルトにすると:
echo $user['username'];
これは home.ctp で機能しますが、どのユーザー ビューでも「インデックスが存在しないというエラー」がスローされます。コードを次のように変更すると:
echo $user['User']['username'];
逆の問題が発生します(ユーザービューでは機能しますが、ホームページでエラーがスローされます)。
これをAppControllerに入れてみました:
$user = $this->Session->read('Auth.User');
if (array_key_exists('User', $user))
$user = $user['User'];
$this->set('user', $user);
しかし、何も変わりませんでした。
解決:
これが最も簡単な方法です。
//in default.ctp
$user = AuthComponent::user();
$username = $user['username'];