首页 > 解决方案 > 提交表单 Symfony 后用户可编辑的复选框

问题描述

我必须创建一个个人资料页面,其中注册用户在他的附加数据旁边也能够勾选和取消勾选复选框以接收某些内容,然后保存个人资料。

保存配置文件后,数据库会收到单击的复选框并设置为1。如果不是,则它保持为空。这样就万事大吉了。

然后恐怖开始了,因为我无法取消勾选并再次提交配置文件,因为 1 永远存在。即使我更新另一个数据,该值也是1.

Form:
->add(
      'isYes', CheckboxType::class,
       ['required' => false]
      )

Controller:
if($form->get('isYes')) {
    $user->setIsYes(true);
} 
else {
    $user->setIsYes(false);
}

HTML:

<input type="hidden" id="yes" name="said_yes" value="0"/>
<input type="checkbox" id="yes" name="said_yes" value="1"> 

Interface:
/**
 * @return mixed
 */
public function getIsYes(): bool
{
    return boolval($this->isYes);
}

/**
 * @param bool $isYes
 *
 * @return User
 */
public function setIsYes(bool $isYes): User
{
    $this->isYes = $isYes;

    return $this;
}

如何取消选中复选框(即使选中复选框也保持选中状态)并将值更改为0

先感谢您!

标签: symfony

解决方案


最后,如果将来有人需要,这是我的解决方案:

->add(
            'isYes', CheckboxType::class,
            ['required' => false,
                'value' => true]
        )

我已经从 HTML 部分和 IF 语句中删除了值,并将 boolval 更改为 bool,只将值设置为 true和 TADA!每次勾选或取消勾选时都向数据库发送新值。


推荐阅读