snappk Опубликовано 3 декабря, 2018 Жалоба Поделиться Опубликовано 3 декабря, 2018 Доброго Всем времени суток.Не как не могу сделать вывод названия группы покупателя на странице Заказы, именно в какой группе он(покупатель) находится на страницы заказов.Сделал вывод названия группы на странице "Покупатели", через {$user->group_id->name|escape} - получилось.А вот на странице заказов не как не получается, Помогите люди добрые! Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 3 декабря, 2018 Жалоба Поделиться Опубликовано 3 декабря, 2018 (изменено) Сделал вывод названия группы на странице "Покупатели", через {$user->group_id->name|escape} - получилось. Это абсурд! Максимум что вы такой переменной выведите - это текст ошибки.Если же кто то вам туда не всунул объект вместо инта. Тогда руки бы таким мастерам поровнять... {if $group} {$group->name} {/if} Изменено 3 декабря, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 4 декабря, 2018 Жалоба Поделиться Опубликовано 4 декабря, 2018 {if $group} {$group->name} {/if} Этим кодом предлагается способ решения вопроса? У меня такой не работает в админке на странице отдельного заказа (order.tpl). Работает так: {$user->group_name} Если же вопрос ТС относится к странице СПИСКА заказов в админке (orders.tpl), то для вывода там надо и PHP код менять... Цитата Ссылка на сообщение Поделиться на другие сайты
snappk Опубликовано 4 декабря, 2018 Автор Жалоба Поделиться Опубликовано 4 декабря, 2018 (изменено) Этим кодом предлагается способ решения вопроса? У меня такой не работает в админке на странице отдельного заказа (order.tpl). Работает так: {$user->group_name} Если же вопрос ТС относится к странице СПИСКА заказов в админке (orders.tpl), то для вывода там надо и PHP код менять...Спасибо за ответ. Но мне надо что бы выводилось в (orders.tpl). Что надо в общем. Что бы в списке заказов, ну допустим ( Заказ №11111, было рядом где то, ну допустим под номером заказа, было написано : "Частый покупатель"), где "частый покупатель" - это одна из групп пользователя. Изменено 4 декабря, 2018 пользователем snappk Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Noxter Опубликовано 4 декабря, 2018 Решение Жалоба Поделиться Опубликовано 4 декабря, 2018 (изменено) Спасибо за ответ. Но мне надо что бы выводилось в (orders.tpl). Что надо в общем. Что бы в списке заказов, ну допустим ( Заказ №11111, было рядом где то, ну допустим под номером заказа, было написано : "Частый покупатель"), где "частый покупатель" - это одна из групп пользователя.Файл simpla/OrdersAdmin.php найти: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) $orders[$o->id] = $o;И заменить на: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) { if(!empty($o->user_id)) { $o->user = $this->users->get_user(intval($o->user_id)); } $orders[$o->id] = $o; }В шаблоне вам теперь будет доступен объект {$order->user->group_name}.Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса). Изменено 4 декабря, 2018 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
snappk Опубликовано 4 декабря, 2018 Автор Жалоба Поделиться Опубликовано 4 декабря, 2018 Файл simpla/OrdersAdmin.php найти: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) $orders[$o->id] = $o;И заменить на: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) { if(!empty($o->user_id)) { $o->user = $this->users->get_user(intval($o->user_id)); } $orders[$o->id] = $o; }В шаблоне вам теперь будет доступен объект {$order->user->group_name}.Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса).Noxter - спасибо большое Вам! Всё работает. Задача решена! Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 4 декабря, 2018 Жалоба Поделиться Опубликовано 4 декабря, 2018 Noxter - спасибо большое Вам! Всё работает. Задача решена! Всегда пожалуйста! Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 4 декабря, 2018 Жалоба Поделиться Опубликовано 4 декабря, 2018 Файл simpla/OrdersAdmin.php найти: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) $orders[$o->id] = $o;И заменить на: // Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) { if(!empty($o->user_id)) { $o->user = $this->users->get_user(intval($o->user_id)); } $orders[$o->id] = $o; }В шаблоне вам теперь будет доступен объект {$order->user->group_name}.Конечно решение не лучшее т.к. делает лишние запросы в БД в каждой интерации цикла.Правильнее будет расширить функцию get_users добавив фильтрацию по ID пользователей передавая массив айдишек, но у меня не так уж много времени чтобы расписывать кучу мануала, так что кому не нравиться молча проходим мимо не воняя (особенно касается Корса). Я бы немного переделал. Сделал бы какой то локальный массив для пользователей. То не комильфо будет если заказов много. Получение одного и тоже пользователя будет происходить столько же сколько и заказов (вместо одного) Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 4 декабря, 2018 Жалоба Поделиться Опубликовано 4 декабря, 2018 Я бы немного переделал. Сделал бы какой то локальный массив для пользователей. То не комильфо будет если заказов много. Получение одного и тоже пользователя будет происходить столько же сколько и заказов (вместо одного)Всё верно, нужно расширять стоковое API симплы, без этого только "костыли". Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 5 декабря, 2018 Жалоба Поделиться Опубликовано 5 декабря, 2018 В аналогичных случаях, когда другие предлагают нерациональное решение, укажаемый Noxter на них набрасывается как коршун, например, в темеhttp://forum.simplacms.ru/topic/12116-id-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B5/прямо-таки заклевал Странно то, что ты берешь заказы по программированию, а такую мелочь как решить вопрос ТС не осилил.Полагаю что ты как был дуб дубом в программировании так и остался, и за тебя делает всё Davinci, не плохо спелись. А теперь сам предлагает решения "дуб дубом"... ИМХО, такие решения можно ожидать от новичков, а мастеру с "большими скилами" за такое стыдно должно быть... В то время как рациональное решение написать не так уж и сложно. // Отображение $orders = array(); $uids = array(); foreach($this->orders->get_orders($filter) as $o){ $orders[$o->id] = $o; $uids[$o->user_id]=$o->user_id; } if($uids){ $query = $this->db->placehold("SELECT u.*, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id WHERE u.id IN (?@)", $uids); $this->db->query($query); $users = array(); foreach($this->db->results() as $user) $users[$user->id] = $user; foreach($orders as &$order) $order->user=$users[$order->user_id]; } А есть способ, на мой взгляд, и еще лучше: в таблицу заказов сразу при формировании заказа записывать новое поле названия группы - как это делается стандартно для данных покупателя. Сделать совсем несложно, зато потом вообще никаких особых запросов не потребовалось бы... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 5 декабря, 2018 Жалоба Поделиться Опубликовано 5 декабря, 2018 Так и знал напиши сразу говно начнёт вонять на весь форум... Тьфу на тебя Корс ты вонючее Цитата Ссылка на сообщение Поделиться на другие сайты
pudohom Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 Так и знал напиши сразу говно начнёт вонять на весь форум...Тьфу на тебя Корс ты вонючееА по факту крыть чем-то можешь? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 6 декабря, 2018 Жалоба Поделиться Опубликовано 6 декабря, 2018 А по факту крыть чем-то можешь?Тем что ничего кроме говнокода ты не смог придумать, вместо того чтобы в выборке пользователей добавить ещё один фильтр по ID пользователей (я выше даже подсказку дал) ты тупо хяуришь SQL запрос в контроллере что по концепции MVC считается плохим тоном. Ну да откуда ты мог знать об этом если ты олдскульный говнокодер-псевдо-программист? Как тебе такой факт - ты былокодер? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 8 декабря, 2018 Жалоба Поделиться Опубликовано 8 декабря, 2018 (изменено) А по факту крыть чем-то можешь? Во-первых, надо было бы конкретизировать вопрос, что именно крыть. 1. Основная претензия к Noxter-у была в том, что он выложил решение, подобное тому, которое сам оценил в указанной теме еще в 2016 году "дуб дубом".И этот момент он крыть даже не пытается - должно быть, нечем. 2. А поскольку, вероятно, религия не позволяет Noxter-у просто признать свой ляп, он переводит стрелки на другое. Прием знакомый. Нашел мелкий недостаток в предложенном решении ...SQL запрос в контроллере что по концепции MVC считается плохим тоном. и бьет теперь на него. А недостаток чисто формальный, крайне спорный и особо недостатком-то не является. 3. А недостаток в решении Noxter-а куда хуже и и идейно ведет в тупик. В текущем решении прибавляет на странице 20-50 запросов БД вместо одного. Вроде и не страшно, если страница в админке. А мне как-то раз приходилось исправлять сайт после одного мастера, который такой прием применил дважды циклом в цикле. Так там реально приходилось ждать загрузки некоторых страниц по 20-30 сек. Причина была в том, что в итоге запросов создавалось по 2-3 тысячи на страницу... Изменено 8 декабря, 2018 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.