Konstantin B

Konstantin B

Был в сети 16 мая 2021, 17:53
Заказы не принимаю
В общем и целом решение нашел, странно что в документации написано объект $order, меня честно говоря это ввело в заблуждение.

Оставлю это тут, вдруг кому-то пригодится!

Как оказалось достаточно такой конструкции:

<?php
switch ($modx->event->name) {
    case 'msOnCreateOrder':
        
	    if($newStatus == true)
	    {
            $msOrder->set("status","5");
            $msOrder->save();
        }
	break;
}
Читал доку но через массив $order изменить не удалось в событии «msOnCreateOrder»
Пробовал таким образом:

Этот код не работает.
<?php
switch ($modx->event->name) {
    case 'msOnCreateOrder':
        $order = $modx->getOption('msOrder', $scriptProperties);
        if (!is_object($order)) { return; }
        $order->set("status",5);
	$order->save();
	break;
}
Этот код работает, но пользователь остается на странице оформления заказа, при этом заказ создается, статус меняется. Естественно это из-аз exit(), но если его убрать, то статус уже не меняется, вот такие пироги.
<?php
switch ($modx->event->name) {
    case 'msOnCreateOrder':
        $order = $modx->getOption('msOrder', $scriptProperties);
        if (!is_object($order)) { return; }
        $order_id = $order->get('id');
        $modx->log(modX::LOG_LEVEL_ERROR, $msOrder->get('id'));
        
        $miniShop2 = $modx->getService('miniShop2');
        $miniShop2->changeOrderStatus($order_id, 5);
        
        echo $modx->toJSON(array(
            'success' => true,
            'message' => '',
            'data'    => array(),
        ));
        exit(true);
	break;
}
Круто, реально работает, а может подскажешь какой-то другой подход, так как я меняю статус при создании заказа и скрипт по сути дальше не работает после изменения статуса, получается что пользователь остается на странице заказа, а заказ уже создан и статус у него изменился…
Сколько раз локаль не вызывай, работать будет только первый вызов.
Не, если setlocale() вызвать, то локаль смениться на последнюю вызванную, поэтому ее можно разобрать в плагине, в котором происходит смена контекста. Также смену локали можно вызвать в любом документе, что иногда очень удобно, но не в данном случае.