OnBeforeItemLoad
Данное событие вызывается перед загрузкой объекта из базы данных.
Вызывается из событий
Данное событие косвенно вызывается из события OnItemBuild в тот момент, когда объект
автоматически загружается по ID, переданному в запросе от пользователя. Также оно вызывается из метода
kDBItem::Load. Более детально это
продемонстрировано ниже:
OnItemBuild -> kDBEventHandler::LoadItem -> kDBItem::Load -> kDBItem::raiseEvent
Входные параметры
название |
описание |
|---|---|
| id (int) |
|
Потенциальное применение
Данное событие можно применять для запрета чтения конкретных записей из базы данных. Например, у пользователя на экране есть распорядок дня на сегодня. В этом распорядке есть какая либо приоритетная запись, которую пользователь должен просмотреть в первую очередь. Независимо от того, какой элемент он выбрал, и только после просмотра приоритетной записи разрешать просмотр других элементов.
В таком случае содержание данного события будет выглядеть, как на ниже приведённом примере.
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 вызвано не будет и запись не будет загружена из базы данных.