OnBeforeItemLoad

Data Source

Данное событие вызывается перед загрузкой объекта из базы данных.

Вызывается из событий

Данное событие косвенно вызывается из события 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 вызвано не будет и запись не будет загружена из базы данных.