SetCustomQuery
Эта статья еще не закончена!
Вы видите это сообщение, поскольку текущая статья еще не закончена или содержит непроверенную информацию. Как написать статью.
Данное событие является неким исключением из правил, во-первых имя не содержит обязательный для имён событий
префикс 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% тех, кто пишет статьи о событиях, то писать в чём ошибка не буду. Нужно просто прочитать правила. |