2012-03-04 9 views
3

私はSymfony 1.4を使用しており、複数のフォームバリデータを使用している問題があります。Symfony複数のポストバリデータ

フォームの一部については、電子メールアドレスが有効で一意であることを確認する必要があります。 ここで私はこれを使用しようとしているコードです:私の知る限り

$this->validatorSchema['email_address'] = new sfValidatorAnd(
    array(
     new sfValidatorEmail(), 
     new sfValidatorPropelUnique(array('model' => 'Users', 'column' => 'email_address') 
    ), 

)); 

が、これは動作するはずです。ただし、フォームを投稿すると、次のエラーメッセージが表示されます。

配列パラメータをclean()メソッドに渡す必要があります(このバリデータはポストバリデータとしてのみ使用できます)。

アイデアや提案はありますか?

答えて

5

ユニークなバリデーターは、post validatorとしてのみ使用できます。つまり、フィールドに直接適用することができます。mergePostValidatorを通じてスキーマに適用する必要があります。機能的にはこれはあなたが探しているのと同じ結果を生み出すでしょう。電子メールが有効であっても、既に存在する場合は検証エラーが発生しますが、両方が合格するとフォームが有効になります。

$this->validatorSchema['email_address'] = new sfValidatorEmail(); 
$this->mergePostValidator(new sfValidatorPropelUnique(array('model' => 'Users', 'column' => 'email_address')); 
+1

mergePostValidatorを使用していただきありがとうございます。私はsymfonyには比較的新しいので、用語のいくつかは科学的な病名のように私にとって外国のものです。私はあなたが提供したサンプルコードで、$ this-> validatorSchema-> mergePostValidator(..)を呼び出すと、私には未知のメソッドエラーが作成され、ソリューションは$ this-> mergePostValidator(..)になりました。 – Eric

+0

I mergePostvalidatorは、バリデータスキーマではなくフォーム自体で呼び出される必要があることを確認できます。 – luxerama

+0

@luxerama:corrected。 – prodigitalson

関連する問題