我对使用自定义属性路径定义的字段的错误映射有问题。我的情况如下:Symfony窗体:使用自定义属性路径的字段的错误映射
形式类型:
class MyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'aField',
TextType::class,
['property_path' => 'anObject.aProperty']
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([ 'data_class' => FormData::class ]);
}
}
表单数据类:
class FormData
{
/**
* @var MyObject
* @Assert\Valid
*/
public $anObject;
}
表单数据嵌套对象:
class MyObject
{
/**
* @var string
* @Assert\NotBlank
*/
public $aProperty;
// NOTE: this object has other properties that are not mapped by my form and I'm not listing here for the sake of brevity.
}
我的问题是以下情况:当违规发生在aProperty
时,违规路径为data.anObject.aProperty
,因此错误不会自动映射到aField
表单字段。我明白,从“vanilla”验证的角度来看,这是正确的,但我希望某种形式的翻译层可以根据property_path
属性调整映射,以便将表单错误附加到正确的字段。我尝试着与error_mapping
选项杂耍,但事实证明这不是它制造的。
我错在期待这种“默认”行为?你认为这可能被认为是一个错误,或者至少是一个值得请求的功能请求?有人需要处理类似的情况并找到解决方案吗?
什么是'aField'?它是否映射'anObject'或不?似乎并不清楚。 – DonCallisto
正如您在下面的类中看到的那样,'aField'映射到'anObject'的'aProperty',它本身就是表单data类的一个属性。 –
被映射...在哪里?我没有在你的类中看到任何'aField' :)这就是我的意思 – DonCallisto