Symfony2 创建具有继承属性的表单类型

问题描述 投票:0回答:1

我正在尝试创建一种具有继承属性的表单类型,我有一个实体(候选人)具有两个属性(字符串 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))
        ;
    }
php symfony
1个回答
0
投票

本例中的问题是绑定到表单的

Entity
没有属性
username
。这是它的财产
user
所做的。

因此,您需要告诉

Form
如何访问正确的属性。这是通过使用
property_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_path
选项非常强大。它将接受
PropertyAccess
组件所做的任何路径。请阅读其文档此处

© www.soinside.com 2019 - 2024. All rights reserved.