2013-05-21 2 views
0

У меня есть поведение, которое обновляет запись вместо удаления с beforeDelete обратного вызова.Остановить распространение обратного вызова

public function beforeDelete(Model $model, $cascade = true) { 
    [...] 

    return true; 
} 

Когда я вернусь true, удаление proccess продолжается, вместо остановки. Я не остановлю распространение следующего события, которое равно delete.

Я прочитал о stopPropagation() функции CakeEvent, но не знаю, что делать и как правильно использовать внутри поведения. Можешь мне помочь?

ответ

0

Взятые из the CakePHP core libraries help page:

public function beforeDelete(Model $model, $cascade = true,$event) { 
    [...] 

    $event->stopPropogation(); 
} 

Это должно сделать это.

+0

Поведение распространяется 'ModelBehavior', которые имеют функцию обратного вызова, определенный только с двумя параметрами. Я попробую с '$ model-> getEventManager()' .. Спасибо! –

0

Если вы хотите, чтобы остановить удаление, вы должны вернуться в beforeDelete ложных() обратного вызова вместо возвращения истинного. Проверить the documentation:

Эта функция должна возвращать верно, если вы хотите, чтобы продолжить удаление, и ложь, если вы хотите прервать.

Так что ваш код должен выглядеть следующим образом:

public function beforeDelete(Model $model, $cascade = true) { 
    [...] 

    return false; 
} 
Смежные вопросы