Я хочу создать форму анкеты. Когда я использую следующий код, я могу видеть только последний вопрос моей таблицы, содержащий 18 вопросов (и поле ответа).
Я не могу использовать коллекцию, потому что мой вопросник будет более сложным, некоторые вопросы с несколькими ответами, некоторые другие в true / false и т. Д. Я упростил код, чтобы исправить эту проблему в первую очередь.
//Get question array collection $questions = $questionnaire->getQuestions(); $formBuilderQuestionnaire = $this->createFormBuilder(); //Make a loop for each question foreach($questions as $question) { //Create an answer form $answer = new Answers($question, $evaluation); $formBuilder = $this->createFormBuilder($answer); //Add a answer text box with the question as label $formBuilder->add('answerText', 'textarea', array( 'required' => false, 'label' => $question->getQuestionText() )); $formBuilderQuestionnaire->add($formBuilder); } //Create the form $form = $formBuilderQuestionnaire->getForm(); return $form->createView(); }
Проблема решена, благодаря другу. Мне пришлось заменить createformBuilder
public function generateForm($questionnaire, $evaluation) { //Get question array collection $questions = $questionnaire->getQuestions(); $formBuilderQuestionnaire = $this->createFormBuilder(); $i = 0; //Make a loop for each question foreach($questions as $question) { //Create an answer form $answer = new Answers($question, $evaluation); $formBuilder = $this->get('form.factory')->createNamedBuilder($i, 'form', $answer); //Add a answer text box with the question as label $formBuilder->add('answerText' , 'textarea', array( 'required' => false, 'label' => $question->getQuestionText() )); $formBuilderQuestionnaire->add($formBuilder); $i++; } //Create the form $form = $formBuilderQuestionnaire->getForm(); return $form; }