可以在 Symfony 表单中为映射实体 fields/properties 提供自定义名称吗?

Possible to provide custom names for mapped entity fields/properties in a Symfony form?

我正在与 Symfony 3.4 合作。假设有一个具有某些属性的实体 Task,例如titlenote

在创建自定义 FormType 让用户创建新的 Task 实体时,每个实体 属性 通常使用其内部名称添加:

class TaskType extends AbstractMoneyControlBaseType { 
    public function getBlockPrefix() {
        return 'app_task';
    }

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('title', TextType::class, [
                'label' => 'The Title'
            ])        
            ->add('note', TextType::class, [
                'label' => 'A Note'
            ]);

        ...
    }
}

这将呈现名称为 app_task[title]app_task[note] 的表单字段。是否可以改用自定义名称?

当然,Symfony 使用识别属性并将输入映射到实体。但是,通过将字段映射到不同的名称来指定不同的名称应该不难,反之亦然通过将字段名称映射到实体 属性.

像这样:

$builder
    ->add('title', TextType::class, [
        'label' => 'The Title',
        'renderedName' => 'customTitleName',
    ])        
    ->add('note', TextType::class, [
        'label' => 'A Note'
        'renderedName' => 'customNoteName',
    ]);

OR

$builder
    ->add('customTitleName', TextType::class, [
        'label' => 'The Title',
        'mappedFieldName' => 'title',
    ])        
    ->add('customNoteName', TextType::class, [
        'label' => 'A Note'
        'mappedFieldName' => 'note',
    ]);

我找不到这样的解决方案。那么,是否可以使用自定义字段名称?

可能的解决方案是使用 property-path

$builder
    ->add('customTitleName', TextType::class, [
        'label' => 'The Title',
        'property_path' => 'title',
        'renderedName' => 'customTitleName',
    ])        
    ->add('note', TextType::class, [
        'label' => 'A Note'
        'renderedName' => 'customNoteName',
    ]);