Salut à tous, alors voila j'ai un petit problème sous Symfony avec le fosuserbundle (que j'utilise pour la première fois):
Quand je crée ou modifie des groupes, j'aimerais pouvoir ajouter ou supprimer des rôles.
J'ai essayé d'utiliser la méthode du tuto de winzou (Site du zero) ( Relation multiple : imbriquer un même formulaire plusieurs fois)
Le problème c'est que dans mon cas je n'ai pas d'entité Rôles ou de table dans la base, je veux juste remplir le champ rôles de la table users_groups de FOSUserbundle. Et je ne sait pas comment récupérer les rôles du groupe ou lui affecter des rôles que j'aurais définis
De plus j'ai une erreur avec ce que j'ai déja essayé:
Voici mon code:
mon GroupFormType:
le services.yml du bundle:
ma class groupes
Je pense avoir oublié quelque chose, mais je ne vois pas d'ou cela peut venir...
Une âme charitable pourrais-t-elle m'aider? =)
Quand je crée ou modifie des groupes, j'aimerais pouvoir ajouter ou supprimer des rôles.
J'ai essayé d'utiliser la méthode du tuto de winzou (Site du zero) ( Relation multiple : imbriquer un même formulaire plusieurs fois)
Le problème c'est que dans mon cas je n'ai pas d'entité Rôles ou de table dans la base, je veux juste remplir le champ rôles de la table users_groups de FOSUserbundle. Et je ne sait pas comment récupérer les rôles du groupe ou lui affecter des rôles que j'aurais définis
De plus j'ai une erreur avec ce que j'ai déja essayé:
" The form's view data is expected to be of type scalar, array or an instance of \ArrayAccess, but is an instance of class Acme\UserBundle\Entity\Group. You can avoid this error by setting the "data_class" option to "Acme\UserBundle\Entity\Group" or by adding a view transformer that transforms an instance of class Acme\UserBundle\Entity\Group to scalar, array or an instance of \ArrayAccess. "
Voici mon code:
mon GroupFormType:
<?php //<span>Acme\UserBundle\Form\Type\GroupFormType.php</span> namespace Acme\UserBundle\Form\Type; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use FOS\UserBundle\Form\Type\GroupFormType as BaseForm; class GroupFormType extends BaseForm { private $class; /** * @param string $class The Group class name */ public function __construct($class) { $this->class = $class; } public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); /* * Rappel : ** - 1er argument : nom du champ, ici « roles », car c'est le nom de l'attribut ** - 2e argument : type du champ, ici « collection » qui est une liste de quelque chose ** - 3e argument : tableau d'options du champ */ $builder->add('roles', 'collection', array('type' => 'text', 'allow_add' => true, 'allow_delete' => true)); } public function setDefaultOptions(OptionsResolverInterface $resolver) { parent::setDefaultOptions($resolver); } public function getName() { return 'Acme_user_group'; } }
le services.yml du bundle:
services: fos_user.group.form.type: class: Acme\UserBundle\Form\Type\GroupFormType arguments: [%fos_user.model.group.class%] tags: - { name: form.type, alias: acme_user_group }
ma class groupes
<?php namespace Acme\UserBundle\Entity; use FOS\UserBundle\Model\Group as BaseGroup; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="users_groups") */ class Group extends BaseGroup { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\generatedValue(strategy="AUTO") */ protected $id; }
Je pense avoir oublié quelque chose, mais je ne vois pas d'ou cela peut venir...
Une âme charitable pourrais-t-elle m'aider? =)