我想在将嵌入式表单字段保存到数据库之前对其进行验证。目前,如果表单字段为空,它将在数据库中保存一个空值。我允许空字段,但如果表单字段为空,我不想插入任何内容。
还有一个快速的问题,如何在验证/保存嵌入式表单字段之前更改字段值?
$this->form->getObject 在动作中起作用,但 $this->embeddedForm->getObject 说找不到对象
我想在将嵌入式表单字段保存到数据库之前对其进行验证。目前,如果表单字段为空,它将在数据库中保存一个空值。我允许空字段,但如果表单字段为空,我不想插入任何内容。
还有一个快速的问题,如何在验证/保存嵌入式表单字段之前更改字段值?
$this->form->getObject 在动作中起作用,但 $this->embeddedForm->getObject 说找不到对象
我找到了一个非常简单的解决方案。解决方案是手动覆盖 Form 的模型类 save() 方法。
class SomeUserClass extends myUser {
public function save(Doctrine_Connection $conn = null)
{
$this->setFirstName(trim($this->getFirstName()));
if($this->getFirstName())
{
return parent::save();
}else
{
return null;
}
}
}
在此示例中,我正在检查名字字段是否为空白。如果不是,则保存表单。如果它是空的,那么我们不会在表单上调用 save 。
我无法让验证器正常工作,这是一个同样干净的解决方案。
Symfony 为您提供了一系列进入表单/对象保存过程的钩子。您可以通过覆盖表单的 doSave() 或 processValues() 函数来使用空前/后验证覆盖空白值。
您可以在这里阅读更多信息:http ://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms#chapter_06_saving_object_forms