Skip to content

Скрыть дочерние ресурсы: оранжевый переключатель и значение не сохраняется при сохранении категории #161

@Ibochkarev

Description

@Ibochkarev

Описание проблемы

При редактировании категории товаров (msCategory) в настройках «Скрыть дочерние ресурсы» (hide_children_in_tree):

  1. Оранжевый цвет переключателя — переключатель отображается оранжевым цветом в отличие от других (зелёных/серых)
  2. Значение не сохраняется — после нажатия «Сохранить» положение переключателя (вкл/выкл) не сохраняется в БД

Ожидаемое поведение

Включение «Скрыть дочерние ресурсы» должно скрывать все дочерние товары и категории в дереве ресурсов (согласно подсказке в интерфейсе). Значение должно сохраняться после нажатия «Сохранить».

Фактическое поведение

  • Переключатель остаётся оранжевым
  • После сохранения значение сбрасывается (или не применяется)
  • Товары остаются видимыми в дереве

Контекст

Пользователь хотел убрать из дерева все товары, используя настройку «Скрыть дочерние ресурсы» на родительской категории.

Возможная причина

В 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.php
  • core/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.phpms3_product_hide_children_in_tree

Версия

MiniShop3 (актуальная из репозитория)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions