Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 103 комментария

Антон Тарасов
Антон Тарасов
Создайте свой сниппет(выходной модификатор) с исходным кодом и подебажьте, почему не срабатывает:
$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;
Антон Тарасов
Антон Тарасов
вероятно есть желание выделить несколько активных позиций, этот вариант предложен в документации: 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…
ВитОс
ВитОс
в документации так написано
Обработка чекбоксов и мульти-селектора в пользовательском хуке
Если вы хотите установить поле массива (т.е. группу флажков с тем же именем или мульти-селектор) в preHook, вам нужно применить json_encode для значения массива.
$hook->setValue('hobbies',json_encode(array('music','films','books')));
или я не так понял?
как их заполнить?
Денис Усманов
Денис Усманов
Готового плагина или компонента нет, придётся писать самому.

Опишу теорию:
1. У пользователей используешь какое ни будь поле или делаешь новое, числовое. Какое дефолтное значение на твоё усмотрение.
2. Тем же Minishop2 создаёшь товары — пакеты с кол-ом комментариев, там например в артикул пишешь размер пакетов, типа 5/10/20/50…
3. После покупки пользователями того или иного пакета/пакетов, плагином по смене статуса заказа на «Оплачен», берёшь из заказа покупателя (id пользователя), товары (их артикулы по их id), суммируешь купленное количество комментариев (артикулы товаров) и записываешь в поле пользователя (опять же по id пользователя).
4. Форму создания комментариев выводишь по простому условию проверки поля пользователя, если >0 — показываем форму…

Итого: Всего 1 самописный плагин, с этим обращайся к спецам из сообщества, или пробуй сам с помощью ИИ (мой совет: deepseek.com)