Автор Тема: Получить значение order reference  (Прочитано 161 раз)

07 Апреля 2016, 13:52:25
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Доброго времени суток. Заранее прошу прощения за, возможно, глупый вопрос. С престой только знакомлюсь. Ближе к сути вопроса. Пишу модуль для отправки смс сообщений. Модуль привязан к хуку actionValidateOrder. В общем-то сообщения отправляются, все отлично. Единственное - хотелось бы отправлять пользователю код заказа. В документации написано. что в переменной $params имеются значения order, но reference из него получить никак не выходит. Вот таким способом получилось достать id корзины

$refid=$params['order']->id_cart;

Дальше в силу своего нубства пока не продвинулся. Таким же способом достать reference не получилось. Задача прежняя: получить код товара. Прошу о помощи, заранее спасибо.
07 Апреля 2016, 13:55:19
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Версия prestashop какая?
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
07 Апреля 2016, 13:57:21
Ответ #2
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
07 Апреля 2016, 14:06:06
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
В Prestashop 1.6 нет нужды работать с $params.
$context->$cart->id;
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
07 Апреля 2016, 14:09:57
Ответ #4
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
пробовал такой вариант. Пустое значение возвращает :(
07 Апреля 2016, 14:15:25
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13123
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для prestashop 1.4
$order = $params['order'];
$id_order = (int)$order->id;
07 Апреля 2016, 14:23:54
Ответ #6
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для prestashop 1.4
$order = $params['order'];
$id_order = (int)$order->id;

Спасибо за помощь, но тоже пусто  :(

может быть, дело в хуке и, например, номер заказа на момент выполнения модуля просто не сформирован?
07 Апреля 2016, 14:24:01
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Для Prestashop 1.6 используют объект context.

Для получения объекта созданого  заказа в модуле
$order = new Order($this->module->currentOrder);
// потом можно достать все парамметры заказа
$order->....
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
07 Апреля 2016, 14:26:06
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 13123
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Номер заказа будет присвоин после выполнения метода
validateOrder.(...До этого используется
$cart->id;
07 Апреля 2016, 14:49:57
Ответ #9
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Номер заказа будет присвоин после выполнения метода
validateOrder.(...До этого используется
$cart->id;
а если модуль расположен в  хуке validateOrder, он выполняется после метода validateOrder или до?
07 Апреля 2016, 14:59:11
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
В Prestashop 1.5-1.6 название хука actionValidateOrder. Выполняется после того, как заказ был подтвержден (т.е. в методе validateOrder). Не обязательно оплачен (т.е. для всех методов оплаты, в том числе с отсроченным платежом).
// Hook validate order
Hook::exec('actionValidateOrder', array(
    'cart' => $this->context->cart,
    'order' => $order,
    'customer' => $this->context->customer,
    'currency' => $this->context->currency,
    'orderStatus' => $order_status
));
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
07 Апреля 2016, 15:12:14
Ответ #11
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В Prestashop 1.5-1.6 название хука actionValidateOrder. Выполняется после того, как заказ был подтвержден (т.е. в методе validateOrder). Не обязательно оплачен (т.е. для всех методов оплаты, в том числе с отсроченным платежом).
// Hook validate order
Hook::exec('actionValidateOrder', array(
    'cart' => $this->context->cart,
    'order' => $order,
    'customer' => $this->context->customer,
    'currency' => $this->context->currency,
    'orderStatus' => $order_status
));

Хм..понятно. Спасибо за помощь. Продолжу искать решение..
07 Апреля 2016, 15:21:25
Ответ #12
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22094
  • Репутация: +17108/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
У меня на prestashop 1.6 работают модули с param.
public function install()
{
    if (!parent::install() || !$this->registerHook('payment') || !$this->registerHook('actionValidateOrder') || ...     
...
}
public function hookActionValidateOrder($params)
{
    $order_id = $params['order']->id_order;
    $customer = $params['customer'];
    ....
    $smarty->assign(array(
  'order_id' => $id_order,
  'email' => $customer->email,
....
Письмо приходит в нем все данные по заказу.

icemanzp
у вас
$order->idа нужно
$order->id_orderБудут работать оба метода. В Prestashop 1.6 есть поддержка старых функций. Можно использовать оба варианта.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
07 Апреля 2016, 16:13:44
Ответ #13
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля

а нужно
$order->id_orderБудут работать оба метода. В Prestashop 1.6 есть поддержка старых функций. Можно использовать оба варианта.

Блин, ну, к сожалению, пока ни один не работает. Опять же..

$order = $params['order'];
$refid = $order->id_cart;

Это работает нормально, возвращает корректное значение. Когда пытаюсь сделать по вашему примеру:

$order = $params['order'];
$refid = $order->id_order;

$refid ничего не присваивается

07 Апреля 2016, 17:02:32
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Сделайте проверку
$order = $params['order'];
var_dump($order);
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!