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

Пример, как в контроллере админки orders.php получить список доступных способов доставки и оплаты


Recommended Posts

Приветствую.

 

Может ли кто то поделиться удачным примером кода, как в контроллере orders.php в админке, получить список доступных в системе способов доставки и оплаты?

 

 

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


$this->load->model('extension/extension');

$results = $this->model_extension_extension->getInstalled('shipping');

foreach ($results as $result) {
    if ($this->config->get($result . '_status')) {
        $this->load->language('extension/shipping/' . $result);
        $data['shipping_methods'][] = array(
            'code'  => $result,
            'title' => $this->language->get('heading_title')
        );
    }
}

$results = $this->model_extension_extension->getInstalled('payment');

foreach ($results as $result) {
    if ($this->config->get($result . '_status')) {
        $this->load->language('extension/payment/' . $result);
        $data['payment_methods'][] = array(
            'code'  => $result,
            'title' => $this->language->get('heading_title')
        );
    }
}

Не благодарите, вариант для 2.3.

 

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

Класс спасибо, куда кинуть на пиво ? :)

 

И где можно прочитать как работает вот эта штука, что бы ее знать мне 

$this->config->get($result . '_status')

 

 $this->load->language('extension/shipping/' . $result);
$this->language->get('heading_title')
Змінено користувачем MihaMix
Надіслати
Поділитися на інших сайтах


1 час назад, MihaMix сказал:

Класс спасибо, куда кинуть на пиво ? :)

 

И где можно прочитать как работает вот эта штука, что бы ее знать мне 


$this->config->get($result . '_status')

 


 $this->load->language('extension/shipping/' . $result);

$this->language->get('heading_title')

 

 

И еще обратил внимание, что в этом методе не получаешь все возможные в системе доставки, например установлен моджуль доставка плюс, и доставки созданные этим модулем не попадают в список, в ответе указанным выше модулем.

 

А что это за такой метод АПИ

 

var request = $.ajax({
                    url: '<?php echo $catalog; ?>index.php?route=api/shipping/methods&token=' + token + '&store_id=' + $('select[name=\'store_id\'] option:selected').val(),
                    dataType: 'json',

 

Он используется в форме заказа

 

и похоже он возвращает все методы доставок и оплат, в том числе созданых доставкой+ и оплатой+

 

Как то к этому API можно обратиться из контроллера ORDER и получить все доступные в магазине методы оплаты ? 

 

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


Только что, MihaMix сказал:

 

 

И еще обратил внимание, что в этом методе не получаешь все возможные в системе доставки, например установлен моджуль доставка плюс, и доставки созданные этим модулем не попадают в список, в ответе указанным выше модулем.

 

А что это за такой метод АПИ

 

var request = $.ajax({
                    url: '<?php echo $catalog; ?>index.php?route=api/shipping/methods&token=' + token + '&store_id=' + $('select[name=\'store_id\'] option:selected').val(),
                    dataType: 'json',

 

Он используется в форме заказа

 

и похоже он возвращает все методы доставок и оплат, в том числе созданых доставкой+ и оплатой+

 

Как то к этому API можно обратиться из контроллера ORDER и получить все доступные в магазине методы оплаты и доставки? 

 

 

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


1 час назад, MihaMix сказал:

Класс спасибо, куда кинуть на пиво ? :)

Не пью:cool: 

1 час назад, MihaMix сказал:

$this->config->get($result . '_status')

Проверяют вкл. ли модуль

21 минуту назад, MihaMix сказал:

 $this->load->language('extension/shipping/' . $result);

 

Подгружается языковой пакет модуля

 

22 минуты назад, MihaMix сказал:

$this->language->get('heading_title')

Ну и собственно название модуля.

 

23 минуты назад, MihaMix сказал:

И еще обратил внимание, что в этом методе не получаешь все возможные в системе доставки, например установлен моджуль доставка плюс, и доставки созданные этим модулем не попадают в список, в ответе указанным выше модулем.

Потому-что тот вариант, что я показал отображает только модули которые есть в системе(фактически их файлы)

Все настаиваемые доставки, которые есть в этих модуля получить этим вариантом нельзя.

 

Чтобы было понятно как эти доставки получаются при редактировании/оформлении заказа, аналогично получают они и через API

$results = $this->model_extension_extension->getExtensions('shipping');

foreach ($results as $result) {
    if ($this->config->get($result['code'] . '_status')) {
        $this->load->model('extension/shipping/' . $result['code']);

        $quote = $this->{'model_extension_shipping_' . $result['code']}->getQuote($this->session->data['shipping_address']);

        if ($quote) {
            $json['shipping_methods'][$result['code']] = array(
                'title'      => $quote['title'],
                'quote'      => $quote['quote'],
                'sort_order' => $quote['sort_order'],
                'error'      => $quote['error']
            );
        }
    }
}

 

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

Стало яснее, спасибище.

 

Только вот у меня нет такого метода getExtensions В модели Extension

$results = $this->model_extension_extension->getExtensions('shipping');

И не срабатывает : Notice: Undefined property: Proxy::getExtensions in /var/www/data/www/devsite.ru/system/storage/modification/admin/controller/sale/order.php on line 223

 

Не могу получить все методы доставки которые не на файлах сделаны а модулем dostavka plus.

 

Можно было бы конечно отказаться от использования таких виртуальных доставок и оплат, но хотелосьбы разобраться все таки.

 

Может обучите меня немного этому делу за $ ?  

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


15 минут назад, MihaMix сказал:

И не срабатывает : Notice: Undefined property: Proxy::getExtensions in /var/www/data/www/devsite.ru/system/storage/modification/admin/controller/sale/order.php on line 223

 

Не могу получить все методы доставки которые не на файлах сделаны а модулем dostavka plus.

Правильно, потому-что эта модель находится на в админке, а в каталоге поэтому и не получаете ошибку.

 

18 минут назад, MihaMix сказал:

Можно было бы конечно отказаться от использования таких виртуальных доставок и оплат, но хотелосьбы разобраться все таки.

 

Вам просто достаточно аналогичную функционал сделать этому

1 час назад, MihaMix сказал:

var request = $.ajax({
                    url: '<?php echo $catalog; ?>index.php?route=api/shipping/methods&token=' + token + '&store_id=' + $('select[name=\'store_id\'] option:selected').val(),
                    dataType: 'json',

 

Т.е. либо catalog/controller/api/shipping.php создать аналогичный контроллер для получения доставок или прямо в нем создать свою функцию для получения доставок.

Я бы передавал в него id заказа и уже по id заказа получал всю информацию по адресу доставки ( посмотрите поля которые нужны в  $this->session->data['shipping_address']) и уже передавал его на получения доставки.

 

27 минут назад, MihaMix сказал:

Может обучите меня немного этому делу за $ ?  

ну смотря чему именно учить, времени не особо много свободное, но если что пишите в ЛС)

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

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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