2011-09-12 6 views
0

私はカスタムバリデーターを作成しましたが、使用したいときは実行されていないようです! カスタムバリデーター、フォームで使用すると実行されない

バリ:

フォームのconfigureメソッドで
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(), 
+0

でsfValidatorChoiceを使用します。コピー/貼り付けを使用していることを確認して、コードを共有するときは何も手で書き換えないでください。 – greg0ire

+0

完了!ありがとう!! – ProXamer

答えて

0

はあなたが実行sfValidatorBase :: doCleanメソッドをオーバーライドする必要があり、いくつか存在していないではありませんtrue/falseを返すのと同じように例外をスローします。任意のバリデータクラスを見てください。 sfValidatorString。しかし、あなたのケースでは、私は単にあなたが「sfTestUrlValidator」と「拡張」の間にスペースを逃したらしいワンの選択肢

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

私はdoClean()メソッドを使用する場合、私は "非url"文字列に答えると、この場合(doCleanで)例えばsfValidatorUrl機能を使用しません。それは間違っていますよね? – ProXamer

+0

とchoicevalidatorについては、リストされたコードは単なる例です。私のurlテストはいくつかのサーバで実行され、それらのいずれにも存在しない場合、それを挿入することはできません(後で例外を発生させます) – ProXamer

+0

私はdoCleanメソッドを使い、 'protected function doClean($ value){ $ value = parent :: doClean($ value);}を追加しました。 .... ' – ProXamer

関連する問題