开发者

Symfony form : old values are displayed after saving

I have a symfony form with many checkboxes :

    $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;
      }
    }

The problem is the following : after saving the form, the checkboxes act weirdly

If the user checked one, it appears checked after the save (normal behaviour) But if the user unchecked one, it will still appear checked after the save.

I did a var_dump on the form va开发者_运维百科lues, unchecked checkboxes have a NULL value, so i don't understand why they are still checked.

Thanks for your help.


If you use boolean / integer field for saving the checkbox value, use sfValidatorBoolean for your checkboxes. It also converts the input value to a valid boolean. So null will be converted to 0 and will be saved in the database.

Update with workaround

In older versions where this do not work, you can add hidden input with the same name as the checkbox and value of 0, before the checkbox. If the checkbox is not checked, the hidden input value will be sent, otherwise the checkbox value will be sent.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜