minishop2 order->submit() очищает корзину

Бьюсь уже который час над следующим кодом и не могу понять в чем дело:
$scriptProperties = array(
        'json_response' => true, // возвращать ответы в JSON
        // 'max_count' => 1, // максимальное число товаров для добавления за один раз
        'allow_deleted' => false, // не добавлять в корзину товары с deleted = 1
        'allow_unpublished' => false, // не добавлять в корзину товары с published = 0
    );
    
    $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
    // Инициализируем класс в текущий контекст
    $miniShop2->initialize($modx->context->key, $scriptProperties);
    $temp = $miniShop2->cart->get();
    $miniShop2->cart->clean();
    $miniShop2->cart->add($_POST['id'], $_POST['quantity_good']);
    $miniShop2->order->add('reciever','test');
    $miniShop2->order->add('email', 'kepamuk@yandex.ru'); //$_POST['email']
    $miniShop2->order->add('payment', 1);
    // $miniShop2->order->add( 'delivery', 1 );
    
    $miniShop2->order->submit();
    $miniShop2->cart->set($temp);
делаю покупку в один клик, перед тем как отправить товар сохраняю текущую корзину в переменную ($temp = $miniShop2->cart->get();), что бы после отправки вновь вернуть её на место ($miniShop2->cart->set($temp);), но когда доходит до $miniShop2->order->submit(); происходит какая то ошибка, и код дальше не отрабатывает, если поставить $miniShop2->cart->set($temp); выше сабмита, код отработает и в корзину добавятся товары которые были удалены после $miniShop2->cart->clean();, не пойму что происходит в сабмите, как то можно посмотреть что там? ошибка или что, самое печальное что раньше работало, теперь не могу понять что я такого сделал что перестало работать ппц просто! Подскажите в чем может быть дело и как можно транслитировать что там происходит
stas
23 июля 2016, 19:23
modx.pro
2 668
0

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

Дмитрий Мансуров
14 мая 2017, 22:41
0
$miniShop2->order->submit();
и
$miniShop2->cart->clean();
Корзину очищают

Не понимаю зачем ты очищаешь корзину а потом пытаешься сформировать заказ с уже пустой корзиной
    momento
    09 декабря 2017, 23:10
    0
    напишите подробнее инструкцию — как удалить с помощью ссылки ??? что должна быть за конструкция в миникорзине???
    к чему этот php — $miniShop2->cart->clean(); ??? совсем ничего не понятно… какие-то обрывки…
    как сделать так чтобы
    <a href="[[~[[*id]]]]" class="del">Очистить корзину</a>
    чистил корзину???
      mkas
      17 августа 2021, 11:09
      0
      А никак, они сами не знают)) Сделали мутанта, теперь поди разбери, как оно работает))
      mkas
      17 августа 2021, 11:36
      0
      Столкнулся с необходимостью сделать покупку в один клик. Кнопка находится в той же форме, что и обычная кнопка добавления товара. Логика такая: по нажатию на кнопку обратимся к php для очистки корзины, а новый товар добавится после силами могучего Minishop2.

      HTML
      <button type="submit" data-type="getOne">Купить в 1 клик</button>
      JS
      function startGetOneWork(){
              let getOneWork = document.querySelectorAll('[data-type="getOne"]');
              for(index = 0; index < getOneWork.length; index++){
                  getOneWork[index].addEventListener('click', () => {
                      console.log('Попытка очистки корзины');
                      reset_button_podmena();
                      clearOrderFixTresh();
                      
                      async function clearOrder(){
                          let url = "/minishop2-controller?type=clearOrder";
                          let headers = {
                              method: "POST"
                          }
                          let response = await fetch(url, headers);
                          if(response.ok){
                              console.log("Корзина очищена");
                          }else{
                              console.log("Ошибка очистки корзины");
                          }
                      }
                  });
              }
          }
          
          startGetOneWork();
      PHP (создаете ресурс, в нем вызываете сниппет)
      if($_SERVER["REQUEST_METHOD"] == "POST"){
              switch($_GET["type"]){
                  case "clearOrder":
                      $miniShop2 = $modx->getService('miniShop2');
                      $miniShop2->initialize($modx->context->key);
                      $miniShop2->cart->clean();
                      break;
                  default: return;
              }
          }
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4