我必须创建一个个人资料页面,在该页面上,注册用户旁边的其他数据还可以勾选和取消选中复选框以接收某些内容,然后保存该个人资料。
保存配置文件后,数据库将收到单击的复选框,并将其设置为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
?
提前谢谢!
答案 0 :(得分:0)
尝试使用$form->get('isYes')->getData()
。
在if语句$form->get('isYes')
内始终将解析为true,因为它将返回表单字段(不是数据)。
答案 1 :(得分:0)
最后,如果将来有人需要,这是我的解决方案:
->add(
'isYes', CheckboxType::class,
['required' => false,
'value' => true]
)
我从HTML部分和IF语句中删除了这些值,并将boolval更改为bool,仅将其值设置为true 和TADA!选中或取消选中时,每次都会向数据库发送新值。