我有一个实体Question
和表单类型,用于编辑问题QuestionType
。我可以成功编辑一个问题。现在我创建一个用于编辑所有问题的链接。
我想以一种形式编辑所有问题,我该如何处理?我尝试使用集合,但我不知道如何在表单集合中映射单个问题,我不确定这是否是正确的方法。
我的QuestionType
看起来像:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$categories = $this->entityManager->getRepository('MyAppBundle:QuestionCategory')->findByIsActive(true);
$builder->add('category', 'entity', array(
'class' => 'MyAppBundle:QuestionCategory',
'choices' => $categories,
'label' => 'category',
'translation_domain' => 'messages',
'multiple' => false,
'empty_value' => 'msg.pleaseSelect',
'expanded' => false))
->add('translations', 'a2lix_translations', array(
'fields' => array(
'text' => array(
'field_type' => 'textarea',
'label' => 'hintText',
'attr' => array('class' => 'rte')
),
'explanation' => array(
'field_type' => 'textarea',
'label' => 'title',
'attr' => array('class' => '')
)
)
));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\AppBundle\Entity\Question',
));
}
我的控制器采取行动编辑所有问题,如下所示:
$em = $this->getDoctrine()->getManager();
$questions = $em->getRepository('MyAppBundle:Question')->findAll();
/**
* -- Here is my problem , how can i my $questions into form? ---
**/
$form = $this->createFormBuilder()
->add('questions', 'collection', array(
'type' => new QuestionType() ,
'allow_add' => false,
'allow_delete' => false,
'label' => false)
)
->add('save', 'submit', array('label' => 'Create'))
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
}
return $this->render('MyAppBundle:Question:editAllQuestions.html.twig', array("form" => $form->createView()));
有人提示或接近吗?
答案 0 :(得分:0)
您正走在正确的轨道上,您可能想要做的是:
$form->setData(array('questions' => $yourQuestionArray));
在->getForm()
之后但在->handleRequest($request)
之前。
或者您可以将其作为选项传递给createFormBuilder()
,如下所示:
$form = $this->createFormBuilder(array('questions' => $yourQuestionArray))
->add(...)
他们都做同样的事情。
通常,当您创建表单类(它看起来像您使用QuestionType
时所做的那样)时,您提供了一个data_class
配置选项(see documentation)来定义什么表格用作模型。
你在控制器中所做的是创造一种匿名的#34;没有关联数据类(documentation的表单,这看起来就像您在控制器中所做的那样)。在这种情况下,它的数据是一个数组(类似地,如果你调用$form->getData()
,你得到一个数组)。