如何在通过CakePHP 3.0中的表链接模型时检索信息?

我试图建立一个基于CakePHP博客教程中的用户访问模型(http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html ),但将角色放在单独的表格中,并通过UserRoles表格链接到用户。

我目前在Model / Table / UsersTable.php中有以下内容:

    $this->belongsToMany('Roles', [
        'through' => 'UserRoles'
    ]);

以及Model / Table / RolesTable.php中的以下内容:

    $this->belongsToMany('Users', [
        'through' => 'UserRoles'
    ]);

以及Model / Table / UserRolesTable.php中的以下内容:

    $this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);
    $this->belongsTo('Roles', [
        'foreignKey' => 'role_id'
    ]);

我创建了查看,创建和管理员角色。 我试图弄清楚如何在AppController.php中检查用户的角色或角色。 这是将角色合并到用户对象中的简单示例:

public function isAuthorized($user)
{
    // Admin can access every action
    if (isset($user['role']) && $user['role'] === 'admin') {
        return true;
    }

    // Default deny
    return false;
}

我不确定如何访问User对象并通过AppController文件中的用户标识获取用户的角色。 由于用户没有直接链接到角色,我将如何从IsAuthorized函数访问角色信息? 如何在用另一个表链接时执行查找以检索用户的角色? 谢谢!


在控制器中设置AuthComponent时,请确保告诉它提取相关数据:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'authenticate' => [
            'Form' => [
                'contain' => ['Roles']
            ]
        ]
    ]);
}
链接地址: http://www.djcxy.com/p/58829.html

上一篇: How to retrieve information when linking models through a table in CakePHP 3.0?

下一篇: Cakephp understanding Localization..?