CakePHP - 将自定义值添加到用户对象

时间:2016-03-01 10:33:17

标签: cakephp cakephp-3.0

我在CakePHP Users表中添加了4个列,我试图弄清楚如何在$this->Auth->user()对象中包含这些列。

我已将列信息添加到我的用户模型和实体中,但仍然没有乐趣。目前我的用户对象看起来像这样;

[
    'id' => (int) 1,
    'username' => 'admin',
    'name' => 'Web Admin',
    'email' => 'webteam@',
    'role' => 'admin',
    'created' => object(Cake\I18n\Time) {

        'time' => '2016-02-09T16:04:46+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    },
    'modified' => object(Cake\I18n\Time) {

        'time' => '2016-02-12T08:53:16+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    }
]  

这个对象在哪里创建,有没有一种方法可以添加我的自定义值,而无需编辑核心CakePHP文件?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

默认情况下,内置身份验证器将获取表架构中的所有字段。

您很可能忘记清除缓存(tmp/cache/models),无论何时对模式进行更改,都应该执行此操作。

如果想要指定要提取的字段,则需要自定义查找器。

参见 Cookbook > Controllers > Components > Authentication > Customizing Find Query

$this->loadComponent('Auth', [
    'authenticate' => [
        'Form' => [
            'finder' => 'auth'
        ]
    ],
]);

UsersTable班级

public function findAuth(\Cake\ORM\Query $query, array $options)
{
    return $query
        ->select(['id', 'username', 'password', 'column_x', 'column_y']);
}

应该注意,必须始终包含身份验证所需的字段,例如usernamepassword