Intereting Posts
Показать divs в зависимости от количества массивов Удалите расширение PHP, используя методы .htaccess (Содержит ссылки сока) Загрузка удаленной фотографии в загружаемую Как вызвать пакет из php, имеющий процедуру в oracle, используя драйверы oci? Устранение неполадок "ошибка синтаксического анализа, неожиданная ошибка"> " Каков наилучший способ сделать безгласное тестирование браузера с PHP в Linux (в частности, Ubuntu)? Ошибка 405 php get request Сортировка многомерного массива с использованием PHP Действительная архитектура для очереди сообщений и рабочей системы в PHP? Еореп (); «Удаленный доступ к файлу хоста не принят» в локальном файле? PHP Какой лучший способ получить первые 5 слов строки? Неустранимая ошибка: вызов неопределенной функции mysql_connect () в C: \ Apache \ htdocs \ test.php в строке 2 Выберите алгоритм изменения размера изображения PHP Как повторно использовать код для нескольких доменов? PHP – изменение текущего объекта в цикле foreach

symfony2 создает форму без класса сущности

Использование Symfony2.3.4.

Я пытаюсь создать форму без использования типа, это на самом деле очень маленькая форма, только два варианта, загружающих свои параметры из базы данных, пока это работает, то, что я не могу сделать, это получить данные формы (в контроллер), когда он отправлен. Я пытался следовать инструкциям здесь, но я не могу понять это правильно.

Вот мой код:

Контроллер: функция передачи данных в форму:

public function selectAction($id, $id_actpost){ $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('ActPostBundle:Edition')->find($id); $students = $em->getRepository('PersonBundle:Students')->findAll(); $students2 = $em->getRepository('PersonBundle:ForeignStudents')->findAll(); if (!$entity) { throw $this->createNotFoundException('Unable to find Edicion entity.'); } return $this->render('ActPostBundle:Edition:select.html.twig', array( 'entity' => $entity, 'id_actpost' => $id_actpost, 'students' => $students, 'foreignstudents' => $students2, )); } 

html фрагмент относительно самой формы:

  <form class="form-horizontal sf_admin_form_area" action="{{ path('edition_update_selected', { 'id': entity.id, 'id_actpost': id_actpost }) }}" method="post" enctype="multipart/form-data"> <div style="margin-left: 80px" class="row-fluid"> <div class="span12"> <select name="students" multiple="multiple"> {% for s in students %} <option {%if s in entity.students%}selected="selected"{%endif%}> {{s}}</option> {%endfor%} </select> </div> </div> <div class="row-fluid"> <select name="students2" multiple="multiple"> {% for s in students2 %} <option {%if s in entity.foreignstudents%}selected="selected" {%endif%}>{{s}}</option> {%endfor%} </select> </div> <div class="form-actions"> <button type="submit" class="btn btn-primary"> <i class="glyphicon-refresh"></i> {{'Update' | trans}}</button> <a class="btn" href="{{ path('edition', {'id_actpost' : id_actpost }) }}"> <i class="glyphicon-ban-circle"></i> {{'Cancel' | trans }} </a> </div> </form> 

и вот что я прочитал из ссылки, размещенной в начале: функция для получения представленных данных и обновления базы данных, хотя часть базы данных может остаться без внимания, пока мне не удастся получить данные из формы:

 public function update_selectedAction(Request $request, $id, $id_actpost) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('ActPostBundle:Edition')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find Edicion entity.'); } $defaultData = array('message' => 'Type here'); $editForm = $this->createFormBuilder($defaultData) ->add('students','choice') ->add('students2', 'choice') ->getForm(); $editForm->handleRequest($request); 

Я хотел бы знать, действительно ли то, что я читаю, то, что мне нужно, потому что, хотя я думаю, что это возможно, я ошибаюсь, поэтому любое понимание этого вопроса или даже любой другой способ сделать это будет действительно оценено.

Вы должны использовать конструктор форм Symfony для создания формы в вашем update_selectedAction() например

 public function update_selectedAction(Request $request, $id, $id_actpost) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('ActPostBundle:Edition')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find Edicion entity.'); } $defaultData = array('message' => 'Type here'); $form = $this->createFormBuilder($defaultData) ->add('students', 'entity',array('class' => 'PersonBundle:Students', 'property' => 'students','expanded'=>false,'multiple'=>false)) ->add('students2', 'entity',array('class' => 'PersonBundle:ForeignStudents', 'property' => 'foreignstudents','expanded'=>false,'multiple'=>false)) ->add('submit','submit') ->getForm(); if ($request->getMethod() == "POST") { $form->submit($request); if ($form->isValid()) { $postData = current($request->request->all()); var_dump($postData); /* All post data is here */ /* echo $postData['students']; */ /* echo $postData['students2']; */ /* * do you update stuff here * */ } } return $this->render('ActPostBundle:Edition:select.html.twig', array('form'=>$form->createView())); } 

В вашей ActPostBundle:Edition:select.html.twig т.е. ActPostBundle:Edition:select.html.twig вашу форму

 {{ form(form) }} 

Изменить комментарий

В вашем файле twig сделайте свою форму как

 {{ form_errors(form) }} {{ form_row(form.students) }} {{ form_row(form.students2) }} {{ form_row (form._token) }} <input type="submit"> /* your submit button */ 

Изменить комментарий 2

Если вы хотите поместить текст в атрибут value selectbox, вы можете использовать тип поля выбора

 $students = $em->getRepository('PersonBundle:Students')->findAll(); $students2 = $em->getRepository('PersonBundle:ForeignStudents')->findAll(); $studentsArray=array(); $students2Array=array(); foreach($students as $s){ $studentsArray[$s->getStudents()]=$s->getStudents(); } foreach($students2 as $s){ $students2Array[$s->getForeignstudents()]=$s->getForeignstudents(); /* here array key part will be the value of selectbox like $students2Array['your val to get in post data'] */ } $form = $this->createFormBuilder($defaultData) ->add('students', 'choice',array('choices' => $studentsArray,'expanded'=>false,'multiple'=>false)) ->add('students2', 'choice',array('choices' => $students2Array,'expanded'=>false,'multiple'=>false)) ->add('submit','submit') ->getForm();