1

我的应用程序中有一个已修复的标头(保存在 中View/Elements/header.ctp)。唯一改变的是对用户的问候。它根据谁登录加载“嗨,皮特”或“嗨,戴夫”等。

此问候语位于标题中,因为它显示在每一页上。

我想知道的是,我是否可以从数据库中获取用户名?

这是我的数据库设置

用户名存储在名为 的表中HrEmployees。用户的登录详细信息存储在Users. Users有一个字段 ,employee_id它与 中的员工 id 相关联HrEmployees。所以我需要获取用户的 id 并检索他的名字。

问题

这可以在标题中执行吗?如果是这样,我该怎么做?如果需要任何其他信息,请告诉我,我会发布。

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 回答