我有一个问题,并不知道在哪里寻找它的原因。我有一个基于对象创建的推进形式。该对象不为空:
$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
?
答案 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();