Приветствую.
Очень удивился когда не обнаружил этой возможности в фреймворке, т.к. по-моему это вполне логично. Если я не прав, тогда расскажите как решать эту проблему.
Дело в том, что метод CComponent::raiseEvent() не предоставляет никакой информации о выполненных действиях, и соответственно невозможно изменить дальнейшую работу кода.
Например, переопределив CActiveRecord::beforeDelete() и вернув false, можно остановить дальнейшие выполнение delete, а вот назначив этому методу хендлер события, этого сделать уже нельзя. Нелогично, ведь оба способа в принципе делают одно и тоже. Проблема в том что не всегда можно переопределить класс, а хочется использовать такую замечательную вещь как behavior, а это невозможно по описанным причинам, соответственно внедрение кода нехило усложняется.
handled события и дальнейшее выполнение
Re: handled события и дальнейшее выполнение
И? В заголовке темы я указал, мне известно об этом свойстве.
Я и говорю о том, чтобы я не установил в него исполнение ДЕЙСТВИЯ не поменяется, можно вырубить только оставшиеся обработчики события, а не само действие ассоциированное с событием.
Я и говорю о том, чтобы я не установил в него исполнение ДЕЙСТВИЯ не поменяется, можно вырубить только оставшиеся обработчики события, а не само действие ассоциированное с событием.
Re: handled события и дальнейшее выполнение
Понятно что половину фреймворка переписывать никто не будет, но возможность такую для новых событий (в т.ч.) для кода пользователей добавить нужно.
Re: handled события и дальнейшее выполнение
Действие save остановится, если поменять в событии onBeforeSave CModelEvent::isValid
Re: handled события и дальнейшее выполнение
И действительно. Теперь понятно как реализовывать для новых событий.
Спасибо.
Спасибо.