我试图将两个不同的实体(雇员和承包商)放在一个选择框中(EntityType)。因此,我创建了一个名为Receiver的未映射实体,该实体将所有已加载的实体放入一个集合中。
调试时一切正常,但是一旦创建了表单,就会出现以下异常:
Class "App\Receiver\Receiver" seems not to be a managed Doctrine entity. Did you forget to map it?
它确实不是受管学说的实体,因为它仅应存在于代码中。所以在我的类型中,我添加了mapped => false
选项,但是它仍然给我同样的例外。
以下是一些代码:
OrderController.php,用于构建整体表单并创建集合类型
->add('orderNotes', CollectionType::class, [
'entry_type' => NotesType::class,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false,
'required' => false,
'label' => false,
'mapped' => false
])
这是NotesType表单
public function buildForm(FormBuilderInterface $builder, array $options)
{
$options['mapped'] = false;
$data = array_merge($data, Receiver::loadData($this->entityManager->getRepository("App:Contractor")->findAll(), "name", "id"));
$data = array_merge($data, Receiver::loadData($this->entityManager->getRepository("App:Employee")->findAll(), "name", "id"));
$builder
->add('body', TextareaType::class, ['attr' => ['class' => 'form-control']])
->add('receiver', EntityType::class, [
'class' => Receiver::class,
'data' => $data,
'choice_label' => 'name',
'choice_value' => "value",
'placeholder' => '- Selecteer -',
'required' => false,
'mapped' => false,
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => WorkorderNote::class,
'mapped' => false,
]);
parent::configureOptions($resolver);
}
因此,在我所知道的所有地方,我都将mapped
更改为false
。因此,如果您能帮助我解决这个奇怪的问题,我将非常高兴。
亲切的问候