0

我正在使用 Symfony 1.4 和 Doctrine。我有一个带有电子邮件字段的模型 A。A 的形式显示用户应正确插入电子邮件的输入。但众所周知,有时他们不这样做。

为了解决这个问题,我在模型(和表单)中插入了一个额外的字段,称为 *repeat_email* 以防止拼写错误。然后,在验证过程中,验证所有字段后,我使用全局验证器来比较两个字段的数据。

这可行,但我不想将电子邮件存储在数据库中两次(我不想要 *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 回答