set_form_input_multi

Директива `set_form_input_multi` используется для чтения нескольких значений из отправленных форм в переменные NGINX.

Синтаксисset_form_input_multi $variable [argument];
По умолчаниюnone
Контекстhttp, server, location
Аргументы1-2

Описание

Директива set_form_input_multi является частью модуля ввода форм NGINX и специально предназначена для обработки HTTP POST и PUT запросов с данными, закодированными как application/x-www-form-urlencoded. В отличие от своей альтернативы set_form_input, которая извлекает одно значение для указанной переменной, set_form_input_multi позволяет получить все значения, связанные с определённым ключом в теле запроса. Это особенно полезно при работе с полями HTML-форм, допускающими множественный выбор, такими как флажки или списки с возможностью множественного выбора.

Директиву можно размещать в контекстах http, server или location, что делает её гибкой в отношении места конфигурации. Синтаксис использования: set_form_input_multi $variable [argument];, где $variable — имя переменной NGINX, которой будут присвоены значения, а необязательный argument указывает, из какого поля формы читать данные. Если аргумент не указан, по умолчанию читаются значения, связанные с именем самой переменной.

При выполнении директива заполняет указанную переменную NGINX всеми совпадающими значениями из формы. Такое поведение позволяет затем использовать эти значения в конфигурациях NGINX, включая возможные операции преобразования, такие как array_join для объединения нескольких значений в одну строку при необходимости.

Пример конфига

location /submit {
    client_max_body_size 1m;
    client_body_buffer_size 1m;
    set_form_input_multi $data;  # Read all 'data' fields into $data
    set_form_input_multi $selected_items items; # Read all fields named 'items' into $selected_items
    array_join ' ' $data;  # Combine values into a single string
}

Убедитесь, что размер тела запроса клиента правильно настроен с помощью client_max_body_size и client_body_buffer_size, чтобы избежать усечения входных данных.

Не забудьте использовать array_join, если вы хотите преобразовать получившийся массив значений в одну строку для дальнейшей обработки.

← Ко всем директивам