0

У меня есть проект на yii2. Он пишет определенные логи при изменении статуса в catalogOrder, выгдялит это таким образом.

bootstrap.php

\yii\base\Event::on(
    \ms\loyalty\catalog\common\models\CatalogOrder::class,
    \ms\loyalty\catalog\common\models\CatalogOrder::EVENT_AFTER_UPDATE,
    [\common\listeners\CatalogOrderListener::class, 'catalogOrderOnChangeStatus']
);

\yii\base\Event::on( \ms\loyalty\catalog\common\models\CatalogOrder::class, \ms\loyalty\catalog\common\models\CatalogOrder::EVENT_AFTER_INSERT, [\common\listeners\CatalogOrderListener::class, 'catalogOrderOnChangeStatus'] );

Ну и сам код:

public static function catalogOrderOnChangeStatus(Event $event)
{
    try {
        /** @var CatalogOrder $catalogOrder */
        $catalogOrder = $event->sender;
    if ($event instanceof AfterSaveEvent || $catalogOrder->isAttributeChanged('status')) {
        (new CreateExtranetLog())->handle('order_id', $catalogOrder->id, self::EXTERNAL_LOG_URL);
    }
}
catch (Exception $e) {
}

}

Самое интересное, что когда срабатывает 'добавление' он отрабатывает корректно, но когда срабатывает 'обновление', этого не происходит. Подскажите куда копать??

  • Добавить больше логов, очевидно. Убедиться что происходит именно AfterSaveEvent, что меняется атрибут status, что не выпадает эксепшен. – u_mulder Nov 28 '23 at 08:14
  • @u_mulder Я пробовал они не пишутся. Хотя везде всё прописано. Такое ощущение, что на update он просто не вызывается. – Moonwolf45 Nov 28 '23 at 08:23
  • Почему бы не воспользоваться отладкой и не посмотреть все значения в событии и вообще в стеке? – Алексей Шиманский Nov 28 '23 at 08:23
  • @АлексейШиманский Каким образом ? – Moonwolf45 Nov 28 '23 at 08:24
  • Я же написал: отладка О_о .... https://ru.stackoverflow.com/a/701146/191482 – Алексей Шиманский Nov 28 '23 at 08:40
  • Интересно, а почему выбрали такое решение? Ведь можно в модели CatalogOrder использовать afterSave, где можно делать тоже самое и без проблем) – Евгений Dec 01 '23 at 10:16
  • @Евгений Ну это было не моё решение, это было уже написано. Я просто пытался найти проблему. И кажется нашел. Потому что проблема была в том, в определенный момент менялся определенный параметр и это был не статус. Поэтому логи не срабатывали. – Moonwolf45 Dec 02 '23 at 13:13

0 Answers0