cakePHP 获取登录用户的详细信息
cakePHP get users details of logged in user
我在 cakePHP 3 中使用 cakeManager 插件来管理用户。我有两个用户角色 businesses 和 employees,每个角色都有附加信息表。
当用户登录时,我试图获取包含用户详细信息的附加信息,但我似乎无法获取与用户相关的表。
商业模式:
/**
* Businesses Model
*/
class HotelsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
$this->table('businesses');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
$this->hasMany('Employees', [
'foreignKey' => 'hotel_id'
]);
}
来自插件的扩展用户模型
namespace App\Model\Table;
use CakeManager\Model\Table\UsersTable as BaseUsersTable;
use Cake\Validation\Validator;
/**
* Users Model
*/
class UsersTable extends BaseUsersTable
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->hasOne('Employees', [
'foreignKey' => 'user_id'
]);
$this->hasOne('Businesses', [
'foreignKey' => 'user_id'
]);
}
}
我已将企业协会直接添加到插件中,也是为了检查模型扩展是否存在问题。
查看返回的对象,我发现角色模型关联也没有返回,所以我怀疑是插件查找设置为不检索断言。
我的问题是我不知道如何覆盖它。
自 CakePHP 2.2 (http://bakery.cakephp.org/articles/lorenzo/2012/07/01/cakephp_2_2_and_2_1_4_released) 起,AuthComponent 现在接受 'contain' 密钥以在会话中存储额外信息。我已经检查过 3.0,它仍然支持包含
'Auth' => [
'authorize' => 'Controller',
'userModel' => 'CakeManager.Users',
'authenticate' => [
'Form' => [
'contain' => [ 'Roles' ],
]
]
查看 this 示例以了解如何更改默认 AuthComponent
配置。
参考:https://gitter.im/cakemanager/cakephp-cakemanager?at=556389082e564d1f3abefc04
我在 cakePHP 3 中使用 cakeManager 插件来管理用户。我有两个用户角色 businesses 和 employees,每个角色都有附加信息表。
当用户登录时,我试图获取包含用户详细信息的附加信息,但我似乎无法获取与用户相关的表。
商业模式:
/**
* Businesses Model
*/
class HotelsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
$this->table('businesses');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
$this->hasMany('Employees', [
'foreignKey' => 'hotel_id'
]);
}
来自插件的扩展用户模型
namespace App\Model\Table;
use CakeManager\Model\Table\UsersTable as BaseUsersTable;
use Cake\Validation\Validator;
/**
* Users Model
*/
class UsersTable extends BaseUsersTable
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->hasOne('Employees', [
'foreignKey' => 'user_id'
]);
$this->hasOne('Businesses', [
'foreignKey' => 'user_id'
]);
}
}
我已将企业协会直接添加到插件中,也是为了检查模型扩展是否存在问题。
查看返回的对象,我发现角色模型关联也没有返回,所以我怀疑是插件查找设置为不检索断言。
我的问题是我不知道如何覆盖它。
自 CakePHP 2.2 (http://bakery.cakephp.org/articles/lorenzo/2012/07/01/cakephp_2_2_and_2_1_4_released) 起,AuthComponent 现在接受 'contain' 密钥以在会话中存储额外信息。我已经检查过 3.0,它仍然支持包含
'Auth' => [
'authorize' => 'Controller',
'userModel' => 'CakeManager.Users',
'authenticate' => [
'Form' => [
'contain' => [ 'Roles' ],
]
]
查看 this 示例以了解如何更改默认 AuthComponent
配置。
参考:https://gitter.im/cakemanager/cakephp-cakemanager?at=556389082e564d1f3abefc04