我有2個實體 - 用戶和組。他們有多對多的關係,Group用於存儲用戶的角色。Symfony 2嵌入式表單集合多對多
我試圖通過增加集合,使用戶編輯表單,我希望能夠通過從下拉列表中選擇它來添加一個新的角色(僅限於什麼是已經在DB)
用戶類型。 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'
));
}
}
和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'
));
}
}
這顯示在基本的文本框的形式的作用,但如果我添加到表單中的條目,它會堅持級聯新耳鼻喉科進入組,如果我要編輯一個條目,它會更改底層的組數據。
我試圖使一個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'
));
}
}
添加字段作爲一個「實體」型,這顯示了正確的選擇框(但是默認值),我似乎無法綁定到UserType表單!
我希望表單所要做的就是修改用戶實體中的基礎'組'ArrayCollection。
有誰知道我該如何做到這一點?
這個答案幫了我一噸!謝謝! – jcbwlkr
非常感謝! –
非常有幫助。謝謝 – Rinat