访问header中的数据库信息 - cakePHP

时间:2013-02-01 10:23:39

标签: php mysql cakephp-2.0

我的应用程序中有一个标题(保存在View/Elements/header.ctp中)已修复。唯一改变的是对用户的问候。它会根据谁登录来加载“Hi,Pete”或“Hi,Dave”等。

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

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

这是我的数据库设置

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

问题

这可以在标题中进行吗?如果是这样,我该怎么做?如果还有其他信息,请告诉我,我会发布。

1 个答案:

答案 0 :(得分: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,它应该包含正确的值。