我将CakePHP与CakeDC / Users插件一起使用,我希望在注册时不仅存储标准用户详细信息。我以为我在这里得到了答案:https://github.com/CakeDC/users/blob/master/Docs/Documentation/Extending-the-Plugin.md#extending-the-model-tableentity,但那件事对我来说再也没有意义了。
我按照文档中的建议将其设置为网站:
...但在注册时,它仍在尝试更改标准用户表,而不是我的新site_users表。
这是新的实体文件,其中包含site_users表中的字段列表:
namespace App\Model\Entity;
use CakeDC\Users\Model\Entity\User;
/**
* SiteUser Entity
*
* @property int $id
* @property string $first_name
* @property string $last_name
* @property string $email
* @property string $company
* @property string $abn
* @property string $ngr
* @property \Cake\I18n\Time $date_registered
* @property string $street_address
* @property string $suburb
* @property string $region
* @property string $state
* @property string $postcode
* @property string $mobile
* @property string $landline
* @property string $fax
* @property string $username
* @property string $password
* @property string $receive_marketing
* @property string $ngr_confirmed
* @property int $site_user_group_id
* @property string $token
* @property \Cake\I18n\Time $token_expires
* @property string $api_token
* @property \Cake\I18n\Time $activation_date
* @property \Cake\I18n\Time $tos_date
* @property bool $active
* @property bool $is_superuser
* @property string $role
* @property \Cake\I18n\Time $created
* @property \Cake\I18n\Time $modified
*
* @property \App\Model\Entity\SiteUserGroup $site_user_group
*/
class SiteUser extends User
{
protected $_accessible = [
'*' => true,
'id' => false,
'role' => false,
];
}
这是新的表格文件:
namespace App\Model\Table;
use CakeDC\Users\Model\Table\UsersTable;
class SiteUsersTable extends UsersTable
{
}
bootstrap.php包含以下行:
Configure::write('Users.config', ['users']);
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]);
而且users.php有这个:
return [
'Users.table' => 'SiteUsers',
];
我觉得我只是不理解这一点,但似乎应该是一个足够普遍的要求,至少在那里是一个不错的例子。
有人能告诉我为什么我所做的更改没有达到我期望的效果(site_users表会被插件更新),或者我需要做些什么才能以另一种方式实现这一点? / p>
非常感谢
答案 0 :(得分:1)
请注意,如果您只需添加一些额外字段,则只需添加迁移并为users表创建字段。
将$this->table('site_users');
添加到新的表初始化方法中,让CakePHP知道您将使用具有其他名称的表(不是“用户”)
看起来您正在以错误的顺序加载插件配置覆盖,请在您的bootstrap.php文件中尝试此操作
Configure::write('Users.config', ['users']);
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]);
正如此处记录https://github.com/CakeDC/users/blob/master/Docs/Documentation/Configuration.md
或者你可以用这种方式加载插件后覆盖这个配置:
Configure::write('Users.table', 'SiteUsers');