自定义验证器不输出错误消息

时间:2012-03-25 10:13:08

标签: symfony validation

我安装了一个自定义验证程序,用于检查生成的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服务的别名?

1 个答案:

答案 0 :(得分:1)

通过这些线

public function getTargets()
{
    return self::CLASS_CONSTRAINT;
}

您将约束视为类约束,这意味着错误将显示在整个表单的顶部,而不是在字段旁边。

尝试将其定义为属性约束

public function getTargets()
{
    return self::PROPERTY_CONSTRAINT;
}

如果这没有帮助,请发布您的验证定义和生成表单的表单构建器代码。