Получить адрес заказчика в плагине
Приветствую.
Задача простая: при создании юзером заказа прочитать в плагине поля адреса и в соответствии с ними выставить статус. Делаю так:
Без условия статус переключается. Как правильно добраться до поля «room» из плагина?..
Задача простая: при создании юзером заказа прочитать в плагине поля адреса и в соответствии с ними выставить статус. Делаю так:
if ($modx->event->name=='msOnCreateOrder') {
$miniShop2 = $modx->getService('miniShop2');
if( $msOrder->get('room')=='?') $miniShop2->changeOrderStatus($msOrder->get('id'),7);
echo $modx->toJSON(array(
'success' => true,
'message' => '',
'data' => array(),
));
exit;
}
Без условия статус переключается. Как правильно добраться до поля «room» из плагина?..
Комментарии: 7
$Address = $msOrder->getOne('Address');
$room = $Address->get('room');
В от здесь подсмотрел у вас вот эту конструкцию. С ней статус действительно обновляется, а без нее нет.
echo $modx->toJSON(array(
'success' => true,
'message' => '',
'data' => array(),
));
exit;
Даже после выполнения функции:$miniShop2->changeOrderStatus($id,$ststus);
Вопрос почему?
да вообще думаю реализацию смены статуса в плагине на это событие не айс.
сделайте иначе, событие смените на msOnBeforeCreateOrder, пишите у такого заказа в поле properties например
дальше создаем второй плагин на OnHandleRequest, в нем проверяйте переменную github.com/bezumkin/miniShop2/blob/f0bdf665dd61ea20e4cbf0f0bbcd74d212bf20b6/core/components/minishop2/elements/snippets/snippet.ms_get_order.php#L14
и есть ли переменная change_status в массиве properties, если есть меняем статус и удаляем нашу переменную.
немного сложнее, но думаю будет работаь.
сделайте иначе, событие смените на msOnBeforeCreateOrder, пишите у такого заказа в поле properties например
'change_status' => 'id статуса'
все, больше тут ничего не делаем.дальше создаем второй плагин на OnHandleRequest, в нем проверяйте переменную github.com/bezumkin/miniShop2/blob/f0bdf665dd61ea20e4cbf0f0bbcd74d212bf20b6/core/components/minishop2/elements/snippets/snippet.ms_get_order.php#L14
и есть ли переменная change_status в массиве properties, если есть меняем статус и удаляем нашу переменную.
немного сложнее, но думаю будет работаь.
О! Спасибо! Пашет!
Млин, очередная засада. Из-за exit; не срабатывает переход на другую страницу после нажатия кнопки «Отправить заказ». Без exit; не обновляется статус.
А так получается?
...
...
...
$modx->sendRedirect($modx->makeUrl(123, '', '', 'full')); // 123 - ID страницы, куда нужен редирект
exit;
Не, не редиректит. Пришлось через js перебрасывать на нужную страницу…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.