Symfony 4地图禁用不起作用

时间:2018-06-21 11:26:56

标签: php symfony symfony-forms symfony4

我试图将两个不同的实体(雇员和承包商)放在一个选择框中(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。因此,如果您能帮助我解决这个奇怪的问题,我将非常高兴。

亲切的问候

0 个答案:

没有答案