Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как правильно подтянуть данные


Zavik21

Recommended Posts

Всем доброго времени суток!

Хочу в админке, в списке заказов, вывести способ доставки.

Никак не могу в контроллере поймать (admin/controller/sale/) способ доставки для (admin/view/template/sale/order_list.tpl)

Подскажите пожалуйста, как правильно его прописать,

Если я правильно понял, его нужно прописывать выше строки 

$this->response->setOutput($this->load->view('sale/order_list', $data));

Если прописать жестко, $data['123'] = '123'; , то ловлю его во view, а как на эту переменную подтянуть данные из БД никак не могу додуматься.

 

Всем спасибо!

Змінено користувачем Zavik21
Надіслати
Поділитися на інших сайтах


сначала нужно данные получить запросом в модели из базы, потом получить их в контроллере вот "в это самое" -  $data[''], а потом уже выводить их в tpl

Надіслати
Поділитися на інших сайтах

идем в модель admin/model/sale/order.php 
находим 172 строка примерно

public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";

меняем на
 

public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.shipping_method, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";


далее идем в контроллер admin/controller/sale/order.php 
находим 

foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

меняем на 

foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'shipping_method' => $result['shipping_method'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

и на фронте уже выводим, думаю сами уже разберетесь <?php echo $order['shipping_method']  ?>

Змінено користувачем stickpro
  • +1 1
Надіслати
Поділитися на інших сайтах

 

Установить через Дополнения - Установка дополнений, обновить кеш модификаторов в Дополнения - Менеджер дополнений

http://joxi.ru/zANB47aUBa3wBA

 

Orders_List_View.ocmod.xml

  • +1 2
Надіслати
Поділитися на інших сайтах

14 часов назад, stickpro сказал:

идем в модель admin/model/sale/order.php 
находим 172 строка примерно


public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";

меняем на
 


public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.shipping_method, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";


далее идем в контроллер admin/controller/sale/order.php 
находим 


foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

меняем на 


foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'shipping_method' => $result['shipping_method'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

и на фронте уже выводим, думаю сами уже разберетесь <?php echo $order['shipping_method']  ?>

Спасибо!

Надіслати
Поділитися на інших сайтах


10 часов назад, Tom сказал:

 

Установить через Дополнения - Установка дополнений, обновить кеш модификаторов в Дополнения - Менеджер дополнений

http://joxi.ru/zANB47aUBa3wBA

 

Orders_List_View.ocmod.xml

Спасибо!

Надіслати
Поділитися на інших сайтах


17 часов назад, stickpro сказал:

идем в модель admin/model/sale/order.php 
находим 172 строка примерно


public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";

меняем на
 


public function getOrders($data = array()) {
		$sql = "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM " . DB_PREFIX . "order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '" . (int)$this->config->get('config_language_id') . "') AS order_status, o.shipping_code, o.shipping_method, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `" . DB_PREFIX . "order` o";


далее идем в контроллер admin/controller/sale/order.php 
находим 


foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

меняем на 


foreach ($results as $result) {
			$data['orders'][] = array(
				'order_id'      => $result['order_id'],
				'customer'      => $result['customer'],
				'order_status'  => $result['order_status'] ? $result['order_status'] : $this->language->get('text_missing'),
				'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
				'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
				'shipping_code' => $result['shipping_code'],
				'shipping_method' => $result['shipping_method'],
				'view'          => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true),
				'edit'          => $this->url->link('sale/order/edit', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, true)
			);
		}

и на фронте уже выводим, думаю сами уже разберетесь <?php echo $order['shipping_method']  ?>

Добрый вечер! не подскажете еще один момент..?

как привязать правильно эти данные к простой переменной? $data['100500'] = $order['shipping_method'] 

для того, чтобы можно было производить с ними разные действия - обрезать тэги и сократить до определенной длины, не получается иначе эти данные использовать в сравнениях if, else if

спасибо

Змінено користувачем Zavik21
Надіслати
Поділитися на інших сайтах


11 минут назад, Zavik21 сказал:

Добрый вечер! не подскажете еще один момент..?

как привязать правильно эти данные к простой переменной? $data['100500'] = $order['shipping_method'] 

для того, чтобы можно было производить с ними разные действия - обрезать тэги и сократить до определенной длины, не получается иначе эти данные использовать в сравнениях if, else if

спасибо

а почему нельзя работать с $order['shipping_method']  ? Зачем новую переменную создавать

  • +1 1
Надіслати
Поділитися на інших сайтах

16 часов назад, stickpro сказал:

а почему нельзя работать с $order['shipping_method']  ? Зачем новую переменную создавать

Вообще идея в следующем: В ывести в order list мелкий логотип службы доставки.

Проблема в том, что если использовать "shipping_code", то у одного способа оплаты постоянно он изменяется в зависимости от города, например "cdek.cur_137" в другом заказе может цифра 137 поменяться на 234 и т.д. По этому решил использовать именно shipping_method

теперь проблема в том, что нужно вывести не все название метода, например

<img src="image/icons/pochta_logo_small.jpg" align="absmiddle"> Стоимость доставки почтой

а только логотип, при чем не тот что в методе, а другой, другого размера. 

Теперь нужно как-то связать названия методов с новыми логотипами.

Пытаюсь сделать так: в контроллере

if ($order['shipping_method'] == 'nazvanie1') {
$data['shipping_method1'] = 'logo1';
} else if ($order['shipping_method'] == 'nazvanie2') {
$data['shipping_method1'] = 'logo2';
} else {
$data['shipping_method1'] = 'logo3';
}

и вывожу во view уже переменную shipping_method1. Выходит ошибка: Warning: Illegal string offset 'shipping_method', если я правильно понял, то переменная shipping_method переменная массива, и их так просто нельзя сравнивать.. 

image.png

Надіслати
Поділитися на інших сайтах


22 часа назад, Zavik21 сказал:

Не подскажете?)

не по правильному пути пошли, скажу только это, смотрите в сторону языковых файлов способов доставки

Надіслати
Поділитися на інших сайтах

В 29.11.2018 в 13:56, stickpro сказал:

не по правильному пути пошли, скажу только это, смотрите в сторону языковых файлов способов доставки

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.