EventHandler:SetCustomQuery
From In-Portal Developers Guide
Revision as of 15:45, 23 January 2009
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. |
| ||
---|---|---|
Статьи в этой категории | ||
Данное событие является неким исключением из правил, во-первых имя не содержит обязательный для имён событий префикс "On". Во-вторых это не совсем событие, а размещено вместе с событиями потому что использует большое количество базовых методов событий.
С помощью этого события можно устанавливать фильтры в ручном режиме для любого Special
:
function SetCustomQuery(&$event) { parent::SetCustomQuery($event); $object =& $event->getObject(); if ($event->Special == 'test') { $object->addFilter('IsVisible_filter', '%1$s.`IsVisible` = 1'); } }
Добавлять поля ORDER BY
с указанием направления сортировки:
function SetCustomQuery(&$event) { parent::SetCustomQuery($event); $object =& $event->getObject(); if ($event->Special == 'test') { $object->AddOrderField('Group', 'DESC'); } }
Устанавливать значение GROUP BY
:
function SetCustomQuery(&$event) { parent::SetCustomQuery($event); $object =& $event->getObject(); if ($event->Special == 'test') { $object->AddGroupByField('Group'); } }
Вызывается из событий
Автоматически вызывается из события OnListBuild и получает оттуда все необходимые параметры (объект класса EventHandler). Стандартный подход не предусматривает самостоятельный вызов данного метода из обработчика событий.
Потенциальное применение
Данное событие вызывается непосредственно перед посылкой запроса к базе данных и позволяет изменять некоторые характеристики запроса, и даже полностью менять его (не рекомендуется). Можно, например, основываясь на Special
элемента установить в запросе WHERE
фильтр в необходимое значение и т.д.
Заметки редактора
текст | коррекция |
---|---|
Входные параметры | Данная глава написана не по правилам. Т.к. такого рода ошибку допускают 80% тех, кто пишет статьи о событиях, то писать в чём ошибка не буду. Нужно просто прочитать правила. |