Symfony2使用继承属性创建表单类型

Symfony2使用继承属性创建表单类型,symfony,Symfony,我试图创建一个具有继承属性的表单类型,我有一个实体(候选实体),它有两个属性(字符串dni和用户) 是否可以将user(user.username)的属性添加到候选表单中? 我想要这样的东西: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('dni', null, array_merge(array(

我试图创建一个具有继承属性的表单类型,我有一个实体(候选实体),它有两个属性(字符串dni和用户)

是否可以将user(user.username)的属性添加到候选表单中? 我想要这样的东西:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('dni', null, array_merge(array(
            'label' => 'form.dni',
            'translation_domain' => 'DroidersCandidateBundle',
        ), $this->mergeOptions))
        ->add('username', null, array_merge(array(
            'label' => 'form.username',
            'translation_domain' => 'SonataUserBundle'
        ), $this->mergeOptions))
        ;
    }

这种情况下的问题是绑定到表单的
实体
没有属性
用户名
。这是它的属性
用户
谁做的

因此,您需要告诉
表单
如何访问right属性。这是通过使用
property\u path
选项实现的这是它的文档

您可以在过滤器的类型中执行以下操作:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('dni', null, array_merge(array(
        'label' => 'form.dni',
        'translation_domain' => 'DroidersCandidateBundle',
    ), $this->mergeOptions))
    ->add('username', null, array_merge(array(
        'label' => 'form.username',
        'property_path' => 'user.username',
        'translation_domain' => 'SonataUserBundle'
    ), $this->mergeOptions))
    ;
}

property\u path
选项功能非常强大。它将接受
PropertyAccess
组件执行的任何路径。阅读它的文档。

您要做的是创建一个处理用户名的UserFormType,并将其嵌入主表单中。是的,我解决了嵌入表单的问题,但我看起来像FyodorX的答案,但这个答案对我不起作用。谢谢,我看起来像那样,但我尝试了这个,但对我不起作用,这是错误:类型为“object或array”、“NULL”的预期参数given您可以发布完整的异常消息吗?这是完整的异常消息:类型为“object或array”的参数应为“NULL”,给定500个内部服务器错误-UnexpectedTypeException可能意味着您的候选对象没有与之关联的用户对象。是的,可能就是这样。如果您找不到问题,请发布另一个问题,我们将尽力帮助您。