Я создаю корзину для покупок в Yii. Теперь я хочу построить функцию с именем afterCharged() так же, как и afterSave(). Итак, как это сделать? заранее спасибо
создайте новую функцию как afterSave() Yii
Ответы (1)
Как сказал Михиль, вы должны использовать событие в своем методе.
function charge(){
//Perform charge related actions
$this->onCharge(new CEvent($this));
//... maybe some code over here after raising the event
}
public function onCharge($event){
$this->raiseEvent('onCharge', $event);
}
Теперь вам нужно поймать поднятое событие. Итак, в этом компоненте вы объявите, какой класс и какой метод должен его поймать (например, в методе init
)
//OtherClass need to catch the the charge event
$callback = array(new OtherClass,'afterCharge')
$component->onCharge = $callback;
Таким образом, метод afterCharge
из OtherClass
будет вызываться при выполнении charge()
.
Кстати, метод afterCharge должен иметь следующую сигнатуру
function afterCharge($event) {
}
Источники:
person
darkheir
schedule
28.03.2014
Также у меня есть вопрос: $component — это глобальная переменная. Спасибо большое
- person Hoang NK; 29.03.2014
Нет, это класс, который вызывает событие, поэтому вы можете заменить его на $this
- person darkheir; 29.03.2014
И еще один вопрос :). Итак, я могу использовать событие в классе контроллера?
- person Hoang NK; 29.03.2014
Хм, да, я думаю. Если я хорошо помню, события реализованы в CComponent, поэтому каждый класс, который наследует от него, может использовать события. А CControler расширяет CComponent, так что должно работать :-)
- person darkheir; 29.03.2014