2016-09-15 4 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() 
         ) 
    ); 
} 

и ClassType ниже

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' отображается на ManyToMany и вы хотите в эта форма только для того, чтобы создать связь между ними? Другими словами, назначьте пользователя классу? –

+0

Да Я хочу назначить Класса и Родителей пользователю, и они будут сохранены в отдельной таблице, называемой ** students **, она имеет три столбца ClassID, ParentID и UserID. Поэтому я хочу добавить еще один список вариантов для родителей. – mapmalith

ответ

1

Чтобы иметь собственный набор объектов в виде списка выбора, необходимо использовать a query_builder option

Так это будет выглядеть

$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

Да, это работает для меня, а также я добавил «select_label» \t => «имя пользователя», чтобы избежать идентификатора пользователя в параметрах :)) – mapmalith

 Смежные вопросы

  • Нет связанных вопросов^_^