Hat jemals jemand einen ActiveRecord-Ereignishandler so binden müssen, dass er nur in bestimmten Szenarien ausgelöst wird? In einer idealen Welt würde die Methode ActiveRecord on()
auch einen Parameter $ scenics nehmen und den Handler nur auslösen, wenn ActiveRecord dieses Szenario zum Zeitpunkt des Ereignisses verwendet. Aber da dies nicht der Fall ist, suche ich nach einer sauberen und zuverlässigen Methode, um diese Art von Funktionalität zu implementieren.Yii2: ActiveRecord-Ereignisse, die nur für ein Szenario ausgelöst werden
Edit: Dies muss mit beliebigen Ereignis, einschließlich der integrierten Ereignisse durch das Yii-Framework ausgelöst ausgelöst werden (z. B. ActiveRecord::EVENT_AFTER_INSERT
).
Ich denke, Sie können '\ yii \ base \ Event' erweitern und Ihre eigene Methode' onScenario() 'hinzufügen. Es ist das gleiche wie 'on()', aber ein zusätzliches Argument mit Szenarien erhalten. Sie können es wie die Methode 'scenarios()' in ActiveRecord verwenden. Außerdem müssen Sie die Methode 'trigger()' überschreiben und vor dem Parent-Aufruf eine Szenario-Prüfung hinzufügen. – SiZE