我安装了一个自定义验证程序,用于检查生成的slug是否唯一。
现在我正在测试验证器,似乎验证器工作(表单不会被保留)但我没有收到错误消息...
class Unique extends Constraint
{
public $message = 'The value of "%property%" already exists.';
public $property;
public function getDefaultOption()
{
return 'property';
}
public function getRequiredOptions()
{
return array('property');
}
public function validatedBy()
{
return 'loc_article_validator_unique_alias';
}
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
}
表单错误通过twig中的{{form_rest(form)}}呈现
所以我发现了这个问题。 问题是,自定义约束错误无法在foreach上呈现。他们必须通过
进行渲染{{ form_errors(form) }}
我现在剩下的问题是:
1.。)如何像所有其他错误一样呈现自定义约束错误?
2.。)为什么扩展Constrain的Custom类需要CustomValidator服务的别名?
答案 0 :(得分:1)
通过这些线
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
您将约束视为类约束,这意味着错误将显示在整个表单的顶部,而不是在字段旁边。
尝试将其定义为属性约束
public function getTargets()
{
return self::PROPERTY_CONSTRAINT;
}
如果这没有帮助,请发布您的验证定义和生成表单的表单构建器代码。