Мы в Telegram
Добавить новость
ru24.net
Работа
Март
2021

Нужно исправить код PHP по проверке категорий у продавца магазина

0
В движке магазина на Model-View-Controller PHP, по дефолту 3 категории вложенности размещения товаров. Категории создаются не динамически, а вписаны в код по счёту, 1,2,3.
Хочу добавить в движок магазина 4-ую категорию вложенности.
Добавляю.
Категории в админке теперь создаются, 3 или 4 вложенности.
За категории отвечает один общий файл-контроллер категорий магазина и для каждого компонента свой контроллер.
Каждому продавцу, при создании его магазина, присваивается несколько категорий с первого уровня по четвертый. Это сделал, работает.
Дошел до файла размещения товара в магазине продавца.
В контроллере Sellergoodsadd.php, который отвечает за размещение нового товара в магазине продавца, есть кусок кода, который проверяет какие выбраны категории для размещения товара, сверяет с привязанными к продавцу, который размещает сейчас товар и при успешной проверке переходит на следующую страницу, либо выдает ошибку проверки: Ваш магазин не привязан к этой категории. Выберите привязанную категорию.
Я внес изменения в этот код, добавил проверку 4-х вложенной категории, но проверку не проходит. Выдает ошибку: Ваш магазин не привязан к этой категории. Выберите привязанную категорию.
Выбираю категорию три вложенности - получаю одобрение. Выбираю четыре вложенности - получаю ошибку.

Нужно, чтобы проверка проходила успешно и для 3-х категорий вложенности и для 4-х категорий вложенности.

Если кому по силам понять что я здесь написал и сможет поправить код, буду признателен.
Оплачу на карту банка, после того, как проверю работоспособность кода..

Оригинальный код с проверкой только категорий с 3 вложенностью:
<code lang="php">
// Модель классификации товара
$goodsclass_model = model('goodsclass');

$gc_id = intval(input('get.class_id'));

// Убедитесь, что категория товара существует, и категория товара является последним уровнем
$data = model('goodsclass')->getGoodsclassForCacheModel();
if (!isset($data[$gc_id]) || isset($data[$gc_id]['child']) || isset($data[$gc_id]['childchild'])) {
$this->error(lang('store_goods_index_again_choose_category1'));
}

//Оригинальный код
if (!check_platform_store_bindingall_goodsclass()) {
$storebindclass_model = model('storebindclass');
$goods_class = model('goodsclass')->getGoodsclassForCacheModel();
$condition = array();
$condition[] = array('store_id', '=', session('store_id'));

$class_2 = isset($goods_class[$gc_id]['gc_parent_id'])?$goods_class[$gc_id]['gc_parent_id']:0;
$class_1 = isset($goods_class[$class_2]['gc_parent_id'])?$goods_class[$class_2]['gc_parent_id']:0;
$condition_class_1 = array(array('class_1', '=', ($class_1 > 0) ? $class_1 : (($class_2 > 0) ? $class_2 : $gc_id)));
$condition_class_2 = array(array('class_2', '=', ($class_1 > 0) ? $class_2 : (($class_2 > 0) ? $gc_id : 0)));
$condition_class_3 = array(array('class_3', '=', ($class_1 > 0 && $class_2 > 0) ? $gc_id : 0));

$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3));
if (empty($bind_info)) {
$condition_class_3 = array(array('class_3', '=',0));
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3));
if (empty($bind_info)) {
$condition_class_2 = array(array('class_2', '=', 0));
$condition_class_3 = array(array('class_3', '=', 0));
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3));
if (empty($bind_info)) {
$condition_class_1 = array(array('class_1', '=', 0));
$condition_class_2 = array(array('class_2', '=', 0));
$condition_class_3 = array(array('class_3', '=', 0));
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3));
if (empty($bind_info)) {
$this->error(lang('Ваш магазин не привязан к этой категории. Выберите привязанную категорию.'));
}
}
}
}
}

</code>

Код с моими исправлениями, где я добавил проверку выбранной категории с 3 и с 4 вложенностью:
(там где вносил изменения, пометил комментарием Vaska)
<code lang="php">
// Модель классификации товара
$goodsclass_model = model('goodsclass');

$gc_id = intval(input('get.class_id'));

// Убедитесь, что категория товара существует, и категория товара является последним уровнем
$data = model('goodsclass')->getGoodsclassForCacheModel();
if (!isset($data[$gc_id]) || isset($data[$gc_id]['child']) || isset($data[$gc_id]['childchild'])) {
$this->error(lang('store_goods_index_again_choose_category1'));
}

//Измененный мною код
if (!check_platform_store_bindingall_goodsclass()) {
$storebindclass_model = model('storebindclass');
$goods_class = model('goodsclass')->getGoodsclassForCacheModel();
$condition = array();
$condition[] = array('store_id', '=', session('store_id'));
// Здесь что-то неправильно сделал, я так думаю
$class_3 = isset($goods_class[$gc_id]['gc_parent_id'])?$goods_class[$gc_id]['gc_parent_id']:0; //Vaska
$class_2 = isset($goods_class[$gc_id]['gc_parent_id'])?$goods_class[$gc_id]['gc_parent_id']:0;
$class_1 = isset($goods_class[$class_2]['gc_parent_id'])?$goods_class[$class_2]['gc_parent_id']:0;
$condition_class_1 = array(array('class_1', '=', ($class_1 > 0) ? $class_1 : (($class_2 > 0) ? $class_2 : $gc_id)));
$condition_class_2 = array(array('class_2', '=', ($class_1 > 0) ? $class_2 : (($class_2 > 0) ? $gc_id : 0)));
$condition_class_3 = array(array('class_3', '=', ($class_1 > 0 && $class_2 > 0) ? $gc_id : 0));
$condition_class_4 = array(array('class_4', '=', ($class_2 > 0 && $class_3 > 0) ? $gc_id : 0)); //Vaska
//
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3,$condition_class_4)); //Vaska
if (empty($bind_info)) {
$condition_class_4 = array(array('class_4', '=',0));
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3,$condition_class_4)); //Vaska
if (empty($bind_info)) {
$condition_class_3 = array(array('class_3', '=',0));
$condition_class_4 = array(array('class_4', '=',0)); //Vaska
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3,$condition_class_4)); //Vaska
if (empty($bind_info)) {
$condition_class_2 = array(array('class_2', '=', 0));
$condition_class_3 = array(array('class_3', '=', 0));
$condition_class_4 = array(array('class_4', '=', 0)); //Vaska
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3,$condition_class_4)); //Vaska
if (empty($bind_info)) {
$condition_class_1 = array(array('class_1', '=', 0));
$condition_class_2 = array(array('class_2', '=', 0));
$condition_class_3 = array(array('class_3', '=', 0));
$condition_class_4 = array(array('class_4', '=', 0)); //Vaska
$bind_info = $storebindclass_model->getStorebindclassInfo(array_merge($condition,$condition_class_1,$condition_class_2,$condition_class_3,$condition_class_4)); //Vaska
if (empty($bind_info)) {
$this->error(lang('Ваш магазин не привязан к этой категории. Выберите привязанную категорию.'));
}
}
}
}
}
}

</code>



Moscow.media
Частные объявления сегодня





Rss.plus



Правильная эксплуатация грузовых шин позволит продлить срок их службы

Эксперт по семейному капиталу Светлана Петрова: как быстро накопить на авто

Всеармянский союз «Гардман-Ширван-Нахиджеван» осуждает лживое заявление президента Азербайджана Алиева

Компания ICDMC приняла участие в торжественном открытии выставки “Тульское качество”


Компании Группы "Интеррос" взяли ряд наград премии FINAWARD

Россиянам озвучили цены на отдых в Крыму, которые приятно удивили

Стало известно, как туроператоры будут возить российских туристов на курорты Египта

Благотворительный Вечер в «Геликон-Опера»: Искусство во Имя Добра


‘Please don’t play that at matches next season’, beg Luton fans after Coldplay reveal new song for Hatters at festival

Fentanyl distribution indictment follows Westminster traffic stop

Man City star James McAtee lined up for dream Champions League transfer after Sheffield United relegation

Tesla under investigation over Fremont factory toxic emissions, and faces lawsuit over alleged health harms


Эксперт по семейному капиталу Светлана Петрова: как быстро накопить на авто

В Арамиле возбудили уголовное дело из-за "дома-монстра", в котором продолжают жить люди

Фотовыставка «Древнейшие пирамиды мира» пройдёт в Крыму

ALMI Partner и «Даком М» будут совместно развивать и продвигать отечественные ИТ-решения


Мафия-НН: отличная команда сплоченных коллег, которые стали друг другу почти как семья.

Конец близок в релизном трейлере Destiny 2: The Final Shape

Today's Wordle answer for Sunday, May 26

Зомби-экшен Zombiehood позволяет погрузиться в эпоху 90-х


ОіБ - охорона і безпека: замовляй охорону в Харькові


Третья Московская неделя моды: масштабное событие с участием дизайнеров из России и мира пройдет в октябре

Всеармянский союз «Гардман-Ширван-Нахиджеван» осуждает лживое заявление президента Азербайджана Алиева

В исторических парках покажут любимые мультфильмы от СТС Kids ко Дню защиты детей

ONYX отправляется в Большой тур по России




«Ведомости»: экс-министр обороны ДНР Стрелков через год сможет выйти на свободу

Эксперт сенсационно раскрыл загадку Мессинга и Жириновского.

«СВЯТОЙ ЛЕНИН» спасает население от борьбы с перенаселением, 3 серия, СЕРЬЁЗНЫЙ НОВОСТНОЙ СЕРИАЛ.

Собянин: 10 тыс. человек получили медпомощь в обновленных приемных отделениях


Mash вновь сообщил, что Канье Уэст может выступить в Москве 8 июня

«Ведомости»: экс-министр обороны ДНР Стрелков через год сможет выйти на свободу

Театральный критик Инна Соловьева скончалась на 97-м году жизни

В Пензе пройдет Всероссийский семейный фестиваль сбережений и инвестиций


Елене Рыбакиной поставили неожиданный «диагноз»

Касаткина о романе Синнера и Калинской: рада, больше ничего не хочу говорить

Белорусские теннисистки проведут стартовые встречи открытого чемпионата Франции

Матч Котова и Вавринки перенесли на корт Сюзанн Ленглен


В Пензе пройдет Всероссийский семейный фестиваль сбережений и инвестиций

Mash вновь сообщил, что Канье Уэст может выступить в Москве 8 июня

Россия начала ставить огромные вышки высотой с 9-этажный дом вдоль всей границы

Выпускники посмотрели результаты экзаменов на mos.ru более двух миллионов раз


Музыкальные новости

Mash: певица Алсу и ее супруг Абрамов поделят при разводе 2 дома и 2 квартиры

Исполнитель хита “На Заре 2020” Сергей АРУТЮНОВ оживил ещё один хит из 20-го века и выпустил песню “Лететь” вместе с её создателями - группой Амега.

«Борис Фрумкин – 80!»: Государственный камерный оркестр джазовой музыки имени Олега Лундстрема отпраздновал юбилей своего худрука большим концертом

Тимати проучил нового владельца “Black Star Burger” и перепродал его долги



Третья Московская неделя моды: масштабное событие с участием дизайнеров из России и мира пройдет в октябре

ONYX отправляется в Большой тур по России

«СВЯТОЙ ЛЕНИН» спасает население от борьбы с перенаселением, 3 серия, СЕРЬЁЗНЫЙ НОВОСТНОЙ СЕРИАЛ.

"СВЯТОЙ ЛЕНИН" раскрыл загадку В.В. Жириновского и В.Г. Мессинга. СЕНСАЦИОННЫЕ ДАННЫЕ!


Bungie wins a little walkin' around money in first of its kind jury trial against Destiny 2 cheat maker, but the victory will likely make it even easier for game companies to keep taking cheaters to court

Почта России помогла детям-подопечным благотворительных фондов встретиться с футболистами ЦСКА

Третья Московская неделя моды: масштабное событие с участием дизайнеров из России и мира пройдет в октябре

"СВЯТОЙ ЛЕНИН" раскрыл загадку В.В. Жириновского и В.Г. Мессинга. СЕНСАЦИОННЫЕ ДАННЫЕ!


СТОЛИЧНЫЕ СОТРУДНИКИ ВНЕВЕДОМСТВЕННОЙ ОХРАНЫ БЛОКИРОВАЛИ АВТОМОБИЛЬ, КОТОРЫЙ НАХОДИЛСЯ В РОЗЫСКЕ

"ДиМ" строит участок 5 трассы СБВ

Эксперт по семейному капиталу Светлана Петрова: как быстро накопить на авто

Важные магистрали: Столица вышла на рекордные темпы дорожного строительства


Создать комфортные условия для исследований и обучения

Ветераны СВО с тяжелыми ранениями смогут получить машины с ручным приводом

Власти Зимбабве поблагодарили Москву за помощь в период засухи

Президент РФ обозначил наиболее острым вопросом для Ингушетии количество мест в детсадах


В мае в Москве не было новых случаев заражения штаммом коронавируса FLiRT

В Москве в мае не выявили ни одного случая штамма коронавируса FLiRT

В Москве в мае не выявили случаев заражения новым штаммом коронавируса FLiRT

Ракова: в Москве в мае не нашли случаев инфицирования штаммом коронавируса FLiRT




Филиал № 4 ОСФР по Москве и Московской области информирует: Соцфонд с начала года обеспечил техническими средствами реабилитации 13,6 тыс. детей с инвалидностью

Стоматолог Татьяна Сумцова: проверенные способы сделать зубы белоснежными

Диарея путешественника: доктор Кутушов рассказал как защититься от отравления в отпуске

Врач: Уход за людьми с когнитивными нарушениями начинается с заботы о себе


Белый дом признал причастность к выработке «формулы мира» Киева


В Москве задержали израильского футболиста, разыскиваемого Интерполом

Студент из Волоколамска стал бронзовым призером чемпионата «Абилимпикс»

В новой Москве соревновались нештатные формирования

Работники Пожарно-спасательного центра показали свою слаженность в боевом развертывании


Минск приостановил участие в договоре о вооруженных силах в Европе

Минск приостановил действие ДОВСЕ



Собянин: На городском вокзале Зеленоград — Крюково появился еще один переход

Собянин сообщил о планах благоустройства Южного округа Москвы

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

Собянин: 10 тыс. человек получили медпомощь в обновленных приемных отделениях


Акция «Чистый лес» прошла на территории округа Балашиха

Суд четвертый раз обязал бизнесмена возместить ущерб, нанесенный землям Люберец

В МЧС предупредили об аномальной жаре в Москве в ближайшие дни

Аномальная жара с июльскими температурами придет в некоторые регионы


Выпускники посмотрели результаты экзаменов на mos.ru более двух миллионов раз

В Пензе пройдет Всероссийский семейный фестиваль сбережений и инвестиций

Театральный критик Инна Соловьева скончалась на 97-м году жизни

SHOT: поножовщину в московском магазине устроил 25-летний фитнес-тренер


Эксперт Президентской академии в Санкт-Петербурге о повышении экологического статуса целлюлозно-бумажных технологий в России

Прокуратура Архангельской области и Ненецкого автономного округа 31 мая 2024 года в г. Нарьян-Мар проведет прием граждан и «Горячую линию» по вопросам защиты прав и законных интересов несовершеннолетних

Ученые Президентской академии в Санкт-Петербурге разработали способ повышения экологичности целлюлозно-бумажной промышленности

ТСД промышленного класса Saotron RT-T60


К 240-летию города-собирателя: в Симферополе проведут бесплатную экскурсию «Крутые соты»

День открытых дверей "Библиотека - дом, где согревают сердца"

Сожалеют, что бросающих черепах не бросили в тюрьму

Наркокурьер изобретательно спрятал «товар» в машине, но это не помогло (видео)


«Ведомости»: экс-министр обороны ДНР Стрелков через год сможет выйти на свободу

SHOT: поножовщину в московском магазине устроил 25-летний фитнес-тренер

В Пензе пройдет Всероссийский семейный фестиваль сбережений и инвестиций

Подмосковное УФАС признало ООО «Арифметика света» добросовестной организацией












Спорт в России и мире

Новости спорта


Новости тенниса
Елена Рыбакина

В России отреагировали на "скрытую баранку" и достижение Рыбакиной на Ролан Гаррос






Российские сервисы проката самокатов ужесточили штрафы для нарушителей

SHOT: поножовщину в московском магазине устроил 25-летний фитнес-тренер

Театральный критик Инна Соловьева скончалась на 97-м году жизни

В прокуратуре раскрыли детали нападения мужчины с ножом в магазине в Москве