2017-01-19 3 views
0

У меня есть модель с названием События со следующей структурой.События не работают

class Events extends \yii\db\ActiveRecord 
{ 
    const EVENT_SEND_EMAIL_TO_CREATER = 'send-email-to-creater-of-event'; 

    public function init() 
    { 
     $this->on(self::EVENT_SEND_EMAIL_TO_CREATER, [$this, 'sendEmailToCreaterOfEvent']); 
    } 
    ..... 


    public function getParents() 
    { 
     return $this->hasOne(Parents::className(), ['ID' => 'CreatedByUserID'])->select([ 'ID', 'Name' ]); 
    } 

    public function sendEmailToCreaterOfEvent($event) 
    { 
     echo '<pre>'; print_r($event->parents); exit; 
    } 
} 

выше событие срабатывает всякий раз, когда родитель создает новый событие. Но это дает следующую ошибку:

Getting unknown property: yii\base\Event::parents

Отношения не работают в рамках событий? Пожалуйста, предложите.

ответ

2

$event относится к экземпляру \yii\base\Event, который был запущен, а не к вашей активной записи Events. Для того, чтобы получить доступ к объекту, который вызвал событие, вы можете использовать Event::sender:

echo '<pre>'; print_r($event->sender->parents); exit; 

В качестве альтернативы, так как обработчик событий в том же классе, что и объект, вы можете использовать $this:

echo '<pre>'; print_r($this->parents); exit; 
+0

Спасибо .. Это работал как шарм! – Chinmay

Смежные вопросы