2016-09-15 112 views
0

Symfony的版本3.1.3Symfony的3:如何在一個形式

我已經使用的實體,稱爲,你可以看到下面的控制器中創建一個下拉列表中,使用兩個選擇/下拉菜單中的兩個表中

public function studentAddClassAction($id, Request $request) 
{ 
    // get the student from the student table 
    $em  = $this->getDoctrine()->getManager(); 
    $user = $em->getRepository('PIE10Bundle:Users')->find($id); 

    // new class object and create the form 
    $classes= $em->getRepository('PIE10Bundle:Classes')->findAll(); 
    $form = $this->createForm(ClassType::class, $classes); 
    $form->handleRequest($request); 

    if($form->isSubmitted() && $form->isValid()) 
    { 
     // form submit operations 
    } 

    return $this->render(
         'PIE10Bundle:student:layout_student_addclass.html.twig', 
         array(
          'user' => $user, 
          'title' => 'Add Class', 
          'tables'=> 1, 
          'form' => $form->createView() 
         ) 
    ); 
} 

類類別低於

class ClassType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('classes', 
         EntityType::class, 
         array('class'  => 'PIE10Bundle:Classes', 
          'expanded' => false, 
          'multiple' => false,)); 
     $builder->add('Add Class', 
         SubmitType::class, 
         array('attr' => array('class' => 'btn btn-primary', 
               'style' => 'margin:15px 0;'))); 
    } 
} 

而這個工作正常,它提供了數據庫中的所有類。此外,我還有一個實體,稱爲用戶,它有一個叫列角色(DC2Type:數組),它有一個角色叫ROLE_PARENT,我可以使用下面的查詢

$query = $this->getDoctrine()->getEntityManager() 
        ->createQuery('SELECT u FROM PIE10Bundle:Users u WHERE u.roles LIKE :role') 
        ->setParameter('role', '%"ROLE_PARENT"%'); 
$users = $query->getResult(); 

我的問題檢索所有家長是如何將這些父母列表作爲選擇列表添加到studentAddClassAction控制器中。

請讓我知道這是需要的任何其他信息。

+0

是'User'和'Classes'通過多對多映射,並且要在這種形式只是爲了創建它們之間的聯繫?換句話說,將User分配給Class? –

+0

是的,我想爲用戶分配Class和Parents,他們將被存儲在一個名爲** students **的單獨表中,它有三列ClassID,ParentID和UserID。所以我想爲父母添加另一個選擇列表。 – mapmalith

回答

1

要有實體的自定義設置,你需要使用​​

一個選擇列表,所以它看起來像

$builder->add('parent', 
    EntityType::class, 
    array('class'  => 'PIE10Bundle:Users', 
     'expanded' => false, 
     'query_builder' => function (EntityRepository $er) { 
      return $er->createQueryBuilder('u') 
       ->where('u.roles LIKE :role') 
       ->setParameter('role', '%"ROLE_PARENT"%'); 
     }, 
     'multiple' => false 
)); 
+0

是的,這對我有用,而且我已經添加了''choice_label'\t =>'username''來避免選項中的列表用戶ID :)) – mapmalith