Ajax создание заказа и сохранение корзины
Здравствуйте!
Почти сделал, быстрый заказ он столкнулся с проблемой ответа $miniShop2->order->submit(), я его как бы сохраняю в переменную, но он ретурнит ответ, т.е. код после вызова submit не срабатывает т.к. уже ответил.
Ответ приходит такой
joxi.ru/gmvKvnNcv3O1X2
А должен выводить массив $resp.
Подскажите пожалуйста что не так?
JS
Почти сделал, быстрый заказ он столкнулся с проблемой ответа $miniShop2->order->submit(), я его как бы сохраняю в переменную, но он ретурнит ответ, т.е. код после вызова submit не срабатывает т.к. уже ответил.
Ответ приходит такой
joxi.ru/gmvKvnNcv3O1X2
А должен выводить массив $resp.
Подскажите пожалуйста что не так?
JS
$.ajax({
dataType: 'json',
type: 'POST',
url: urlRequest,
data: {
action: 'FastOrderCreate',
form: form.serializeArray()
},
success: function( r ) {
console.log( r );
......
}
});
});PHP$scriptProperties = array(
'json_response' => 1,
'max_count' => 1,
'allow_deleted' => 0,
'allow_unpublished' => 0
);
$miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
$option = [];
$miniShop2->initialize($modx->context->key, $scriptProperties);
$resp['tmpCart'] = $tmpCart = $miniShop2->cart->get();
$miniShop2->order->clean();
$miniShop2->cart->clean();
$miniShop2->cart->add($dataForm['id'],1,$option);
$miniShop2->order->add('receiver', htmlspecialchars($name,ENT_QUOTES));
$miniShop2->order->add('phone', $dataForm["phone"]);
$miniShop2->order->add('email', $dataForm["phone"].'@'.$_SERVER['HTTP_HOST']);
$miniShop2->order->add('payment', 1);
$miniShop2->order->add( 'delivery', 1);
/* Возвращает раньше нужного кода */
$resp['arr'] = $arr = $miniShop2->order->submit();
if($arr['success']==true && $arr["data"]["msorder"]){
$resp['out'] = $pdo->parseChunk('@FILE chunks/minishop/fastOrderCreateSuccess.tpl',$arr);
}
$miniShop2->cart->set($tmpCart);
echo json_encode($resp);return; Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А каких-нибудь плагинов на ms*** нет активных у сайта, которые могут так делать?
Но возникает другой вопрос, как получить так сказать «на месте» ид созданного заказа ?) ЧТобы вывести его пользователю.
Вот какой результат без флага json_response, в нем ничего нет соответственно
joxi.ru/vAWjKbotqeW7L2
А что если: сделать запрос с json_response, получить информацию о заказе, а потом отправить серверу еще один запрос с №заказа, и уже так сказать, со второй попытки, отрендерить чанк.
1. Убрать оплату из заказа и вернуть json_response в конфиг, тогда exit не будет вызываться, а в ответе будет номер заказа.
2. Брать номер заказа из сессии — он добавляется туда сразу после создания заказа.
Наверно конкретно в этой функии недочеты под такое.
блин дошел до этой функции, но не изучил, развел тут целый топик.
Т.к. это быстрый заказ по сути оплата не так важна. Можно получить id заказа и потом уже присвоить в этом же коде.Воспользовался этим решением, все работает :)
joxi.ru/p27V9KytWXeRom
Где-то давно видел почему не сохраняется корзина, полагаю что-то с сессией или еще что-то делать надо?
Спасибо еще раз вам, Алексей и Артем!