2017-01-09 2 views
1

Ich benutze CakePHP mit dem CakeDC/Users Plugin, und ich möchte mehr als nur die Standard Benutzerdetails bei der Registrierung speichern. Ich dachte, ich hätte die Antwort hier: https://github.com/CakeDC/users/blob/master/Docs/Documentation/Extending-the-Plugin.md#extending-the-model-tableentity, aber das macht keinen Sinn mehr für mich.Wie verwende ich eine benutzerdefinierte Tabelle anstelle der Standard-CakeDC/Users-Tabelle?

Ich stelle es die Seite wie in der Dokumentation vorgeschlagen:

  • meine neuen Tabellennamen site_users war und ich auf sämtliche Standard-Tabellenfelder ‚Benutzer‘, zusammen mit den zusätzlichen Feldern ich brauchte.
  • habe ich das neue Modell/Tabelle und Modell/Entity Klassen
  • Ich habe eine neue register.ctp Vorlage

... aber bei der Registrierung, es wurde versucht, noch Änderungen an den Standardbenutzer zu machen Tabelle statt meiner neuen site_users-Tabelle. Hier

ist die neue Entity-Datei, die die Liste der Felder in der site_users Tabelle enthält:

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, 
]; 

} 

Und hier ist die neue Tabelle Datei:

namespace App\Model\Table; 

use CakeDC\Users\Model\Table\UsersTable; 

class SiteUsersTable extends UsersTable 
{ 

} 

bootstrap.php enthält die folgenden Zeilen :

Configure::write('Users.config', ['users']); 
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]); 

Und users.php hat dies:

Ich habe das Gefühl, ich verstehe das einfach nicht, aber es scheint, als ob es eine häufig genug Anfrage sein sollte, dass es dort zumindest ein anständiges Beispiel geben würde.

Kann mir jemand sagen, warum die von mir vorgenommenen Änderungen nicht den erwarteten Effekt hatten (dass die site_users-Tabelle durch das Plugin aktualisiert würde), oder was muss ich tun, um dies auf andere Weise zu erreichen?

Vielen Dank

Antwort

1

Hinweis Sie benötigen nur eine Migration addieren und die Felder der Benutzer-Tabelle erstellen, wenn Sie nur ein paar zusätzliche Felder hinzufügen müssen.

hinzufügen $this->table('site_users'); zu Ihrer neuen Tabelle initialisieren Methode und lassen CakePHP wissen Sie mit einem anderen Namen eine Tabelle verwenden werden (nicht ‚Benutzer‘)

Sieht aus wie Sie die Plugin-Konfigurationsüberschreibung in der falschen Reihenfolge geladen werden , versuchen Sie dies in Ihnen bootstrap.php

Configure::write('Users.config', ['users']); 
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]); 

Wie es hier dokumentiert https://github.com/CakeDC/users/blob/master/Docs/Documentation/Configuration.md

Oder Sie können diese Konfiguration nach Plugin Last auf diese Weise außer Kraft setzen file:

Configure::write('Users.table', 'SiteUsers'); 
+0

Danke dafür, jedoch hatte ich ursprünglich die Aufstellungsorteinrichtung gerade, als Sie (und die Dokumentation) beschrieben, und änderte die Reihenfolge dieser Befehle, um ein ähnliches Beispiel zu reflektieren, das ich fand. Es hat auch keinen Einfluss darauf, welche Tabelle das Plugin zu aktualisieren versucht. –

Verwandte Themen