miniShop2. Удаление товара из заказа при msOnSubmitOrder

Здравствуйте.

Нужно удалить товар из заказа в плагине. Ковырял исходники файла msorderhandler.class.php, но не нашёл способа, как можно удалить товар из заказа при событии, например msOnSubmitOrder или msOnBeforeCreateOrder. Может быть есть какой-то способ, используя который возможно это сделать, не прибегая к написанию класса, который будет перехватывать работу с заказом?
Павел Гвоздь
18 ноября 2015, 14:13
modx.pro
2 752
0
Поблагодарить автора Отправить деньги

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

Павел Гвоздь
18 ноября 2015, 17:20
0
Или решение есть только при событии msOnCreateOrder? То бишь удалять выбранные мной товары из заказа, когда он уже сохранён и объект создан.
    Воеводский Михаил
    18 ноября 2015, 17:36
    0
    В событии msOnSubmitOrder товар нужно удалять из корзины.
      Павел Гвоздь
      18 ноября 2015, 17:37
      0
      Вот у меня в связи с этим вопрос — как это реализовать?)
      А, помоему там в объекте «order» передан класс для работы с корзиной. Спасибо!
        Павел Гвоздь
        18 ноября 2015, 17:58
        0
        Очистить то очистил корзину, когда товары приходится все удалить. А вот как дать пользователю понять, что корзина очистилась по причине того, что все товары, которые он выбрал, уже недоступны, да ещё и перезагрузить страницу, чтобы он не бился головой об стену, так сказать, думая, что корзина то у него полная.

        Поясню немного иначе. Скрипт, проверяя определённые условия, удаляет товары из корзины перед оформлением заказа. Может получиться так, что товары придётся удалить все. Следовательно пользователю об этом стоит сообщить, что корзина его пуста в связи с неимением уже на складе товара. А вот как потом обновить страницу? У меня получается либо обновить страницу и оставить пользователя в непонимании, что вообще произошло, либо сообщить юзеру сообщение и оставить страницу «как есть», что тоже плохо. Вот так делема. :)
          Воеводский Михаил
          18 ноября 2015, 19:09
          +1
          Решение пока придумалось костыльное — при очистке корзины выставлять флаг в сессии, после чего принудительно перезагружать страницу. При формировании страницы корзины всегда проверять этот флаг и выводить сообщение, если он установлен. После вывода сообщения, естественно, флаг сбрасывать.
        Павел Гвоздь
        18 ноября 2015, 17:36
        0
        Тогда, если это решается так, то у меня другой вопрос. Вот у меня есть определённая проверка, после которой омжет оказаться так, что в оформленном заказе не останется товаров, следовательно такой заказ юзеру отдавать безсмысленно, как и оставлять его в системе. Я его удаляю. Возвращаю в msorderhandler.class.php сообщение о том, что товары, которые он выбрал уже недоступны для покупки, а как корзину его опустошить из плагина по событию msOnCreateOrder?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6