Пользовательский валидатор, не выполняется при использовании в форме - PullRequest
0 голосов
/ 12 сентября 2011

Я создал собственный валидатор, но когда я хочу его использовать, кажется, что он никогда не выполняется!

валидатор:

class sfTestUrlValidator extends sfValidatorUrl {

    public function initialize($context, $parameters = null) {

        // Initialize parent
        parent::initialize($context);
    }

    public function execute(&$value, &$error) {


        if($value == "http://www.librosweb.es/")
        {
            //$error = "noooooooooooooo";
            return true;
        }

        else            return false;

    }

}

в методе настройки формы, я делаю так:

public function configure() { 
 .....
....
 'url' => new sfTestUrlValidator(),  

1 Ответ

0 голосов
/ 12 сентября 2011

Вам необходимо переопределить метод sfValidatorBase :: doClean, а не какой-нибудь несуществующий метод execute, и выдать исключение для возврата true / false.Посмотрите на любой класс валидатора, например, sfValidatorString.Однако в вашем случае я бы просто использовал sfValidatorChoice с одним выбором

public function configure() 
{ 
 'url' => new sfValidatorChoice(array('choices' => array(
   'your.website.url',
 )));
}
...