在symfony中保存推进形式:不正确的对象

时间:2011-07-20 11:21:05

标签: symfony1 propel

我有一个问题,并不知道在哪里寻找它的原因。我有一个基于对象创建的推进形式。该对象不为空:

$form = ModelNameForm($modelObject);

然后我与请求数据绑定:

$form->bind(
  $request->getParameter($form->getName()), 
  $request->getFiles($form->getName())
);

验证

$form->isValid();

最后保存:

$result = $form->save();

问题是绑定后$form->getObject()返回初始对象,尽管$request->getParameter($form->getName())包含正确的值。更有趣的是,在$form->save()之后$form->getObject()获得正确的值。它的原因可能在代码中,但我不知道在哪里寻找它。在什么情况下,表单对象可能在绑定后包含旧数据,但在保存后显示新的var_dump

2 个答案:

答案 0 :(得分:3)

这是sfForm的预期行为。当您将受污染的值绑定到表单时,在保存表单之前,其包含的对象将不会知道有关这些新值的任何信息。绑定允许您验证表单,如果验证通过,则通过调用$ form-> save()将这些新值传递给对象。我建议在这里阅读symfony 1.4表格指南:http://www.symfony-project.org/forms/1_4/en/

答案 1 :(得分:1)

我无法解释为什么(我使用symfony几个星期),但我有同样的问题,我修复它:

$result = $form->save();
$result->save();