-
Notifications
You must be signed in to change notification settings - Fork 8
Description
Описание проблемы
При редактировании категории товаров (msCategory) в настройках «Скрыть дочерние ресурсы» (hide_children_in_tree):
- Оранжевый цвет переключателя — переключатель отображается оранжевым цветом в отличие от других (зелёных/серых)
- Значение не сохраняется — после нажатия «Сохранить» положение переключателя (вкл/выкл) не сохраняется в БД
Ожидаемое поведение
Включение «Скрыть дочерние ресурсы» должно скрывать все дочерние товары и категории в дереве ресурсов (согласно подсказке в интерфейсе). Значение должно сохраняться после нажатия «Сохранить».
Фактическое поведение
- Переключатель остаётся оранжевым
- После сохранения значение сбрасывается (или не применяется)
- Товары остаются видимыми в дереве
Контекст
Пользователь хотел убрать из дерева все товары, используя настройку «Скрыть дочерние ресурсы» на родительской категории.
Возможная причина
В Processors/Category/Update.php отсутствует обработка чекбокса hide_children_in_tree в методе handleCheckBoxes(). В отличие от Processors/Product/Update.php, где явно вызывается setCheckbox('show_in_tree'), для категории поле hide_children_in_tree может не обрабатываться при сохранении (чекбоксы в HTML-формах не передают значение при unchecked).
Предлагаемое решение
Добавить в MiniShop3\\Processors\\Category\\Update переопределение handleCheckBoxes() с вызовом setCheckbox('hide_children_in_tree'):
public function handleCheckBoxes()
{
parent::handleCheckBoxes();
$this->setCheckbox('hide_children_in_tree');
}Связанные файлы
core/components/minishop3/src/Processors/Category/Update.phpcore/components/minishop3/src/Processors/Product/Update.php(для сравнения — там есть handleCheckBoxes с show_in_tree)core/components/minishop3/src/Processors/Category/GetNodes.php— использует hide_children_in_tree для отображения дереваcore/components/minishop3/lexicon/ru/product.inc.php—ms3_product_hide_children_in_tree
Версия
MiniShop3 (актуальная из репозитория)