symfony - 提交表单 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
?
先感谢您!
解决方案
最后,如果将来有人需要,这是我的解决方案:
->add(
'isYes', CheckboxType::class,
['required' => false,
'value' => true]
)
我已经从 HTML 部分和 IF 语句中删除了值,并将 boolval 更改为 bool,只将值设置为 true和 TADA!每次勾选或取消勾选时都向数据库发送新值。
推荐阅读
- node.js - 在 docker 容器中安装仪表 js 插件时出错
- reactjs - addEventListener('fetch', callback) 在 ReactJS 中永远不会触发回调
- android - 每次更新后如何刷新应用程序?
- javascript - 如何在 JSON dot noration 中传递变量?
- python - 如何根据每条记录及其上一条记录过滤 NumPy 数组
- python - 如何将线程参数中的 ip 地址作为一个参数传递?
- hashicorp-vault - HashiCorp Vault 中跨环境的机密管理
- visual-studio - VS 测试资源管理器是否支持格式化的错误消息
- php - 使用角色登录
- android - 无法在 Android 上为 Azure AD 创建 SingleAccountPublicClientApplication