Sergey_K
Итак, все данные уже лежат в сессии, осталось только вызвать метод submit() и он сделает всю нужную работу:
В этот метод можно прислать массив данных для заказа, они, конечно, должны будут пройти проверку и заменят, то что уже там есть. Это сделано для возможности использовать классические формы. Перед проверкой данных вызывается событие msOnSubmitOrder.
Sergey_K
В итоге массив можно прислать, только он нигде не используется :)
Sergey_K
Никакие данные нигде не добавляются.
🙈 PG
пару миут, проверю одну теорию
Sergey_K
Ога
🙈 PG
Sergey_K
Просто в плагине. Получал геолокацию и дальше вот так ее вставлял
Sergey_K
В дампе результат этого был - 1
🙈 PG
судя по исходникам у тебя 2 пути
Sergey_K
Т.е. set() возвращал
Sergey_K
1
🙈 PG
1) плагин
2) расширение msorderhandler
Sergey_K
Но вот в логах была херь
Sergey_K
Перепишу этот метод
Sergey_K
Но очень странно, что в документации написано так, а в исходниках про это забыли
🙈 PG
🙈 PG
🙈 PG
по сути плагин на msOnCreateOrder
$msOrder->set('properties',['test'=>123]);
$msOrder->save();
Sergey_K
Sergey_K
Но это костыли все же я считаю
🙈 PG
ну раз ты в плагине получаешь данные геолокации, можно же сразу их и записать
Sergey_K
Ну я их получаю все же ДО заказа
🙈 PG
$order = $this->modx->newObject('msOrder');
$order->fromArray(array(
'user_id' => $user_id,
'createdon' => $createdon,
'num' => $this->getNum(),
'delivery' => $this->order['delivery'],
'payment' => $this->order['payment'],
'cart_cost' => $cart_cost,
'weight' => $cart_status['total_weight'],
'delivery_cost' => $delivery_cost,
'cost' => $cart_cost + $delivery_cost,
'status' => 0,
'context' => $this->ms2->config['ctx'],
));
тут ведь и собака зарыта
Sergey_K
Там должен быть array_merge()
🙈 PG
можешь через set забивать properties, но при создании заказа они не будут учтены
Sergey_K
Я это уже понял
Sergey_K
При этом лезет error log
🙈 PG
и новые данные тоже не будут попадать
Sergey_K
Sergey_K
Я думал, что, может, чота не учел.... там есть еще непонятная сущность $config
Sergey_K
В конструкторе. Думал, может из него как-то лезет. Но нет.
Sergey_K
По сути это косяк минищопа
🙈 PG
видимо задумано так чтобы дополнительные данные передавать уже в плагине
Sergey_K
Неа
Sergey_K
Это косяк
Sergey_K
Потому что событие orderSubmit по сути бесполезно
Sergey_K
Оно же нужно для добивки заказа нужными допданными
Sergey_K
С допданными будет только одна сложность - отсечь ключи (имена полей), которых нет в заказе = таблице.
🙈 PG
Sergey_K
Ну возможно, я просто сам не знаю наверняка. Потестирую.
А так - надо, конечно, этот косяк править.
🙈 PG
но в свете последних событий, это не точно 😂
Sergey_K
Это ты про перенос на МОД3?
🙈 PG
ну учитывая что такие косяки вылазят в решениях которые работают годами
🙈 PG
стремно
Sergey_K
Sergey_K
Хотя странно
🙈 PG
по тому как нужно в другом случае следить за обновлениями итд
Sergey_K
Ну плагин это в данном конкретном случае не по феншую совсем
Sergey_K
Если наплевать, то плагином я и сам выйду из ситуации
🙈 PG
Sergey_K
Мне претит делать допом десяток запросов, когда можео вставить все нужное сразу
Иван
Sergey_K
Ну т.е. вставлять все, а потом апдейтить вставленное при том, что полные данные есть сразу это костыль адский.
Я считаю
Иван
https://www.udemy.com/course/modern-javascript-from-beginning/
Иван
Кому хороший свежий курс
🙈 PG
?
я понимаю что там есть проблемы еще, и если запускать на нем новый проект точно начну решать их, а это увеличит срок сдачи проекта и не понятно будет где именно считать время потраченное на проект а где время на исправления косяков. а если начну отправлять ПР, тогда с меня совсем не слезут
🙈 PG
по тому стрёмно
Иван
Иван
Иван
если начну отправлять ПР, тогда с меня совсем не слезут
🙈 PG
я по тому в какой-то из чатов скидывал исправления чтобы в гит не лезть
Sergey_K
Я про order/getcost и прочие
🙈 PG
я разное делал
Sergey_K
Я же так понимаю, что это контроллер их принимает и раздает тупо по классам.
Вот вопрос, можно ли перегрузить еще и контроллер.
Чтобы добавить свои команды.
Sergey_K
Потому что кривая схема, если мне надо добавить получение списка городов, или нормализацию адреса - то надо делать отдельно свой другой контроллер.
Sergey_K
Я так понял, что минишоп такого не может. Или может?
🙈 PG
самым оптимальным и переносимым решением оказалось в моем случае писать свой коннектор и там уже писать кастомную логику
🙈 PG
но с расширением классов тоже обычно все работает
Sergey_K
Ну в доке нет расширения именно коннектора.
🙈 PG
в твоем случае я не знаю что именно не получилось
Sergey_K
Я туда еще не лазал
🙈 PG
https://github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/model/minishop2/minishop2.class.php#L141
🙈 PG
вот это нужно дополнить?