Тип custom в переменных конфигурации

Тип 'custom' в переменных конфигурации
Возможности типа 'custom'
Новый тип custom предоставляет следующие возможности:

Фильтрация данных через встроенные фильтры.
Фильтрация данных через пользовательские функции.
Создание пользовательских полей ввода.
Общая структура определения переменной типа 'custom'
Определение переменной типа custom имеет следующий формат, схожий с типом callback:

var_name=01:custom:custom_function_name(param1,…):Default value:Description


1. Фильтрация данных через встроенные фильтры

Если вы знакомы с разработкой для Cotonti, то, вероятно, вам известна функция cot_import, которая фильтрует данные, введенные пользователями, согласно заданному фильтру. Встроенные фильтры можно использовать для автоматической фильтрации значений настроек расширения на странице конфигурации.

Для этого в описании переменной в установочном файле расширения (например, имя_расширения.setup.php) нужно указать тип custom, а затем указать название фильтра для обработки данных:
 
alpha_only=05:custom:function_name_ALP()::Alphanumeric input


Здесь ALP — это фильтр для обработки входных данных, в данном случае — фильтрация на алфавитно-цифровые символы.

Доступные фильтры:

INT — для целых чисел.
BOL — для булевых значений.
PSW — для паролей.
ALP — для алфавитно-цифровых символов.
TXT — для текста.
NUM — для чисел.


Подробнее о фильтрах можно прочитать в документации.

Если пользователь не планирует использовать собственное поле ввода, то название функции можно опустить, оставив только сам фильтр:
 
alpha_only=05:custom:_ALP()::Alphanumeric input

2. Фильтрация данных через пользовательские функции

Если встроенных фильтров недостаточно, можно создать собственный фильтр. Есть два пути для этого:

2.1. Пользовательский фильтр для cot_import

Создание пользовательских фильтров описано в статье "Фильтрация и проверка введенных данных". Основной принцип: фильтр должен быть зарегистрирован в реестре фильтров:
 
$cot_import_filters['MYFILTER'][] = 'myfilter_function';


Сам фильтр можно вызвать, как показано ниже:
 
some_var=01:custom:_MYFILTER()::User data


2.2. Произвольная пользовательская функция
Этот вариант позволяет напрямую вызывать пользовательскую функцию для фильтрации данных. Имя функции должно быть сформировано особым образом — с окончанием _filter.

Например, для фильтрации ввода номера телефона:
 
mobile_num=01:custom:mobtel_input('+7', 10)::Contact phone


Для фильтрации будет вызвана функция mobtel_input_filter(), которая обработает данные ввода.

Функция фильтрации имеет следующий вид:
 
function mobtel_input_filter(&$phone, $cfg_var, $prefix='', $length=null) {
    $filtered = preg_replace("/[^\d]/", '', $phone);
    if ($length && strlen($filtered) != $length) {
        $filtered = null;
        $phone = '';
    }
    return $filtered;
}


Функция должна вернуть отфильтрованные данные или NULL, если фильтрация невозможна.

3. Создание пользовательских полей ввода
Тип custom также позволяет контролировать внешний вид и функциональность полей ввода. Разработчик может полностью переопределить HTML-код поля ввода или создать несколько отдельных полей для одного параметра.

Пример функции для создания поля ввода мобильного телефона:
 
function mobtel_input($cfg_var, $prefix='') {
    $value = $cfg_var['config_value'];
    $formatted = $prefix . ' (' . substr($value, 0, 3) . ') ' . substr($value, 3, 7);
    return cot_inputbox('text', $cfg_var['config_name'], $formatted, array('placeholder' => $prefix . ' (000) 0000000'));
}


Здесь cot_inputbox используется для генерации HTML-кода поля ввода с заданным атрибутом.


4. Пример использования

4.1. Поле ввода пароля

Для примера, если нужно создать поле ввода пароля с подтверждением:
 
cloud_psw=01:custom:cfg_password(5)::Test password input

Здесь cfg_password() — функция для вывода поля пароля.
 
function cfg_password($cfg_var, $minlength = 4) {
    $value = $cfg_var['config_value'];
    $input_code =
        cot_inputbox('password', $cfg_var['config_name'].'[0]', $value) .
        cot_inputbox('password', $cfg_var['config_name'].'[1]', '');
    return $input_code;
}

4.2. Данные по умолчанию

Если фильтр или функция вывода поля не задана, Cotonti использует значения по умолчанию. Например:
 
ui_color=01:custom:color_input_alp():Black:Select color, type name or HEX code


В этом случае для поля ввода будет использована функция color_input_alp(), а для обработки введенного значения применяется фильтр ALP.

Рекомендации и замечания

Гибкость и безопасность:
Применение функции фильтрации данных важно для предотвращения ввода некорректных значений. Обязательно используйте фильтры, чтобы данные, вводимые пользователем, были безопасными.

Документация:
Следите за актуальностью документации по встроенным фильтрам, так как их использование значительно упрощает задачу фильтрации.

Модульность:
Для максимальной гибкости создавайте общие функции для фильтрации и вывода полей, которые можно будет использовать в разных расширениях.

 

3 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 26.01.2025 11:53
  • Последнее обновление: 26.01.2025 11:53

Похожие страницы

Блог это несложный по функционалу нишевый тип контентного сайта
1 Блог как понятие обозначает категорию веб-сайтов, представляющую из себя онлайновый дневник или сборник хронологически
Файл functions.custom.php в Cotonti
2 В файл functions.custom.php в Cotonti обычно добавляют дополнительные пользовательские функции, которые не входят в
Переменные конфигурации расширений в Cotonti
3 Переменные конфигурации Механизм Cotonti спроектирован таким образом, что позволяет при создании Расширения задать
Руководство по пользовательским функциям functions.custom.php в Cotonti
4 Руководство по пользовательским функциям CotontiЭто руководство содержит подробное описание четырех функций,
Настройка переменных конфигурации расширений Cotonti и типы данных
5 Настройка переменных конфигурацииМеханизм Cotonti спроектирован таким образом, что позволяет при создании Расширения
Cotonti Siena CMF • 30.11.2025 14:05 Administrator