Ich habe 2 Entitäten - Benutzer und Gruppe. Sie haben eine Viele-zu-Viele-Beziehung, und Gruppen werden verwendet, um die Rollen eines Benutzers zu speichern.Symfony 2 Embedded Form Collection Viele zu vielen
Ich versuche, einen Benutzer bearbeiten Form zu machen, indem eine Sammlung hinzufügen, möchte ich in der Lage sein, eine neue Rolle hinzufügen, indem sie aus einem Drop-Down (begrenzt auf, was bereits in der DB) Auswahl
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'
));
}
}
und 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'
));
}
}
Dies zeigt die Rollen in der Form, in grundlegenden Textfelder, aber wenn ich einen Eintrag in das Formular hinzufügen, wird es kaskadieren ein neues ent persistieren Wenn ich einen Eintrag bearbeiten würde, würden sich die zugrunde liegenden Gruppendaten ändern.
Ich versuchte, ein GroupSelectType.php machen:
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'
));
}
}
das Feld als „Einheit“ Typ Hinzufügen dieses zeigt das richtige Auswahlfeld (aber mit den Standardwerten) Ich kann es nicht an die zu binden scheinen UserType-Formular!
Alles, was ich möchte das Formular zu tun ist die zugrunde liegende "Gruppen" ArrayCollection in der Entität Benutzer ändern.
Weiß jemand, wie ich das erreichen kann?
Diese Antwort hat mir sehr geholfen! Vielen Dank! – jcbwlkr
Perfekter Dank! –
Sehr hilfreich. Vielen Dank – Rinat