2012-01-12 4 views
0

私はクライアント登録のためのフォームを作っています。このポストバリデーターを動作させることはできません。単純なポストバリデーターは仕事をしたくない

//POST-VALIDATORS 
    $this->validatorSchema->setPostValidator(
      new sfValidatorSchemaCompare(
         'email', sfValidatorSchemaCompare::EQUAL, 'reemail', 
         array(), 
         array('invalid' => "Les adresses mails sont différentes !") 
    )); 

    $this->validatorSchema->setPostValidator(
      new sfValidatorSchemaCompare(
         'password', sfValidatorSchemaCompare::EQUAL, 'repassword', 
         array(), 
         array('invalid' => "Les mots de passe sont différents !") 
    )); 

    $this->validatorSchema->setPostValidator(new sfValidatorCallback(
      array('callback' => array($this,'checkEmailAvailability')) 
    )); 

私のcustum機能を使用しているsfValidatorCallbackだけが動作しています。 2つの異なる値を使用してフォームを送信すると、パスワードと再分類フィールドの例としてフォームが正しく送信され、エラーは発生しません。

誰かがアイデアを得ましたか?

ご協力いただきありがとうございます。

答えて

1

私はあなたの問題は、あなたが使用するたびにsetPostValidatorあなたは(thatsのは、常に最後のものが働いていたWY)他人をオーバーライドしているexaclty、私のアドバイスはmergePostValidatorsを使用することです知っている、コードは次のようになります。

$this->mergePostValidator(
      new sfValidatorSchemaCompare(
         'email', sfValidatorSchemaCompare::EQUAL, 'reemail', 
         array(), 
         array('invalid' => "Les adresses mails sont différentes !") 
    )); 
$this->mergePostValidator(
     new sfValidatorSchemaCompare(
        'password', sfValidatorSchemaCompare::EQUAL, 'repassword', 
        array(), 
        array('invalid' => "Les mots de passe sont différents !") 
)); 

$this->mergePostValidator(new sfValidatorCallback(
     array('callback' => array($this,'checkEmailAvailability')) 
)); 

mergePostValidator関数は、各ポストバリデータを論理的な "And"オペランドで連結します。したがって、ポストバリデーターはすべてが真であればtrueを返します。

+0

ああ、それは変です!だから、私はこのような何かを行うことができると思う: – h1ghfive

+0

ます$ this-> validatorSchema-> setPostValidator(新しいsfValidatorAnd(配列( 新しいsfValidatorSchemaCompare( – h1ghfive

+0

投稿コードがコメントに吸うとにかくあなたの説明のためのおかげで多くのことを:)私が試してみました – h1ghfive

関連する問題