2010-01-23 4 views
3

Я не могу видеть, что я могу делать неправильно со следующей проверкой формы Symfony 1.4. В принципе, все, что я просто хочу, - это учитывать все четыре условия (требуется, минимальная длина, максимальная длина, регулярное выражение). Он фактически РАБОТАЕТ, но для «обязательного» условия он не отображает мое пользовательское сообщение об ошибке и вместо этого просто говорит «Требуется». Есть ли способ получить сообщение об ошибке MY?Проблема с подтверждением формы Symfony

'username' => new sfValidatorAnd(array(
    new sfValidatorString(
     array('required' => true, 'min_length' => 4, 'max_length' => 20), 
     array('required' => 'Please enter a username.', 'min_length' => 'Your username must have at least 4 characters.', 'max_length' => 'Your username cannot be longer than 20 characters.') 
     ), 
    new sfValidatorRegex(
     array('pattern' => '/^[A-z0-9]*$/i'), 
     array('invalid' => 'Your username can only have letters (A-Z) or numbers (0-9).') 
     ), 
)), 

Еще одна вещь, если я удалю валидатор Regex и просто превратить его в обычный однострочного Струнный валидатор, мое собственное сообщение об ошибке действительно показывает !?

Кто-нибудь?

Заранее спасибо.

ответ

6

Я заметил тот же вопрос около двух недель назад и нашли решение - просто переместить сообщение для sfValidatorAnd декларации:

'username' => new sfValidatorAnd(array(
    new sfValidatorString(
     array('required' => true, 'min_length' => 4, 'max_length' => 20), 
     array('min_length' => 'Your username must have at least 4 characters.', 'max_length' => 'Your username cannot be longer than 20 characters.') 
     ), 
    new sfValidatorRegex(
     array('pattern' => '/^[A-z0-9]*$/i'), 
     array('invalid' => 'Your username can only have letters (A-Z) or numbers (0-9).') 
     ), 
), array(), array('required' => 'Please enter a username.')), 

Это помогло мне, я надеюсь, что это поможет вам тоже.

+0

Darmen, спасибо большое! Получил это работать с вашим решением после того, как потратил слишком много времени, пытаясь понять это. Ваш код выше дал мне ошибку, поэтому я заменил «NULL» на «array()», который очищает ошибку ... что также означает, что первое обязательное предложение в sfValidatorString может быть удалено. Еще раз спасибо. – Tom

+0

@ Тома, пожалуйста. Я исправил ответ для пользователей, у которых будет такая же проблема в будущем. – Darmen

+0

Не уверен, что вы сделали это намеренно, но [A-z0-9] будет соответствовать символам, которые вам, вероятно, не нужны (между 'Z' и 'a' are '[', '\', ']', '^ ',' _ '). Случайно пробовал один из них и удивился. – Tool

Смежные вопросы