Нужно ли кому-либо когда-либо связывать обработчик событий ActiveRecord таким образом, чтобы он запускался только в определенных сценариях?Yii2: события ActiveRecord, которые запускаются только по сценарию
В идеальном мире метод ActiveRecord on()
также принимает параметр $ scenarios и запускает обработчик только в том случае, если ActiveRecord использует этот сценарий в момент возникновения события. Но так как это не так, я ищу чистый и надежный способ реализовать этот тип функциональности.
Редактировать: Это должно работать с любым событием, включая встроенные события, инициируемые структурой Yii (например, ActiveRecord::EVENT_AFTER_INSERT
).
Я думаю, вы можете расширить '\ yii \ base \ Event' и добавить свой собственный метод' onScenario() '. Он будет таким же, как 'on()', но получает еще один аргумент со сценариями. Вы можете использовать его как метод 'scenarios()' в ActiveRecord. Также вам нужно переопределить метод 'trigger()' и добавить проверку сценария перед вызовом родителя. – SiZE