создайте новую функцию как afterSave() Yii

Я создаю корзину для покупок в Yii. Теперь я хочу построить функцию с именем afterCharged() так же, как и afterSave(). Итак, как это сделать? заранее спасибо


person Hoang NK    schedule 28.03.2014    source источник


Ответы (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
comment
Также у меня есть вопрос: $component — это глобальная переменная. Спасибо большое - person Hoang NK; 29.03.2014
comment
Нет, это класс, который вызывает событие, поэтому вы можете заменить его на $this - person darkheir; 29.03.2014
comment
И еще один вопрос :). Итак, я могу использовать событие в классе контроллера? - person Hoang NK; 29.03.2014
comment
Хм, да, я думаю. Если я хорошо помню, события реализованы в CComponent, поэтому каждый класс, который наследует от него, может использовать события. А CControler расширяет CComponent, так что должно работать :-) - person darkheir; 29.03.2014