0

私はSymfony1.4とDoctrineを使用しています。メールフィールドのあるモデルAがあります。Aの形式は、ユーザーが電子メールを正しく挿入する必要がある入力を表示します。しかし、誰もが知っているように、時々彼らはそれをしません。

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

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

ありがとう、

4

2 に答える 2

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")));
于 2011-01-11T21:31:13.097 に答える
0

間違いは、おそらくモデルにフィールドを追加することでした。フォームでのみ必要です。

于 2011-01-11T20:49:12.773 に答える