我不希望表单中的空电子邮件字段触发 Doctrine_Validator_Exception。但是,自Doctrine_Validator_Email使用以来 “is_null()”检查空(不存在)值(以及POST ['email']包含空字符串),确实如此。
这是对的吗?有一个简单的方法吗?
当尝试将列设置为唯一时,这也会产生影响(尝试 在列中存储第二个空字符串会触发验证器)。
我错过了什么?
提前致谢, Erland Wiencke
(Symfony 1.4.1 / Doctrine 1.2)
答案 0 :(得分:1)
我在Doctrine 1.2应用程序中遇到了同样的问题。在我的情况下,修复程序最终将此变通方法添加到记录的merge()
方法:
$this->email = trim($this->email);
if ($this->email == '') {
$this->email = null;
}
答案 1 :(得分:0)
有几种方法,未经测试,但似乎全部或分开工作:
1)$this->validatorSchema['email'] = null;
或
2)$this->validatorSchema['email'] = sfValidatorPass();
或
3)$this->validatorSchema->setOption('allow_extra_fields', true);
或
4)只需将required
属性设置为false
:
$this->widgetSchema['email'] = sfWidgetFormInputText(array('required' => false));