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

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


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.xmlFetching info...

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

  В 25.11.2018 в 22:34, 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']  ?>

Expand  

Спасибо!

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


  В 26.11.2018 в 02:01, Tom сказав:

 

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

http://joxi.ru/zANB47aUBa3wBA

 

Orders_List_View.ocmod.xmlUnavailable

Expand  

Спасибо!

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


  В 25.11.2018 в 22:34, 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']  ?>

Expand  

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

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

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

спасибо

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


  В 26.11.2018 в 16:11, Zavik21 сказав:

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

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

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

спасибо

Expand  

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

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

  В 26.11.2018 в 16:24, stickpro сказав:

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

Expand  

Вообще идея в следующем: В ывести в 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

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


  В 28.11.2018 в 12:38, Zavik21 сказав:

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

Expand  

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

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

  В 29.11.2018 в 10:56, stickpro сказав:

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

Expand  

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

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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