2011-01-11 6 views
0

私はSymfony 1.4とDoctrineを使っています。私は電子メールフィールドを持つモデルAを持っています。 Aの形式は、ユーザーが電子メールを正しく挿入するための入力を表示します。しかし誰もが知っているように、時々彼らはそれをしない。Symfonyフォームの繰り返しフィールドを何度か格納するのを避けるにはどうすればいいですか?

これを修正するために、スペルミスを防ぐために、* repeat_email *と呼ばれる追加のフィールドをモデル(およびフォーム)に挿入しました。次に、検証プロセスでは、すべてのフィールドを検証した後、グローバルバリデーターを使用して2つのフィールドのデータを比較します。

これは機能しますが、電子メールをデータベースに2回保存する必要はありません(* repeat_email *は不要です)。検証プロセスで使用するメカニズムはありますか?それをデータベースに格納するメカニズムはありませんか?

ありがとう、

答えて

2

モデルスキーマからrepeat_emailフィールドを削除し、次のようにフォームを設定:

//email widget and validator are configured in the base class 

    $this->widgetSchema['repeat_email'] = new sfWidgetFormInput(); 
    $this->validatorSchema['repeat_email'] = clone $this->validatorSchema['email']; 

    $this->widgetSchema->moveField('repeat_email', 'after', 'email'); 

    $this->mergePostValidator(new sfValidatorSchemaCompare('email', sfValidatorSchemaCompare::EQUAL, 'repeat_email', array(), array('invalid' => "Emails don't match"))); 
0

誤ってモデルに追加フィールドが追加されている可能性があります。あなたはフォームの中でそれを必要とします。

関連する問題