首先,关于可能的重复,我不得不说这不是一回事,因为他试图访问它并且我试图分配值。我之前看到过它并没有帮助我。
我尝试在显示表单之前设置实体字段数据,并且我尝试了几种模式,但没有一种模式适用于我,我真的不理解它。 我正在研究Symfony 4
这是带有选项"mapped" => false
->add('roleGroup', EntityType::class, array(
'label' => "Grupo que recibira los correos de validación como Administración",
'required' => false,
"mapped" => false,
'placeholder' => 'Elige el Grupo',
'class' => RoleGroup::class,
'label_attr' => array(
'class' => 'control-label'
),
'attr' => array(
'class' => 'form-control select',
)
))
然后在控制器中我尝试分配值,但没有成功:
$form["roleGroup"]->setData(21);
我也尝试过:
$form->get("roleGroup")->setData(21);
return $this->render('configuration/index.html.twig',
[
'id' => $id,
'title' => "General",
'partial' => "general.html.twig",
'form' => $form->createView(),
]);
有人可以告诉我发生了什么吗?
谢谢!
答案 0 :(得分:1)
由于表单字段的类型为EntityType::class
,因此当您尝试传递整数值时,预期数据应为RoleGroup::class
类型的对象。
因此,您需要获取实体并将其作为字段数据传递。假设21
是您实体的id
,它应该是您的控制器中的类似内容
$em = $this->get('doctrine.orm.entity_manager');
$entity = $em->getRepository(RoleGroup::class)->findOneBy(['id' => 21]);
$form->get('roleGroup')->setData($entity);
或者,您也可以直接在表单字段中将data
设置为默认值
->add('roleGroup', EntityType::class, array(
...
'data' => $entity
));