0

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'];
4

2 に答える 2