我在互联网上找不到真正的案例,因此决定写自己的问题。
我有一个创建Member对象的表单。该成员对象具有对应用程序对象的引用。两者都保存在2个不同的数据库中。
仅当我编辑并填写表单时,创建成员对象才是问题,我是否遇到错误->
“应用程序”类型的实体 传递给选择字段的内容必须进行管理。也许你忘记了 将其保存在实体管理器中
这是我的表格代码
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('membberName', null, array('label' => false))
->add('memberDescription', TextareaType::class, array('label' => false))
->add('memberVisible', null, array('label' => false))
->add('memberApp', EntityType::class, [
'label' => false,
'class' => Application::class,
'choice_label' => function (Application $application) {
return sprintf('(%d) %s', $application->getAppId(), $application->getAppurlUrl());
},
'choices' => $this->applicationRepository->getAll(),
])
->add('Save', SubmitType::class, [
'attr' => ['class' => 'create-button']
]);
}
我发现了很多有关此问题的案例,但没有一个可以帮助我。 仅当我在自己的数据库之外加载与另一个实体相关的实体时,才会遇到此问题。
总结:调用创建视图页面并按提交作品。 调用编辑视图会导致上述问题。
我是否需要定义或配置任何内容,以便我的表单可以正确加载?
答案 0 :(得分:0)
尝试为第二个数据库实体管理器的选项中的实体表单字段em
设置自定义memberApp
。
如文档中所述:https://symfony.com/doc/current/reference/forms/types/entity.html#em
em类型:字符串| Doctrine \ Common \ Persistence \ ObjectManager默认: 默认的实体管理器
如果指定,此实体管理器将用于加载选择 而不是默认的实体管理器。
另一种方法可能是为此字段设置['mapped' => false]
并使用控制器或服务中正确的数据库em手动处理刷新