我正在尝试根据存储的表单数据填充一组复选框。不幸的是,isSelected元素似乎只返回false。这是代码:
if($field['type'] == 'checkbox'){
$inputs = $field['inputs'];
$count = '0';
foreach($inputs as $input){
if(($user_meta[$input['id']] !== '') && (isset($user_meta[$input['id']]))){
$select = true;
}
else{
$select = false;
}
$field['choices'][$count] = array(
'text' => $field['choices'][$count]['text'],
'value' => $field['choices'][$count]['value'] ,
'isSelected' => $select );
var_dump($select);
var_dump($field['isSelected']);
$count = $count + '1';
}
}
var_dump
的{{1}}正确返回布局值$select
和true
值。但是false
元素总是返回一个空字符串。即使我用硬编码的真值替换isSelected
变量,或者使用1和0而不是true和false,也是如此。
我确定我遗漏了一些非常基本的东西,但到目前为止我找不到解决方案。我会感激任何帮助!
修改
感谢@Barmar我有更多关于这个问题的信息。当我尝试将值分配给$ field ['choices'] [$ count] ['isSelected']时,它失败了。日志显示“PHP注意:间接修改GF_Field_Checkbox的重载元素无效”。不幸的是,我不明白为什么这会是一个问题,因为我可以告诉我,错误通常来自于使用__get / set方法,在这种情况下我实际上没有使用它。我也尝试在"Indirect modification of overloaded element of SplFixedArray has no effect"中建议的解决方案无济于事。是否存在可能阻止此分配的某种设置或配置?
答案 0 :(得分:0)
我相信我发现了这个错误。需要注意的是,您不需要在数组创建中使用$ count变量,因为您将从0 ++开始。计数也可以缩短为$ count ++;
看起来这不正确var_dump($field['isSelected']);
,您的意思是var_dump($field['choices'][$count]['isSelected']);
$field['choices'][] = array(
'text' => $field['choices'][$count]['text'],
'value' => $field['choices'][$count]['value'] ,
'isSelected' => $select );
var_dump($select);
var_dump($field['choices'][$count]['isSelected']);
$count++;