Получить адрес заказчика в плагине

Приветствую.
Задача простая: при создании юзером заказа прочитать в плагине поля адреса и в соответствии с ними выставить статус. Делаю так:

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» из плагина?..
Андрей
22 марта 2017, 09:45
modx.pro
1
3 004
0

Комментарии: 7

Володя
22 марта 2017, 13:20
0
$Address = $msOrder->getOne('Address');
$room = $Address->get('room');
    Андрей
    22 марта 2017, 15:10
    0
    В от здесь подсмотрел у вас вот эту конструкцию. С ней статус действительно обновляется, а без нее нет.

    echo $modx->toJSON(array(
        'success' => true,
        'message' => '',
        'data'    => array(),
        ));
        exit;
    Даже после выполнения функции:

    $miniShop2->changeOrderStatus($id,$ststus);
    Вопрос почему?
      Володя
      22 марта 2017, 22:01
      0
      да вообще думаю реализацию смены статуса в плагине на это событие не айс.
      сделайте иначе, событие смените на 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, если есть меняем статус и удаляем нашу переменную.

      немного сложнее, но думаю будет работаь.
    Андрей
    22 марта 2017, 14:04
    0
    О! Спасибо! Пашет!
      Андрей
      22 марта 2017, 14:21
      0
      Млин, очередная засада. Из-за exit; не срабатывает переход на другую страницу после нажатия кнопки «Отправить заказ». Без exit; не обновляется статус.
        Марат Марабар
        22 марта 2017, 20:33
        0
        А так получается?
        ...
        ...
        ...
        $modx->sendRedirect($modx->makeUrl(123, '', '', 'full')); // 123 - ID страницы, куда нужен редирект
        exit;
        Андрей
        23 марта 2017, 09:01
        -1
        Не, не редиректит. Пришлось через js перебрасывать на нужную страницу…
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7