before - это точка до обновления элементаЧем отличаются before и after я понимаю, спасибо. Я имел в виду, какое из них по правильному использовать. Я просто не понимаю какие параметры туда приходят (именно при обмене). Но вариант с промежуточным полем в самой карточке, в принципе, это вариант. Я правда не большой любитель лишние поля городить. Я пока заколхозил таблицу куда делаю записи до и после. Тоже корявенько, хотя бы не видно =))
after - это точка после обновления элемента
В точке before вы в элемент в какое-то промежуточное поле можете писать старое количество.
В точке after вы можете сверять содержимое этого поля с новым количеством.
Пройдитесь поиском по системному коду, найдите событие и посмотрите какие данные передаются вовнутрь и в какой момент - это самый простой и самый правильный метод определения.Ну видимо так и придется, спасибо. Жаль у них нет отметок о версионности в документации. У меня например целевая версия 2.8.6, а в документации уже явно часть методов, которые в данной версии не реализованы.
Мало того, это фактически единственный правильный способ, так как у вас может быть ЮМИ какой-то версии, в которой системный код может выглядеть как угодно. В частности, там могут быть какие-то баги, которые исправлены в более поздних версиях (например, не все задокументированные параметры передаются), а в вашей версии они еще не исправлены.
надо обновлятьсяМеханизм чистки базы у меня "на руках" появился немного раньше. У меня был прототип, который они впоследствии, как я понял, использовали в релизе. Я в какой-то момент момент делал обновление достаточно крупного магазина и плотно работал со службой заботы.
с 2.9.??? появился механизм достойной чистки базы
с 2.11 существенно повышено быстродействие
с 14 - поддержка php7 , которая тупо в 2-3 раза повышает скорость работы при тех же характеристиках сервера и настройках сайта
+ пофикшены все баги
Главное - тут хранить не только количество, но и id элемента, так как старое количество может тупо быть от другого объекта, нежели новое :-)
if($eventPoint->getMode() == 'before') {
self::$amount = $element->getValue('amount');
} elseif($eventPoint->getMode() == 'after') {
if($element->getObject()->getValue('amount') != self::$amount) {
}
}