1

我有一个表单类型(field_type),它扩展了文本并有一个data_class。通过事件侦听器将实体实例传递给表单会导致LogicException

表单的视图数据应该是 Entity 类的一个实例,但它是一个 (n) 字符串。您可以通过将“data_class”选项设置为 null 或添加将 a(n) 字符串转换为实体实例的视图转换器来避免此错误。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('field', 'field_type', $opts);

    $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use($options)
    {
        ...
        $form = $event->getForm();
        $form->get('field')->setData($entity);
    });
}

$entitydata_class的一个实例。表单类型也有一个视图数据转换器。

字段类型:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->addViewTransformer($this->viewTransformer, true);
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Entity',
        'invalid_message' => 'The given id is invalid!',
        'required' => true
    ));
}

public function getParent()
{
    return 'text';
}

除了data_class的一部分外,一切正常。如果我删除data_class它可以工作。

为什么我需要删除这部分?

4

0 回答 0