2015-03-30 4 views
0

Я хотел бы вызвать некоторые события в моей модели, если я зарегистрирую свои события через app-> on в index.php, тогда я не получаю требуемый $event->data из объекта события.Как регистрировать события в yii2

Как регистрировать обработчики событий, поэтому, когда я вызываю триггер, он вызывает правильную функцию с объектом события.

Пример кода:

namespace app\modules\Product\models\Product; 

class Product extends Entity\Entity { 
    public static function tableName() { 
     return 'sometable'; 
    } 

    public function afterFind() { 
     parent::afterFind(); 
     $event = new yii\base\Event; 
     $event->data = $this; 

     $this->trigger('calculatePrice', $event); 
    } 

} 

namespace app\modules\PriceRules\models; 

class PriceRules extends yii\base\Model { 
    public static function calculatePrice($event) { 
     $entity = $event->data; 
    } 
} 

//somehow register events 
+0

Вы должны прочитать эту http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#configuration-format. И жаль, но вам действительно нужно использовать события только для установления цены? – soju

ответ

0

я нашел решение. Я поместил PriceRules модуль внутри bootstrap и добавил этот код там:

yii\base\Event::on(Product::className(), 'calculatePrice', [PriceRulesEvent::className(), 'calculatePrice']);