1

我想在将嵌入式表单字段保存到数据库之前对其进行验证。目前,如果表单字段为空,它将在数据库中保存一个空值。我允许空字段,但如果表单字段为空,我不想插入任何内容。

还有一个快速的问题,如何在验证/保存嵌入式表单字段之前更改字段值?

$this->form->getObject 在动作中起作用,但 $this->embeddedForm->getObject 说找不到对象

4

2 回答 2

1

我找到了一个非常简单的解决方案。解决方案是手动覆盖 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 。

我无法让验证器正常工作,这是一个同样干净的解决方案。

于 2011-01-07T00:49:42.303 回答
0

Symfony 为您提供了一系列进入表单/对象保存过程的钩子。您可以通过覆盖表单的 doSave() 或 processValues() 函数来使用空前/后验证覆盖空白值。

您可以在这里阅读更多信息:http ://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms#chapter_06_saving_object_forms

于 2011-01-05T09:57:38.043 回答