Вопрос про PreHooks и checkbox
простая задача, но чего то не получается цо всем, подскажите что не так
в formIt установил preHooks
В чем проблема?
в formIt установил preHooks
$hook->setValue('color',json_encode(array('blue','red','green')));
return true;
и вот так вывожу<label>Color /[[!+fi.color]]</label>
<input type="checkbox" name="color[]" value="blue" [[!+fi.color:FormItIsChecked=`blue`]] > blue
<input type="checkbox" name="color[]" value="red" [[!+fi.color:FormItIsChecked=`red`]] > red
<input type="checkbox" name="color[]" value="green" [[!+fi.color:FormItIsChecked=`green`]] > green
в fi.color выводится ["blue","red","green"]
но вот почему то checkbox не выделяютсяВ чем проблема?
Комментарии: 7
А в чем смысл и задумка
$hook->setValue('color',json_encode(array('blue','red','green')));
?
в документации так написано
как их заполнить?
Обработка чекбоксов и мульти-селектора в пользовательском хукеили я не так понял?
Если вы хотите установить поле массива (т.е. группу флажков с тем же именем или мульти-селектор) в preHook, вам нужно применить json_encode для значения массива.
$hook->setValue('hobbies',json_encode(array('music','films','books')));
как их заполнить?
вероятно есть желание выделить несколько активных позиций, этот вариант предложен в документации: docs.modx.com/3.x/en/extras/formit/formit.tutorials-and-examples/handling-selects,-checkboxes-and-radios#handling-checkboxes-and-multiple-selects-in-a-custom-hook Вместо
$hook->setValue('color',json_encode(array('blue','red','green')))
@vit Попробуйте явно указать двойные кавычки так:$hook->setValue('color',json_encode(array("blue","red","green")))
т.к. код выходного фильтра нынче выглядит так: $output = ' ';
if ($input == $options) {
$output = ' checked="checked"';
}
$input = strpos($input, '"') ? $modx->fromJSON($input) : explode(',', $input);
if (!empty($input) && is_array($input) && in_array($options,$input)) {
$output = ' checked="checked"';
}
P.S. хотя нет. сработать должен и в вашем случае после json_encode…
так тоже не выводит(
Создайте свой сниппет(выходной модификатор) с исходным кодом и подебажьте, почему не срабатывает:
$hook->setValue('color',json_encode(array('blue','red','green')));
<input type="checkbox" name="color[]" value="red" [[!+fi.color:FormItIsChecked2=`red`]] > red
FormItIsChecked2:$output = ' ';
if ($input == $options) {
$output = ' checked="checked"';
}
$input = strpos($input, '"') ? $modx->fromJSON($input) : explode(',', $input);
if (!empty($input) && is_array($input) && in_array($options,$input)) {
$output = ' checked="checked"';
}
return $output;
так не чего не выводит вообще
Не работает если использовать феном
{'!FetchIt' | snippet : [
'snippet' => 'FormIt',
'form' => 'add.tpl',
'preHooks' => 'foreach'
]}
если написать так то все работает [[!FetchIt?
&snippet=`FormIt`
&form=`add.tpl`
&preHooks=`foreach`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.