Symfony表单:保存后显示旧值

时间:2011-08-26 08:57:23

标签: php forms symfony1

我有一个包含许多复选框的symfony表单:

    $this->form = new SocialSettingsForm($user);

    if ($request->isMethod(sfRequest::POST)) {
      $this->form->bind($request->getParameter('social'));
      if ($this->form->isValid()) {
        $this->form->save();
        $this->success = true;
      }
    }

问题如下:保存表单后,复选框很奇怪

如果用户选中了一个,则在保存后会显示已检查(正常行为) 但如果用户取消选中一个,则在保存后它仍将显示为已检查。

我在表单值上做了一个var_dump,未选中的复选框有一个NULL值,所以我没有 明白为什么他们仍然被检查。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果使用布尔/整数字段来保存复选框值,请使用sfValidatorBoolean作为复选框。它还将输入值转换为有效的布尔值。因此null将转换为0并保存在数据库中。

使用变通方法进行更新

在不起作用的旧版本中,您可以在复选框之前添加隐藏输入,其名称与复选框和值0相同。如果未选中该复选框,则将发送隐藏的输入值,否则将发送复选框值。

相关问题