Работа с полями адреса в классе msOrderHandler
Добрый день! Столкнулся со следующей проблемой: нужно написать плагин, заменяющий при отправке заказа в minishop2 поле 'comment', но перезаписать поле не получается.
Создан плагин по событию msOnBeforeCreateOrder и написан такой код:
Пробовал методы remove() и add() чтобы переписать значение, но тоже никакого результата.
Пробовал указанный выше код добавить прямо в функцию submit() в msOrderHandler с тем же результатом: get() работает, остальные методы — нет.
Есть какие-нибудь еще идеи?
Создан плагин по событию msOnBeforeCreateOrder и написан такой код:
<?php
$tmp = $order->get();
if (!empty($tmp['comment'])) {
$tmp['comment'] = 'новый текст комментария';
$order->set($tmp);
}Метод get() отрабатывает и получает массив с данными заказа, а вот метод set() ничего не делает и дальше в базу пишется первоначальный комментарий.Пробовал методы remove() и add() чтобы переписать значение, но тоже никакого результата.
Пробовал указанный выше код добавить прямо в функцию submit() в msOrderHandler с тем же результатом: get() работает, остальные методы — нет.
Есть какие-нибудь еще идеи?
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я бы сделал так:
В плагине на событие msOnBeforeCreateOrder, естественно…
Тогда уж так, раз с объектом msOrder работаем:
Тоже не работает.
А в чем принципиальная разница использовать $order или $msOrder?
И вообще вот думаю может надо событие какое-нибудь другое выбрать?
Там тоже есть объект msOrder, но после изменения поля comment его надо будет сохранить:
set() — устанавливает значение одного из полей объекта.
save() — сохраняет все изменения в объекте.
Подробно здесь.
Предложенный Гвоздем способ работал с самого начала, но не так как мне нужно.
Дело в том, что меняется комментарий на вкладке «Заказ», а мне нужно изменить комментарий на вкладке «Адрес», поэтому я и не заметил результат. То есть мне нужно изменять то, что подставляется в плейсхолдер [[+address.comment]]
Но наконец-то меняется хоть что-то! Пойду копать в этом направлении.
Всем спасибо за помощь!
P.S. Немного подправил название тикета.