EventHandler:OnBeforeItemDelete
From In-Portal Developers Guide
Path to article:
Revision as of 20:22, 29 October 2008
| ||
---|---|---|
Статьи в этой категории | ||
Данное событие позволяет выполнить дополнительные действия перед удалением записи из базы данных.
Вызывается из событий
Данное событие косвенно вызывается из событий, удаляющих записи: OnDelete, OnDeleteAll, OnMassDelete. Все ранее упомянутые события в свою очередь вызывают метод kTempTablesHandler::DeleteItems
, который при помощи метода kDBItem::raiseEvent
вызывает данное событие. Более детально это продемонстрировано ниже:
OnDelete -> kTempTablesHandler::DeleteItems -> kDBItem::Delete -> kDBItem::raiseEvent
Входные параметры
название | описание |
---|---|
id (int) | ID той записи, для которой поступил запрос на удаление.
|
Потенциальное применение
Данное событие в основном применяется для проверки того, что пользователю разрешено удалять конкретную запись. Как это сделать продемонстрировано на ниже приведённом примере.
function OnBeforeItemDelete(&$event) { parent::OnBeforeItemDelete($event); $object =& $event->getObject(); /* @var $object kDBItem */ if ($object->GetDBField('Status') != STATUS_ACTIVE) { // можно удалять только активные записи $event->status = erFAIL; } }
В случае, когда запись, из выше приведённого примера, будет не активной, то она не будет удалена и событие OnAfterItemDelete также не будет вызвано.