Extension de l'ensemble d'utilisateurs Sonata et ajout de nouveaux champs
Je suis l'extension de la Sonate de l'Utilisateur Bundle et la création de quelques champs supplémentaires dans la nouvelle entité user. Ces champs ne seront mis à jour au sein de la Sonate zone d'administration en vertu des utilisateurs de sorte qu'ils n'ont pas besoin d'être disponible dans le profil de modifier la forme. Je vais avoir des difficultés pour mettre à jour ces champs via la Sonate Gestionnaire des Utilisateurs et essayé plusieurs différentes façons d'étendre/mettre en œuvre cette catégorie dans l'Application\Sonate\UserBundle. Quelqu'un a rencontré ce avant et peut me donner un tuto ou étape par étape le processus de la façon la plus propre à étendre la nouvelle entité User?
source d'informationauteur Justin Griffith
Vous devez vous connecter pour publier un commentaire.
1. Créer un nouveau bundle
Quelque chose comme AcmeUserBundle. Créer et enregistrer comme vous le faites normalement.
2. Créer une nouvelle entité User
Puis créer un
User
etGroup
entité qui s'étendSonata\UserBundle\Entity\BaseUser
etSonata\UserBundle\Entity\BaseGroup
. Vous devez également ajouter la configuration de la clé primaire, par exemple:3. Configurer l'entité
ensuite, allez à votre
app/config/config.yml
de fichiers et la configuration de ces nouvelles entités:4. Remplacer le UserAdmin classe
Ensuite, vous devez créer un nouveau UserAdmin classe. Pour ce faire, il suffit de créer un nouveau
UserAdmin
classe à l'intérieur de votre bundle, étendreSonata\UserBundle\Admin\Model\UserAdmin
et de remplacer les méthodes comme ceci:5. Remplacer l'ancien UserAdmin classe
Ensuite, vous devez vous assurer Sonate utilise la nouvelle UserAdmin classe. Vous avez juste besoin de mettre le
sonata.user.admin.user.class
paramètre à votre nouvelle classe et vous êtes prêt!J'ai trouvé le numéro était un numéro de doctrine. Mon extension de faisceau a été d'utiliser le xml d'origine mappages de champs. J'ai supprimé ces fichiers et d'y revenir pour les annotations. Tout a fonctionné à merveille. J'espère que cela aide quelqu'un d'autre qui rencontrent le même problème.
C'est facile, mais le
SonataUserBundle
de la documentation est assez court. Fondamentalement, après avoir défini les deux faisceaux comme décrit ici et ici:Vous avez besoin pour créer une classe d'étendre la
Sonata\UserBundle\Entity\BaseUser
classe dansSonataUserBundle
. Notez que si vous surcharger le constructeur, vous avez encore doit appeler le parent constructeur de l'objet.Si vous le souhaitez, vous pouvez également remplacer la
Sonata\UserBundle\Entity\BaseGroup
objet d'une manière similaire.Ensuite, modifier votre
config.yml
pour correspondre à vos espaces de noms, à l'instar de ceVider le cache. Votre entités sera utilisé à la place de la intégrée de.