Не выводит то что должно

есть код, который должен выводить output переменную, но выводит совсем не понятно что

{
    "success": true,
    "message": "",
    "data": {
        "msorder": 80
    }
}
if ($action == 'createOrder') {
    $product_id = $_POST['product_id'];
     $scriptProperties = array(
      'json_response' => true,
      'max_count' => 1000,
      'allow_deleted' => false,
      'allow_unpublished' => false
    );
    
    $miniShop2 = $modx->getService('miniShop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
    $miniShop2->initialize($modx->context->key, $scriptProperties);
    
    $output = [];
    
    try {
        $miniShop2->cart->clean();
        
        $cart = $miniShop2->cart->add($product_id,1, ['size' => '']);
        $order = $miniShop2->order->submit();
     
        $output['success'] = true;
    } catch (Exception $e) {
        $output['success'] = false;
    }
    echo json_encode($output);
}
Максим
09 августа 2023, 11:50
modx.pro
253
0

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

Артур Шевченко
10 августа 2023, 17:43
0
Не должен. потому что, если ты посмотришь код метода $miniShop2->order->submit(), то увидишь, что в текущей конфигурации, он делает редирект. Если же ты сделаешь так
$ms2->order->config['json_response'] = true;
В этом случае редиректа не будет, но тво код всё равно ничего не вернёт, потому что всё в том же методе, вызывается функция die(), которая пресекает все твои чаяния на корню. Решение: расширить класс msOrderHandler и возвращать из него json.

Можешь глянуть мою заметку
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1