В Controller.php добавил:
// описываем событие onNewComment
protected function onNewParticipant($event) {
$this->raiseEvent('onNewParticipant', $event);
}
которую вызываю во многих контроллерах.
Например в contollers/FunboxController.php
public function actionApprove()
{
if(Yii::app()->request->isPostRequest)
{
$dancer=$this->loadModel();
$notifier = new Notifier();
// добавляем обработчик события
$dancer->onNewParticipant = array($notifier, 'comment'); // ф-ция comment из компонента Notifier
$dancer->approve();
$this->redirect(array('unapproved'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
В модели Funbox.php
/**
* Approves a comment.
*/
public function approve()
{
$this->status=Funbox::STATUS_APPROVED;
$this->update(array('status'));
//создаём экземпляр потомка CEvent
$event = new NewParticipantEvent($this);
$event->dancer = $this;
// triggering event
$this->onNewParticipant($event); // перенёс в компонент Controller
}
И теперь при вызове funbox/approve возникает ошибка
Не определено свойство "Funbox.onNewParticipant".
С чем это связано? Ведь все функции из Controller наследуют и в FunboxController, которые расширяет его.
4677