2015-09-07 50 views
-2

我使用的是FOSUserBundle组。Symfony2 FOSUserbundle将用户添加到组

现在我想向组添加到我的用户(添加新时)

我试图加载组到我的形式,但失败了。

下面的形式:

$builder 
     ->add('enabled','checkbox',array(
       'required' => false)) 
     ->add('locked','checkbox',array(
       'required' => false)) 
     ->add('username','text',array(
       'required' => true)) 
     ->add('email','email',array(
       'required' => true)) 
     ->add('password','password',array(
       'required' => true)) 
     ->add('roles', 'choice', array(
        'choices' => array('ROLE_ADMIN' => 'Admin', 'ROLE_USER' => 'Benutzer'), 
        'required' => true, 
        'multiple' => true 
       )) 
     ->add('groups', 'choice',array(
      'choices' => $this->getGroups(), 
      'multiple' => true 
     )) 
     ->add('save','submit') 
     ; 

} 

而且我想

$builder 
     ->add('enabled','checkbox',array(
       'required' => false)) 
     ->add('locked','checkbox',array(
       'required' => false)) 
     ->add('username','text',array(
       'required' => true)) 
     ->add('email','email',array(
       'required' => true)) 
     ->add('password','password',array(
       'required' => true)) 
     ->add('roles', 'choice', array(
        'choices' => array('ROLE_ADMIN' => 'Admin', 'ROLE_USER' => 'Benutzer'), 
        'required' => true, 
        'multiple' => true 
       )) 
     ->add('groups', 'collection', array(
       'type' => 'choice', 
     )) 
     ->add('save','submit') 
     ; 

感谢您的帮助:)

回答

0

您是否尝试过创建GroupType和实例收集这种类型的?

->add('groups', 'collection', array(
      'type' => new Name\Space\To\GroupType(), 
    )) 

例如,您的GroupType可能看起来像下面的代码。注意它映射到组实体。

<?php 

namespace Name\Space\To\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class GroupType extends AbstractType 
{ 
    public $group; 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('group', 'hidden', array(
      'error_bubbling' => false, 
      'required' => false, 
     )); 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'Name\Space\To\Entity\Group', 
     )); 
    } 

    public function getName() 
    { 
     return 'namespaceto_grouptype'; 
    } 
} 
1

我现在得到与输出:

->add('groups','entity',array(
        'class' => 'UniteUserBundle:usergroup' , 
        'property' => 'name' , 
        'multiple' => true , 
     )) 

不是下一个问题......这不坚持到我的表“fos_user_user_group” :(

+0

马克回答是正确的回答。 – ooXei1sh