Страница 1 из 1
Проблема с созданием категорий
Добавлено: 22.07.2018, 01:09
Ilya
Версия PHP - 5.6.3
Версия MYSQL - 5.5.41-log
Версия движка - Lite последняя.
Как воспроизвести баг:
1. Создаем в таблице Categories поле (булевое) (Например - show_at_index);
2. Добавляем его обработку в необходимых местах (api/categories, backend/core/CategoryAdmin, backend/html/category);
3. Пробуем создать новую категорию.
При этом в таблице categories строка с новой категорией не добавляется, но в таблице lang_categories - добавляется, но category_id у нее равно 0.
При этом созданные до этого категории отлично работают и переключение этого поля и вообще изменение любых полей проходят.
И что-то мне подсказывает то, что с добавлением у товаров доп. поля будет такая же шляпа.
Добавлено спустя 43 минуты 47 секунд:
С товарами/вариантами этого бага не замечено.
Добавлено: 22.07.2018, 04:20
Ilya
А нет. С товарами та же шляпа при добавлении булевого поля. новый товар создается, но название, метатеги и фото не сохраняются в БД.
При добавлении полей только в варианты - все норм.
Добавлено: 22.07.2018, 06:45
korshunov
Если ошибка в Вашей конкретной ВАМИ ПЕРЕДЕЛАННОЙ системе после Ваших изменения, то это явно баг Вашей переделки.
Что-то мне подсказывает, что в Ваших пп. 1,2 не все сделано правильно...
Если хотите, чтобы Вам помогли полезным советом, а не гаданием вслепую, надо свои переделки (пп.1,2) - расписывать полностью и подробно.
А пока выходит так: почини мне то, не скажу что...
Проблема с созданием категорий
Добавлено: 22.07.2018, 07:16
Ilya
Ок.
1. Создал в таблице Categories поле show_at_index
2. a)
api/categories.php в ф-цию init_categories добавил обработку этого поля
Код: Выделить всё
$query = $this->db->placehold("SELECT
c.id,
c.parent_id,
c.url,
c.image,
c.visible,
c.position,
c.level_depth,
c.yandex_name,
c.show_at_index,
c.last_modify,
c.created,
$lang_sql->fields
...
б)
backend/core/CategoryAdmin.phpв ф-цию fetch добавил обработку этого поля:
Код: Выделить всё
...
$category->yandex_name = $this->request->post('yandex_name');
$category->visible = $this->request->post('visible', 'boolean');
$category->show_at_index = $this->request->post('show_at_index');
...
в)
backend/html/categoryдобавил отображение в админке:
Код: Выделить всё
<div class="okay_switch clearfix">
<label class="switch_label">Показывать на главной</label>
<label class="switch switch-default">
<input class="switch-input" name="show_at_index" value='1' type="checkbox" {if $category->show_at_index}checked=""{/if}/>
<span class="switch-label"></span>
<span class="switch-handle"></span>
</label>
</div>
Добавлено: 22.07.2018, 07:37
korshunov
Вот и сравните, как сделано у Вас, и как сделано стандартно для поля visible. По моему, отличается как минимум в двух местах...
Добавлено: 22.07.2018, 07:49
Ilya
korshunov писал(а):Вот и сравните, как сделано у Вас, и как сделано стандартно для поля visible. По моему, отличается как минимум в двух местах...
Добавление "boolean" в строку
Код: Выделить всё
$category->show_at_index = $this->request->post('show_at_index');
проблему не решает.
А второе несовпадение - это вы про то, что в .tpl файле я не стал заморачиваться пока что с переводом лейбла?
Добавлено: 22.07.2018, 10:15
korshunov
Второе - про то, что непонятно, что сделано в базе - то, что Вы вместо нормального объяснения зачем-то даете малопонятную картинку небрежным образом. Читатели форума должны понять так, что Вы в базе изменения делаете, просто загружая куда-то эту картину?
У меня так:
Если делаю полностью по аналогии с полем visible, работает.
Если заменю
$category->show_at_index = $this->request->post('show_at_index', 'boolean');
на Вашу строку
$category->show_at_index = $this->request->post('show_at_index');
то не работает с симптомами как Вы описали.
Все правильно, так и должно быть.