2017-01-09 70 views
1

我正在使用CakePHP和CakeDC/Users插件,並且我希望在註冊時不僅存儲標準用戶詳細信息。我想我已經在這裏得到了答案:https://github.com/CakeDC/users/blob/master/Docs/Documentation/Extending-the-Plugin.md#extending-the-model-tableentity,但是這樣對我來說已經沒有意義了。如何使用自定義表格而不是標準的CakeDC/Users表格?

我設置的網站,如文檔中建議:

  • 我的新表名是site_users和我包括所有標準的「用戶」表中的字段,與我所需要的附加字段一起。
  • 我創造了新的型號/表和型號/實體類
  • 我創建了一個新的register.ctp模板

...但登記的,仍試圖進行更改標準用戶表,而不是我的新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表將由插件更新),還是我需要做的以另一種方式實現此目的?

非常感謝

回答

1

注意你只需要添加一個遷移,並創建字段的用戶表,如果你只需要添加一些額外的字段。

添加$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'); 
+0

但是,感謝您的支持,我最初的網站設置與您(和文檔)描述的一樣,並且改變了這些命令的順序以反映我發現的類似示例。插件嘗試更新哪個表格也沒有任何影響。 –