Получить значение order reference

Автор icemanzp, 07 апреля 2016, 13:52:25

« назад - далее »

icemanzp

Доброго времени суток. Заранее прошу прощения за, возможно, глупый вопрос. С престой только знакомлюсь. Ближе к сути вопроса. Пишу модуль для отправки смс сообщений. Модуль привязан к хуку actionValidateOrder. В общем-то сообщения отправляются, все отлично. Единственное - хотелось бы отправлять пользователю код заказа. В документации написано. что в переменной $params имеются значения order, но reference из него получить никак не выходит. Вот таким способом получилось достать id корзины

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

Дальше в силу своего нубства пока не продвинулся. Таким же способом достать reference не получилось. Задача прежняя: получить код товара. Прошу о помощи, заранее спасибо.

PrestaMan

Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

icemanzp


PrestaMan

#3
В Prestashop 1.6 нет нужды работать с $params.
$context->$cart->id;
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

icemanzp

пробовал такой вариант. Пустое значение возвращает :(

Adik

Для prestashop 1.4
$order = $params['order'];
$id_order = (int)$order->id;

icemanzp

Цитата: Adik от 07 апреля 2016, 14:15:25
Для prestashop 1.4
$order = $params['order'];
$id_order = (int)$order->id;


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

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

PrestaMan

Для Prestashop 1.6 используют объект context.

Для получения объекта созданого  заказа в модуле
$order = new Order($this->module->currentOrder);
// потом можно достать все парамметры заказа
$order->....
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Adik

Номер заказа будет присвоин после выполнения метода
validateOrder.(...
До этого используется
$cart->id;

icemanzp

Цитата: Adik от 07 апреля 2016, 14:26:06
Номер заказа будет присвоин после выполнения метода
validateOrder.(...
До этого используется
$cart->id;
а если модуль расположен в  хуке validateOrder, он выполняется после метода validateOrder или до?

PrestaMan

В 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.
Лучшие цены!!!

icemanzp

Цитата: PrestaMan от 07 апреля 2016, 14:59:11
В 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
));


Хм..понятно. Спасибо за помощь. Продолжу искать решение..

mAgency

У меня на 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 ?
Решение всех Ваших вопросов в создании Интернет-магазина.

icemanzp

#13
Цитата: mAgency от 07 апреля 2016, 15:21:25

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

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


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


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


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


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


PrestaMan

Сделайте проверку
$order = $params['order'];
var_dump($order);
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!