我有一个包含许多复选框的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值,所以我没有 明白为什么他们仍然被检查。
感谢您的帮助。
答案 0 :(得分:1)
如果使用布尔/整数字段来保存复选框值,请使用sfValidatorBoolean作为复选框。它还将输入值转换为有效的布尔值。因此null将转换为0并保存在数据库中。
使用变通方法进行更新
在不起作用的旧版本中,您可以在复选框之前添加隐藏输入,其名称与复选框和值0相同。如果未选中该复选框,则将发送隐藏的输入值,否则将发送复选框值。