Custom Validator не выводит сообщение об ошибке - PullRequest
2 голосов
/ 25 марта 2012

Я установил пользовательский валидатор, который проверяет, является ли созданный слаг уникальным.

Сейчас я тестирую валидатор, и кажется, что валидатор работает (форма не сохраняется), но я не проверяюполучить сообщение об ошибке ...

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;
}

}

Ошибки формы отображаются через {{form_rest (form)}} в ветке

Итак, я нашел проблему,Проблема заключалась в том, что ошибки пользовательских ограничений не могут быть обработаны через foreach.Они должны быть обработаны через

{{ form_errors(form) }}

Мои оставшиеся вопросы теперь:

1.) Как я могу отобразить ошибки пользовательского ограничения, как и все другие ошибки?

2.) Почему пользовательскому классу, расширяющему Constrain, требуется псевдоним службы CustomValidator?

1 Ответ

1 голос
/ 21 мая 2012

По этим строкам

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

Вы устанавливаете ограничение как ограничение класса, что означает, что ошибки будут отображаться поверх всей формы, а не рядом с полем.

Попробуйте определить его как ограничение свойства

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

Если это не поможет, опубликуйте определение проверки и код построителя формы, который генерирует форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...