我有一种方法,验证某些输入的组合是否有效(例如,选择了老年人折扣选项,生日显示年龄高于n )。
/**
* @Assert\True(message="you are too young for this option")
*/
public function isElderlyOptionValid()
{
return
($this->getElderlyOption() && $this->getAgeFromBirthday() <= 60);
}
现在我想要为老年人折扣选项显示错误,而不是实体/表单的一般错误。所以我需要这样的东西:
/**
* @Assert\True(message="you are too young for this option", bindTo="elderlyOption")
*/
public function isElderlyOptionValid()
{
return
($this->getElderlyOption() && $this->getAgeFromBirthday() <= 60);
}
我曾经读过一次,这是可能的,但不能再找到这篇文章了。
答案 0 :(得分:1)
UniqueEntity有error_path并在UniqueEntityValidator中使用atPath
但我不认为可以更改所有验证器的路径。
您可以扩展此验证程序并添加atPath
功能,但
可能 this is what you're looking for 。
表单具有error_mapping
属性,您可以将错误“重定向”到字段。
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'error_mapping' => array(
'matchingCityAndZipCode' => 'city',
),
));
}