用类显示表单行的很多行

时间:2016-03-28 00:03:14

标签: php symfony doctrine twig

我正在使用Symfony2构建一个网站,现在我需要创建一个大问卷。

为此,我创建了2个表:问题和答案(我有用户)

我在问题表中创建了所有问题,当用户回答问题时,我在表格中创建了一行。

我的问题是,我实际上是使用form_rest(form)显示表单而且......这非常难看! :)

我想对它应用一些css ...因为我有很多问题(可能在30到60之间),我不能做{{ form_widget(form.row, { 'attr': {'class': 'form-control'} }) }}

这是我的代码:

for ($i=0; $i < count($questions); $i++) {

            $answer = null;
            for ($j=0; $j < count($answers); $j++) { 

                if ($answers[$j]->getQuestion() == $questions[$i]) {
                    $answer = $answers[$j];
                    break;
                }
            }

            $tmpForm->add($questions[$i]->getId(), TextType::class, array(
                'required' => false,
                'label' => $questions[$i]->getQuestion(),
                'data' => ($answer != null ? $answer->getAnswer() : ''))
            );
        }

        $form = $tmpForm->getForm();

        if ($request->isMethod('POST')) {

            $form->handleRequest($request);
            $data = $form->getData();

            $em = $this->getDoctrine()->getManager();

            for ($i=0; $i < count($questions); $i++) { 

                $value = $data[$questions[$i]->getId()];

                if ($value == null)
                    continue;

                $ans = $answerRepository->findOneBy(array('question' => $questions[$i]));

                if ($ans != null && $ans->getAnswer() != $value) {

                    $ans->setAnswer($value);
                    $ans->setUpdatedOn(new \Datetime());
                }
                else if ($ans == null) {

                    $ans = new Answer();

                    $ans->setAnswer($value);
                    $ans->setQuestion($questions[$i]);
                    $ans->setCreatedOn(new \Datetime());
                    $ans->setUpdatedOn(new \Datetime());

                    $em->persist($ans);
                }
            }
            $em->flush();
        }

如何使用自定义的文本框渲染每一行?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

FormBuilder中设置CSS类:

$tmpForm->add(
    $questions[$i]->getId(),
    TextType::class,
    array(
        'required' => false,
        'label' => $questions[$i]->getQuestion(),
        'data' => ($answer != null ? $answer->getAnswer() : ''),
        'attr' => array('class' => 'form-control')
    )
);

如果您需要更多自定义输入,我建议form rendering