有没有办法在 Symfony2 中重命名表单中的字段?

Is there a way to rename a field in a form in Symfony2?

我正在使用 symfony2,我想知道是否可以重命名表单中的字段。

我的意思是...假设我有一个实体

class MyEntity{
    private $name 
    //more code
}

我为此实体创建了一个类型:

class MyEntityType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\MyEntity'
        ));
    }

    public function getName()
    {
        return 'entity';
    }
}

有没有办法重命名表单中的字段 name 但映射到 name 属性有效。类似于:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('MySuperName', null, array("mapping" => "name"))
            ;
    }

因此表单参数名称变为 entity[MySuperName] 而不是 entity[name] 但在实体上填写 name 属性?

使用property_path:

$builder
    ->add('MySuperName', null, array('property_path' => 'name'))

另一种选择是将 get/set 别名添加到您的 name 字段:

public function getMySuperName()
{
    return $this->name;
}

public function setMySuperName($mySuperName)
{
    $this->name = $mySuperName;

    return $this;
}