GPropertyTable::GetColumnFilter
Создает строку для фильтрации по столбцам таблицы.
Параметры функции
- $column_name = "" - Идентификатор столбца, по которому осуществляется фильтрация.
- $value = "" - Значение ячейки таблицы для данного столбца. Если значение содержит знаки "%" (означает любое количество любых символов), то необходимо в третьем параметре $arTableColumns указать порядок столбцов таблицы (иначе поиск может быть неточным).
- $arTableColumns = false - Необязательное. Массив идентификаторов столбцов таблицы. Порядок должен соответствовать порядку столбцов в настройках свойства. Данный параметр необходим только при поиске подстроки (если параметр $value содердит "%").
Возвращаемое значение
Функция возвращает строку для фильтрации, которую можно использовать, например, в таких функциях, как CIBlockElement::GetList, CIBlockSection::GetList, CUser::GetList и др.
Пример 1
// Фильтрация по точному совпадению по столбцу таблицы с идентификатором "days"
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("grain.tables")) {
$rsElements = CIBlockElement::GetList(
Array("SORT"=>"ASC","NAME"=>"ASC"),
Array(
"IBLOCK_ID"=>3,
"ACTIVE"=>"Y",
"PROPERTY_worktime" => GPropertyTable::GetColumnFilter("days","Пн-Пт")
),
false,
false,
Array("ID","NAME")
);
while($arElement=$rsElements->GetNext()) {
echo "<pre>"; print_r($arElement); echo "</pre>";
}
}
Пример 2
// Фильтрация по подстроке "Вт" в столбце "days" в таблице с 2 столбцами с идентификаторами "days","time"
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("grain.tables")) {
$rsElements = CIBlockElement::GetList(
Array("SORT"=>"ASC","NAME"=>"ASC"),
Array(
"IBLOCK_ID"=>3,
"ACTIVE"=>"Y",
"PROPERTY_worktime" => GPropertyTable::GetColumnFilter("days","%Вт%",Array("days","time"))
),
false,
false,
Array("ID","NAME")
);
while($arElement=$rsElements->GetNext()) {
echo "<pre>"; print_r($arElement); echo "</pre>";
}
}
Пример 3
// Выборка пользователей по подстроке "абв" в столбце "col1", в свойстве-таблице "UF_TABLE" с тремя столбцами с идентификаторами "col1","col2","col3"
if (CModule::IncludeModule("grain.tables")) {
$rsUsers = CUser::GetList(
($by="NAME"),
($order="ASC"),
Array(
"ACTIVE"=>"Y",
"UF_TABLE" => GPropertyTable::GetColumnFilter("col1","%абв%",Array("col1","col2","col3"))
)
);
while($arUser=$rsUsers->GetNext()) {
echo "<pre>"; print_r($arUser); echo "</pre>";
}
}
Примечание: если Вы изменяли порядок столбцов таблицы, то чтобы фильтрация заработала, необходимо будет пересохранить все элементы
Примечание: функция добавлена в версии модуля 2.0
// Фильтрация по точному совпадению по столбцу таблицы с идентификатором "days"
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("grain.tables")) {
$rsElements = CIBlockElement::GetList(
Array("SORT"=>"ASC","NAME"=>"ASC"),
Array(
"IBLOCK_ID"=>3,
"ACTIVE"=>"Y",
"PROPERTY_worktime" => GPropertyTable::GetColumnFilter("days","Пн-Пт")
),
false,
false,
Array("ID","NAME")
);
while($arElement=$rsElements->GetNext()) {
echo "<pre>"; print_r($arElement); echo "</pre>";
}
}
// Фильтрация по подстроке "Вт" в столбце "days" в таблице с 2 столбцами с идентификаторами "days","time"
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("grain.tables")) {
$rsElements = CIBlockElement::GetList(
Array("SORT"=>"ASC","NAME"=>"ASC"),
Array(
"IBLOCK_ID"=>3,
"ACTIVE"=>"Y",
"PROPERTY_worktime" => GPropertyTable::GetColumnFilter("days","%Вт%",Array("days","time"))
),
false,
false,
Array("ID","NAME")
);
while($arElement=$rsElements->GetNext()) {
echo "<pre>"; print_r($arElement); echo "</pre>";
}
}
// Выборка пользователей по подстроке "абв" в столбце "col1", в свойстве-таблице "UF_TABLE" с тремя столбцами с идентификаторами "col1","col2","col3"
if (CModule::IncludeModule("grain.tables")) {
$rsUsers = CUser::GetList(
($by="NAME"),
($order="ASC"),
Array(
"ACTIVE"=>"Y",
"UF_TABLE" => GPropertyTable::GetColumnFilter("col1","%абв%",Array("col1","col2","col3"))
)
);
while($arUser=$rsUsers->GetNext()) {
echo "<pre>"; print_r($arUser); echo "</pre>";
}
}
Таблица (grain:table.view)
Выводит таблицу. Существует 2 стандартных шаблона компонента - ".default" и "admin" - для публичной и административной части соответственно. В шаблоне для публичной части используется серая цветовая гамма.
Пример подключения
// выводим таблицу с помощью компонента в шаблоне
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.view",
"",
Array(
"SETTINGS" => $arElement["PROPERTIES"]["prop_name"]["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"MULTIPLE" => $arElement["PROPERTIES"]["prop_name"]["MULTIPLE"], // множественное или нет
"VALUE" => $arElement["PROPERTIES"]["prop_name"]["VALUE"], // значение
),
null,
array('HIDE_ICONS' => 'Y')
);
// выводим таблицу с помощью компонента в шаблоне
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.view",
"",
Array(
"SETTINGS" => $arElement["PROPERTIES"]["prop_name"]["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"MULTIPLE" => $arElement["PROPERTIES"]["prop_name"]["MULTIPLE"], // множественное или нет
"VALUE" => $arElement["PROPERTIES"]["prop_name"]["VALUE"], // значение
),
null,
array('HIDE_ICONS' => 'Y')
);
Форма редактирования таблицы (grain:table.edit)
Выводит форму редактирования таблицы. Существует 2 стандартных шаблона компонента - ".default" и "admin" - для публичной и административной части соответственно. В шаблоне для публичной части используется серая цветовая гамма и отсутствует выбор файла из медиабиблиотеки и структуры сайта (если Вам нужно включить такой выбор для публичной части, укажите название шаблона "admin" в настройках свойства как шаблон редактирования в публичной части).
Пример подключения
// выводим форму редактирования таблицы
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.edit",
"",
Array(
"SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"MULTIPLE" => $arProperty["MULTIPLE"], // множественное или нет
"USER_FIELDS" => "N", // N - инфоблоки, Y - свойства главного модуля
"VALUE" => $arProperty["VALUE"], // значение
"NAME" => "MY_FIELD_NAME", // имя полей формы
),
null,
array('HIDE_ICONS' => 'Y')
);
// выводим форму редактирования таблицы
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.edit",
"",
Array(
"SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"MULTIPLE" => $arProperty["MULTIPLE"], // множественное или нет
"USER_FIELDS" => "N", // N - инфоблоки, Y - свойства главного модуля
"VALUE" => $arProperty["VALUE"], // значение
"NAME" => "MY_FIELD_NAME", // имя полей формы
),
null,
array('HIDE_ICONS' => 'Y')
);
Фильтр по столбцам (grain:table.filter)
Выводит форму для фильтрации по столбцам таблицы
Пример подключения
// выводим форму для фильтрации по столбцам таблицы
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.filter",
"",
Array(
"SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"VALUE" => $arProperty["VALUE"], // значение
"NAME" => "MY_FIELD_NAME", // имя полей формы
),
null,
array('HIDE_ICONS' => 'Y')
);
// выводим форму для фильтрации по столбцам таблицы
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.filter",
"",
Array(
"SETTINGS" => $arProperty["USER_TYPE_SETTINGS"], // массив дополнительных настроек свойства
"VALUE" => $arProperty["VALUE"], // значение
"NAME" => "MY_FIELD_NAME", // имя полей формы
),
null,
array('HIDE_ICONS' => 'Y')
);