EventHandler:OnItemBuild
From In-Portal Developers Guide
This article is not finished yet! You see this message because current Article is finished yet or contains unverified information. How to write an Article. |
| ||
---|---|---|
Статьи в этой категории | ||
При создании объекта класса kDBItem
требуется производить сопутствующие действия - такие как подготовка SQL-запроса для загрузки данных, проверка прав доступа к данным, загрузка данных в объект при необходимости, создание и инициализация переменных окружения, инициализация свойств объекта. Для логического выделения этих операций в общем потоке предназначено особое событие - OnItemBuild
.
Это событие задаётся в Unit Configs, под ключом 'build_event' для 'ItemClass'.
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
Это событие вызывается в классе kFactory
, после того как создан новый экземпляр объекта. Если в создании нового экземпляра нет необходимости, то методы kFactory
возвращают ссылку на ранее созданный экземпляр, и событие OnItemBuild
не происходит.
Contents |
Вызывается из шаблона
Не вызывается из шаблонов.
Вызывается из событий
Не вызывается из событий.
Входные параметры
название | описание |
---|---|
skip_autoload (boolean) | Значение true озволяет избежать автоматического подгружения данных в объект. Этот параметр следует использовать в случаях, когда идентификатор объекта не определён, либо когда идентификатор в запросе имеется, но планируется подгружать данные другого объекта. В подобных случаях использование параметра 'skip_autoload' позволяет избежать лишних запросов к базе данных.
|
Вызывает события
Не вызывает событий
Потенциальное применение
Для того, чтобы объект типа kDBItem мог инициализироваться на пользовательской части сайта без ошибки отсутствия прав, наиболее простым решением является прописывание события OnItemBuild
в методе mapPermissions
соответствующего обработчика событий.
function mapPermissions() { parent::mapPermissions(); $permissions = Array( 'OnItemBuild' => Array('self' => true, 'subitem' => true), ); $this->permMapping = array_merge($this->permMapping, $permissions); }
Потенциально, событие OnItemBuild
возможно переписать в случае каких-то объектов, требующих нестандартной настройки, например, вследствие необычных взаимосвязей с другими объектами.
Ограничения
Особых ограничений нет.
Использует вспомогательные методы класса
dbBuild, ItemPrepareQuery, CheckPermission, LoadItem, checkItemStatus