我在Symfony上重写旧的已弃用的REST API,问题是如何在Symfony表单上映射和验证具有不同名称的字段。
我有Symfony表单的示例,包含字段:
->add('receiverCity', TextType::class, ['constraints' => new NotBlank()])
->add('receiverCountry', TextType::class, ['constraints' => new NotBlank()])
->add('receiverPostCode', TextType::class, ['constraints' => new NotBlank()])
并且在来自请求的Controller中,我获得了具有不同名称的相同字段,如:
$data = ['city' => 'My city', 'country' => 'My country', 'postal' => 'My post code'];
然后我手动提交表单$ form-> submit($ data)。问题是在表单中映射和验证此字段的最佳方法是什么?我应该使用表单事件还是有更简单的方法来执行此操作?
答案 0 :(得分:4)
您可以使用property_path
选项。 (有关更多信息,请参阅Symfony documentation)。
你需要使用" old"字段名称作为表单字段名称,并将property_path
设置为对象中的实际字段名称:
->add('city', TextType::class,
[
'constraints' => new NotBlank(),
'property_path' => 'receiverCity'
]
)
->add('country', TextType::class,
[
'constraints' => new NotBlank(),
'property_path' => 'receiverCountry'
]
)
->add('postal', TextType::class,
[
'constraints' => new NotBlank(),
'property_path' => 'receiverPostCode'
]
)