为什么data_class会导致LogicException?

时间:2014-10-19 00:36:48

标签: symfony symfony-forms symfony-2.5

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

  

表单的视图数据应该是类Entity的一个实例,   但是是一个(n)字符串。您可以通过设置来避免此错误   " data_class" null选项或添加视图转换器   将(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);
    });
}

$entity data_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 ,则可以正常工作。

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

0 个答案:

没有答案