Ho 2 entità - Utente e Gruppo. Hanno una relazione molti-a-molti e Group è utilizzato per memorizzare i ruoli di un utente.Symfony 2 Embedded Form Collection Many to Many
Sto cercando di fare un modulo di modifica per l'utente con l'aggiunta di una collezione, voglio essere in grado di aggiungere un nuovo ruolo selezionandola da un elenco a discesa (limitato a ciò che è già nel DB)
UserType. php:
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username')
->add('email')
->add('forename')
->add('surname')
->add('isActive')
->add('joinDate', 'date', array('input' => 'datetime', 'format' => 'dd-MM-yyyy'))
->add('lastActive', 'date', array('input' => 'datetime', 'format' => 'dd-MM-yyyy'))
->add('groups', 'collection', array(
'type' => new GroupType(),
'allow_add' => true,
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Sfox\CoreBundle\Entity\User'
));
}
}
e GroupType.php:
class GroupType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('role');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
"data_class" => 'Sfox\CoreBundle\Entity\Group'
));
}
}
Questo visualizza i ruoli nella forma in caselle di testo di base, ma se aggiungo una voce al modulo, sarà cascata persisterà un nuovo ent ry nei gruppi e se dovessi modificare una voce, cambierebbe i dati di gruppo sottostanti.
provai a fare un GroupSelectType.php:
class GroupSelectType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('role', 'entity', array('class'=>'SfoxCoreBundle:Group', 'property'=>'name'));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
"data_class" => 'Sfox\CoreBundle\Entity\Group'
));
}
}
Aggiunta del campo come un tipo "entità", visualizza la casella di selezione corretta (ma con i valori di default) smusso sembro associarlo alla Modulo UserType!
Tutto quello che voglio che il modulo faccia è modificare l'ArrayCollection "gruppi" sottostante nell'entità Utente.
Qualcuno sa come posso ottenere questo?
Questa risposta mi ha aiutato tantissimo! Grazie! – jcbwlkr
Perfetto grazie! –
Molto utile. Grazie – Rinat