1

View/Elements/header.ctpアプリケーションに固定されたヘッダー (に保存) があります。唯一の変更点は、ユーザーへの挨拶です。ログインしているユーザーに応じて、「こんにちは、ピート」または「こんにちは、デイブ」などを読み込みます。

この挨拶はすべてのページに表示されるため、ヘッダーにあります。

私が知りたいのは、データベースからユーザーの名前を取得することは可能ですか?

これは私のデータベース設定です

ユーザーの名前は、 というテーブルに格納されますHrEmployees。ユーザーのログイン情報は に保存されUsersます。には、 の従業員の ID にリンクされUsersたフィールド があります。そのため、ユーザーの ID を取得して名前を取得する必要があります。employee_idHrEmployees

質問

これはヘッダーで行うことができますか?もしそうなら、どうすればいいですか?他に必要な情報がある場合はお知らせください。投稿します。

4

1 に答える 1

1

はい、可能です。Auth セットアップの詳細に依存しますが、基本的には、まず Cake の Auth コンポーネントがログインしたユーザーのリンクされた HrEmployees レコードを取得することを確認してから、ログインしたユーザー名を beforeFilter のビュー変数に設定するだけです。 AppController のメソッドであるため、すべてのビューで使用できます。

Auth にリンクされた HrEmployee が含まれていることを確認する最初の部分は、次のようになります。

$this->Auth->authenticate = array(
    'Form' => array(
        'userModel' => 'User',
        'contain' => array(
            'HrEmployee'=>array(
                'fields' => array( 'id', 'name' )
            )
        )
    )
);

認証に関する詳細情報: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

次の部分であるビュー変数の設定は、AppController.php の beforeFilter() メソッドで行う必要があり、次のようになります。

$this->set('loggedInUsersName', $this->Auth->user('HrEmployee.name'));

次に、任意のビュー ファイルで $loggedInUsersName を参照するだけで、正しい値が含まれているはずです。

于 2013-02-01T11:42:50.437 に答える