加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CakePHP未填充单选按钮在提交时更改为不需要的值

发布时间:2020-12-13 22:31:01 所属栏目:PHP教程 来源:网络整理
导读:我有这个表单元素: $form-input('ChecklistResponseGovernmentInfo.driversLicenseIsOnline',array('type'='radio','empty'= true,'options'=array(0 = 'No',1 = 'Yes'))) 这是它的验证规则: 'driversLicenseIsOnline' = array( 'boolean' = array( 'rule'
我有这个表单元素:

$form->input('ChecklistResponseGovernmentInfo.driversLicenseIsOnline',array('type'=>'radio','empty'=> true,'options'=>array(0 => 'No',1 => 'Yes')))

这是它的验证规则:

'driversLicenseIsOnline' => array(
    'boolean' => array(
        'rule' => array('boolean'),'allowEmpty' => false,),

这是它的数据库字段(MySQL):

`driversLicenseIsOnline` tinyint(1) unsigned NOT NULL

当我第一次加载表单的新副本时,单选按钮组被取消选中.如果我在没有做任何其他事情的情况下提交表单,当表单重新加载时,单选按钮将填入“否”,并且验证flash消息显示“此字段不能留空”.

当我停止使用零(0)作为“否”的值时,问题就消失了,但是我希望Cake将此值存储为布尔值,而不是我必须手动来回转换为布尔值的其他值.

如果在没有选择收音机的情况下提交,则如何阻止Cake自动填写此元素的值?

解决方法

在我自己寻找答案的同时偶然发现了这个问题.

这个令人讨厌的黑客为我修复了它(在CakePHP 2.1中 – 应该在1.3中工作):

验证失败后,取消设置$this-> request->数据中的值,如果它为空:

if ($this->Model->save($this->request->data) {
  // data saved
}
else {
  // data failed to save
  // unset radio if empty
  if ($this->request->data['Model']['radio_field'] == "") {
    unset($this->request->data['Model']['radio_field'];
  }
}

啊.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读