EventHandler:OnBeforeItemLoad
From In-Portal Developers Guide
m (категория) |
Current revision (16:14, 28 February 2009) (view source) m (1 версия) |
Current revision
| ||
---|---|---|
Статьи в этой категории | ||
Данное событие вызывается перед загрузкой объекта из базы данных.
Contents |
Вызывается из событий
Данное событие косвенно вызывается из события OnItemBuild в тот момент, когда объект автоматически загружается по ID
, переданному в запросе от пользователя. Также оно вызывается из метода kDBItem::Load. Более детально это продемонстрировано ниже:
OnItemBuild -> kDBEventHandler::LoadItem -> kDBItem::Load -> kDBItem::raiseEvent
Входные параметры
название | описание |
---|---|
id (int) | ID той записи, для которой поступил запрос на загрузку.
|
Потенциальное применение
Данное событие можно применять для запрета чтения конкретных записей из базы данных. Например, у пользователя на экране есть распорядок дня на сегодня. В этом распорядке есть какая либо приоритетная запись, которую пользователь должен просмотреть в первую очередь. Независимо от того, какой элемент он выбрал, и только после просмотра приоритетной записи разрешать просмотр других элементов.
В таком случае содержание данного события будет выглядеть, как на ниже приведённом примере.
function OnBeforeItemLoad(&$event) { parent::OnBeforeItemLoad($event); // получить ID загружаемого Item $id = $event->getEventParam('id') // вызывать некий написанный ранее метод для проверки, а была ли ранее просмотрена приоритетная запись $valid = $this->ValidatePriority($id); if ($valid) { return true; } else { // здесь будет размещён код, который даст возможность подгрузить приоритетную запись, вместо текущей } }
Ограничения
Если статус события ($event->status
), по его завершении, не будет равен erSUCCESS, то событие OnAfterItemLoad вызвано не будет и запись не будет загружена из базы данных.