Я пытаюсь заполнить набор флажков на основе сохраненных данных формы. К сожалению, элемент 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
из $select
правильно возвращает логическое значение true
а также false
значения, где это должно. Но isSelected
Элемент всегда возвращает пустую строку. Это правда, даже когда я заменяю $select
переменная с жестко заданным значением true или используйте 1 и 0 вместо true и false.
Я уверен, что упускаю что-то очень простое, но мне пока не повезло найти решение. Буду благодарен за любую помощь!
редактировать
Благодаря @Barmar у меня есть немного больше информации о проблеме. Это не удается, когда я пытаюсь присвоить значение $ field [‘choices’] [$ count] [‘isSelected’]. Журнал показывает: «Уведомление PHP: косвенная модификация перегруженного элемента GF_Field_Checkbox не имеет никакого эффекта». К сожалению, я не понимаю, почему это было бы проблемой здесь, поскольку из того, что я могу сказать, эта ошибка обычно возникает при использовании методов __get / set, которые я фактически не использую в этом случае. Я также попробовал решения, предложенные в "Косвенная модификация перегруженного элемента SplFixedArray не имеет никакого эффекта" но безрезультатно. Существуют ли какие-либо настройки или конфигурации, которые могут препятствовать этому назначению?
Я думаю, что я заметил ошибку. Как примечание, вам не нужно иметь переменную $ 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++;
Других решений пока нет …