Symfony地图表单字段

时间:2017-08-21 13:18:43

标签: forms symfony symfony-forms

我在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)。问题是在表单中映射和验证此字段的最佳方法是什么?我应该使用表单事件还是有更简单的方法来执行此操作?

1 个答案:

答案 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'
    ]
)