2015-09-06 66 views
0

我有一個問題/理解問題。Symfony2 Formbuilder的另一個實體

我有3分貝表 用戶,用戶組和user2usergroup

外國字段: user.id => user2usergroup.user_id user2usergroup.group_id => usergroup.id

所以現在我想要生成並編輯我的用戶對象,並將其關聯到我的formbuilder。

我嘗試了一些想法並尋求幫助。

不是這是acutal狀態:

控制器:

/** 
* creates user form 
* @param users $entity 
* @param string $sUrl 
* @return Form 
*/ 
public function createUserForm(users $entity, $sUrl){ 
    $form = $this->createForm(new userType(), $entity, array(
     'action' => $this->generateUrl($sUrl), 
     'method' => 'POST', 
     'groups' => $this->getUserGroups() 
    )); 
    return $form; 
} 

formbuilder

/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options){ 
    $groups = $options['groups']; 

    $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','entity',array(
      'class' => 'UniteUserBundle:usergroup', 
      'query_builder' => function(EntityRepository $er){ 
        return $er->findAll(); 
       }, 

     )) 
     ->add('save','submit') 
     ; 

} 

也許你可以幫我瞭解 - 如何讓所有組的形式 - 如何編輯用戶並查看他在哪個組(編輯視圖) - 我如何堅持我選擇的組ected在用戶的形式向user2usergroup

非常感謝我的朋友=)

回答

0

若要顯示用戶所屬的組並不難:

{% for usergroup in entity.getUserGroups() %} 
    <li>{{ usergroup.name }}</li> 
{% endfor %} 

要在用戶編輯表單比較複雜,因爲您正在編輯一個用戶,但該用戶可以位於零個,一個或多個組中。這意味着列表中的每個組都可以被編輯和刪除,並且您可以添加一個新組。您可以使用Collection field type。在this article中,您可以逐步閱讀如何使用它。

+0

嘿再次,我想編輯和添加與另一種形式的組。我只想添加一個用戶,並向他添加組(選擇此組)。比我想在表user2usergroup添加連接。另一個問題,我是如何獲得用戶2組的連接。 ======我錯了嗎?我應該只是將角色作爲數組添加到數據庫用戶?並且不把它寫到用戶和組之間所有連接的額外表中? – cRsakaWolf

+0

呃第一件事第一。角色與組織無關。這是完全不同的事情。對於組和用戶之間的關係,您可以選擇manyToMany關係。 Doctine能夠自動創建並填充聯接表。看到這個例子:http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#many-to-many-bidirectional並且不要忘記在註釋中@之後插入ORM \。 manyToMany會說每個用戶可以屬於多個組,每個組可以有多個用戶。不要將數組存儲到數據庫中。 –

+0

對不起,我的意思是團體不是角色。我現在明白了。我正在使用FOSUserBundle。現在我遇到了這個問題,當我添加和編輯用戶時,如何將組持久保存到用戶。 Thansk爲你提供幫助:) – cRsakaWolf