Свой фильтр в админке (CAdminFilter)
Фильтр создаётся через объект CAdminFilter()
.
$table_id = 'table_id'; $oFilter = new CAdminFilter( $table_id."_filter", ['ИД', 'Активно'] // пункты меню, которые можно выбирать для фильтрации ); ?> <!-- Создание формы --> <form name="find_form" method="get" action="<?echo $APPLICATION->GetCurPage();?>"> <?$oFilter->Begin();?> <? $oFilter->Buttons(['table_id' => $table_id, 'url' => $APPLICATION->GetCurPage(), 'form' => 'find_form']); $oFilter->End(); ?> </form>
В результате сгенерируется примерно следующий фильтр.
Теперь надо указать поля фильтра. Пример создания двух полей:
<!-- Текстовое поле "ИД" --> <tr> <td>ИД:</td> <td><input type="text" name="id" value="<?echo htmlspecialchars($_GET['id'])?>"></td> </tr> <!-- Выпадающий список "Активно" --> <tr> <td>Активно</td> <td> <? $arr = array( 'reference' => ['Да', 'Нет'], 'reference_id' => ['Y', 'N'] ); echo SelectBoxFromArray('active', $arr, $_GET['active'], GetMessage("POST_ALL"), ""); ?> </td> </tr>
В результате будет сгенерирована следующая форма:
Также надо убедиться, что есть метод $lAdmin->CheckListMode()
перед подключением файла «prolog_admin_after.php», чтобы можно было фильтровать данные через Ajax.
// режим вывода (для Ajax) $lAdmin->CheckListMode(); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
Теперь при фильтрации, через Ajax будут передаваться выбранные данные в фильтре, которые можно использовать при выборки записи. Таблица с данными автоматически обновится.
Выводить сообщение с ошибкой
Выводить сообщение с ошибкой можно через метод AddFilterError()
.
$lAdmin->AddFilterError('Текст ошибки фильтра');
В результате покажется следующее сообщение.
Все сообщения с ошибкой сохраняются в свойство $lAdmin->arFilterErrors
.
$lAdmin->arFilterErrors; // Array ( [0] => Текст ошибки фильтра )
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта