我正在使用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();
}
如何使用自定义的文本框渲染每一行?
感谢您的帮助
答案 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。