Form Helper
В файле Form Helper содержатся функции, которые помогают работать с формами.
Загрузка этого помощника
Этот помощник загружается с помощью следующего кода:
$this->load->helper('form');
Экранирование значений полей
Возможно, вам понадобится использовать HTML и символы, такие как кавычки, в элементах вашей формы. Для безопасного использования этих элементов вам потребуется использовать функцию общую функцию html_escape().
Рассмотрим следующий пример:
$string = 'Here is a string containing "quoted" text.'; <input type="text" name="myfield" value="<?php echo $string; ?>" />
Поскольку указанная строка содержит набор кавычек, это может привести к разрыву формы. Функция html_escape() преобразует специальные символы HTML в безопасный вид:
<input type="text" name="myfield" value="<?php echo html_escape($string); ?>" />
Примечание
Если вы используете любые функции помощника формы, перечисленные на этой странице, значения полей будут автоматически экранироваться, поэтому вызывать эту функцию не нужно. Используйте её только при создании собственных элементов формы.
Доступные функции
Доступны следующие функции:
-
form_open([$action = ''[, $attributes = ''[, $hidden = array()]]]) -
Параметры: - $action (string) – Строка URI действия/цели формы
- $attributes (array) – Атрибуты HTML
- $hidden (array) – Массив определений скрытых полей
Возвращаемое значение: Тег открытия HTML-формы
Тип возвращаемого значения: string
Создаёт открывающий тег формы с базовым URL, сгенерированным на основе ваших настроек конфигурации. Позволяет добавить атрибуты формы и скрытые поля ввода, и всегда добавляет атрибут
accept-charset, основанный на значении charset в файле конфигурации.Основное преимущество использования этого тега вместо ручного кодирования HTML заключается в большей переносимости сайта в случае изменения URL.
Вот простой пример:
echo form_open('email/send');Приведённый выше пример создаст форму, которая указывает на ваш базовый URL плюс сегменты URI «email/send», например:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
Добавление атрибутов
Атрибуты могут быть добавлены путём передачи ассоциативного массива во второй параметр, например:
$attributes = array('class' => 'email', 'id' => 'myform'); echo form_open('email/send', $attributes);В качестве альтернативы вы можете указать второй параметр как строку:
echo form_open('email/send', 'class="email" id="myform"');Примеры выше создадут форму, похожую на эту:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" class="email" id="myform">
Добавление скрытых полей ввода
Скрытые поля могут быть добавлены путём передачи ассоциативного массива в третий параметр, например:
$hidden = array('username' => 'Joe', 'member_id' => '234'); echo form_open('email/send', '', $hidden);Вы можете пропустить второй параметр, передав любое ложное значение.
Приведённый выше пример создаст форму, похожую на эту:
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send"> <input type="hidden" name="username" value="Joe" /> <input type="hidden" name="member_id" value="234" />
-
form_open_multipart([$action = ''[, $attributes = array()[, $hidden = array()]]]) -
Параметры: - $action (string) – Строка URI действия/цели формы
- $attributes (array) – Атрибуты HTML
- $hidden (array) – Массив определений скрытых полей
Возвращаемое значение: Тег открытия HTML-формы типа multipart
Тип возвращаемого значения: string
Эта функция абсолютно идентична функции
form_open()выше, за исключением того, что она добавляет атрибут multipart, который необходим, если вы хотите использовать форму для загрузки файлов.
-
Параметры: - $name (string) – Имя поля
- $value (string) – Значение поля
Возвращаемое значение: Тег скрытого поля ввода HTML
Тип возвращаемого значения: string
Позволяет генерировать скрытые поля ввода. Вы можете либо передать строку имя/значение для создания одного поля:
form_hidden('username', 'johndoe'); // Would produce: <input type="hidden" name="username" value="johndoe" />… или вы можете передать ассоциативный массив для создания нескольких полей:
$data = array( 'name' => 'John Doe', 'email' => 'john@example.com', 'url' => 'http://example.com' ); echo form_hidden($data); /* Would produce: <input type="hidden" name="name" value="John Doe" /> <input type="hidden" name="email" value="john@example.com" /> <input type="hidden" name="url" value="http://example.com" /> */Вы также можете передать ассоциативный массив в поле значения:
$data = array( 'name' => 'John Doe', 'email' => 'john@example.com', 'url' => 'http://example.com' ); echo form_hidden('my_array', $data); /* Would produce: <input type="hidden" name="my_array[name]" value="John Doe" /> <input type="hidden" name="my_array[email]" value="john@example.com" /> <input type="hidden" name="my_array[url]" value="http://example.com" /> */Если вы хотите создать скрытые поля ввода с дополнительными атрибутами:
$data = array( 'type' => 'hidden', 'name' => 'email', 'id' => 'hiddenemail', 'value' => 'john@example.com', 'class' => 'hiddenemail' ); echo form_input($data); /* Would produce: <input type="hidden" name="email" value="john@example.com" id="hiddenemail" class="hiddenemail" /> */
-
form_input([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $extra (mixed) – Дополнительные атрибуты для тега, либо в виде массива, либо в виде строки
Возвращаемое значение: Тег текстового поля ввода HTML
Тип возвращаемого значения: string
Позволяет генерировать стандартное текстовое поле ввода. Вы можете минимально передать имя поля и значение в первом и втором параметрах:
echo form_input('username', 'johndoe');Или вы можете передать ассоциативный массив, содержащий любые данные, которые вы хотите, чтобы ваша форма содержала:
$data = array( 'name' => 'username', 'id' => 'username', 'value' => 'johndoe', 'maxlength' => '100', 'size' => '50', 'style' => 'width:50%' ); echo form_input($data); /* Would produce: <input type="text" name="username" value="johndoe" id="username" maxlength="100" size="50" style="width:50%" /> */Если вы хотите, чтобы ваша форма содержала дополнительные данные, такие как JavaScript, вы можете передать их как строку в третьем параметре:
$js = 'onClick="some_function()"'; echo form_input('username', 'johndoe', $js);Или вы можете передать их как массив:
$js = array('onClick' => 'some_function();'); echo form_input('username', 'johndoe', $js);
-
form_password([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $extra (mixed) – Дополнительные атрибуты для тега, либо в виде массива, либо в виде строки
Возвращаемое значение: Тег поля ввода пароля HTML
Тип возвращаемого значения: string
Эта функция во всех отношениях идентична функции
form_input()выше, за исключением того, что она использует тип ввода «пароль».
-
form_upload([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $extra (mixed) – Дополнительные атрибуты для тега, либо в виде массива, либо в виде строки
Возвращаемое значение: Тег поля загрузки файла HTML
Тип возвращаемого значения: string
Эта функция во всех отношениях идентична функции
form_input()выше, за исключением того, что она использует тип ввода «файл», что позволяет использовать её для загрузки файлов.
-
form_textarea([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $extra (mixed) – Дополнительные атрибуты для тега, либо в виде массива, либо в виде строки
Возвращаемое значение: Тег textarea HTML
Тип возвращаемого значения: string
Эта функция во всех отношениях идентична функции
form_input()выше, за исключением того, что она генерирует тип «textarea».Примечание
Вместо атрибутов maxlength и size в приведённом выше примере вы будете указывать rows и cols.
-
form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]]) -
Параметры: - $name (string) – Имя поля
- $options (array) – Ассоциативный массив опций для вывода
- $selected (array) – Список полей, которые нужно отметить атрибутом selected
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-поля выбора (выпадающий список)
Тип возвращаемого значения: string
Позволяет создавать стандартное поле выпадающего списка. Первый параметр содержит имя поля, второй — ассоциативный массив опций, а третий — значение, которое должно быть выбрано. Вы также можете передать массив нескольких элементов в третий параметр, и CodeIgniter создаст для вас множественный выбор.
Пример:
$options = array( 'small' => 'Small Shirt', 'med' => 'Medium Shirt', 'large' => 'Large Shirt', 'xlarge' => 'Extra Large Shirt', ); $shirts_on_sale = array('small', 'large'); echo form_dropdown('shirts', $options, 'large'); /* Would produce: <select name="shirts"> <option value="small">Small Shirt</option> <option value="med">Medium Shirt</option> <option value="large" selected="selected">Large Shirt</option> <option value="xlarge">Extra Large Shirt</option> </select> */ echo form_dropdown('shirts', $options, $shirts_on_sale); /* Would produce: <select name="shirts" multiple="multiple"> <option value="small" selected="selected">Small Shirt</option> <option value="med">Medium Shirt</option> <option value="large" selected="selected">Large Shirt</option> <option value="xlarge">Extra Large Shirt</option> </select> */Если вы хотите, чтобы открывающий тег <select> содержал дополнительную информацию, например, атрибут id или JavaScript, вы можете передать его как строку в четвёртом параметре:
$js = 'id="shirts" onChange="some_function();"'; echo form_dropdown('shirts', $options, 'large', $js);Или вы можете передать его как массив:
$js = array( 'id' => 'shirts', 'onChange' => 'some_function();' ); echo form_dropdown('shirts', $options, 'large', $js);Если массив, переданный как
$options, является многомерным массивом, тогдаform_dropdown()создаст <optgroup> с ключом массива в качестве метки.
-
form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]]) -
Параметры: - $name (string) – Имя поля
- $options (array) – Ассоциативный массив опций для вывода
- $selected (array) – Список полей, которые нужно отметить атрибутом selected
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-поля множественного выбора (multiselect)
Тип возвращаемого значения: string
Позволяет создавать стандартное поле множественного выбора. Первый параметр содержит имя поля, второй — ассоциативный массив опций, а третий — значение или значения, которые должны быть выбраны.
Использование параметров идентично использованию
form_dropdown()выше, за исключением того, что имя поля должно использовать синтаксис массива POST, например, foo[].
-
form_fieldset([$legend_text = ''[, $attributes = array()]]) -
Параметры: - $legend_text (string) – Текст для тега <legend>
- $attributes (array) – Атрибуты для тега <fieldset>
Возвращаемое значение: Открывающий тег HTML-области формы (fieldset)
Тип возвращаемого значения: string
Позволяет генерировать поля fieldset/legend.
Пример:
echo form_fieldset('Address Information'); echo "<p>fieldset content here</p>\n"; echo form_fieldset_close(); /* Produces: <fieldset> <legend>Address Information</legend> <p>fieldset content here</p> </fieldset> */Как и в других функциях, вы можете передать ассоциативный массив во втором параметре, если хотите установить дополнительные атрибуты:
$attributes = array( 'id' => 'address_info', 'class' => 'address_info' ); echo form_fieldset('Address Information', $attributes); echo "<p>fieldset content here</p>\n"; echo form_fieldset_close(); /* Produces: <fieldset id="address_info" class="address_info"> <legend>Address Information</legend> <p>fieldset content here</p> </fieldset> */
-
form_fieldset_close([$extra = '']) -
Параметры: - $extra (string) – Любое содержимое, добавляемое после закрывающего тега, как есть
Возвращаемое значение: Закрывающий тег HTML </fieldset>
Тип возвращаемого значения: string
Создаёт закрывающий тег </fieldset>. Единственное преимущество использования этой функции заключается в возможности передавать данные, которые будут добавлены под тегом. Например
$string = '</div></div>'; echo form_fieldset_close($string); // Would produce: </fieldset></div></div>
-
form_checkbox([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $checked (bool) – Нужно ли отметить флажок как выбранный
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-поля типа checkbox
Тип возвращаемого значения: string
Позволяет генерировать поле типа checkbox. Простой пример:
echo form_checkbox('newsletter', 'accept', TRUE); // Would produce: <input type="checkbox" name="newsletter" value="accept" checked="checked" />Третий параметр содержит булево значение TRUE/FALSE, чтобы определить, должен ли быть установлен флажок.
Аналогично другим функциям для форм в этом хелпере, вы также можете передать массив атрибутов в функцию:
$data = array( 'name' => 'newsletter', 'id' => 'newsletter', 'value' => 'accept', 'checked' => TRUE, 'style' => 'margin:10px' ); echo form_checkbox($data); // Would produce: <input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />Также, как и в других функциях, если вы хотите, чтобы тег содержал дополнительные данные, такие как JavaScript, вы можете передать их в виде строки в четвёртом параметре:
$js = 'onClick="some_function()"'; echo form_checkbox('newsletter', 'accept', TRUE, $js);Или вы можете передать их в виде массива:
$js = array('onClick' => 'some_function();'); echo form_checkbox('newsletter', 'accept', TRUE, $js);
-
form_radio([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]]) -
Параметры: - $data (array) – Данные атрибутов поля
- $value (string) – Значение поля
- $checked (bool) – Нужно ли отметить радиокнопку как выбранную
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-поля типа radio
Тип возвращаемого значения: string
Эта функция во всех отношениях идентична функции
form_checkbox()выше, за исключением того, что она использует тип ввода «radio».
-
form_label([$label_text = ''[, $id = ''[, $attributes = array()]]]) -
Параметры: - $label_text (string) – Текст для тега <label>
- $id (string) – ID элемента формы, для которого создаётся метка
- $attributes (mixed) – HTML-атрибуты
Возвращаемое значение: Тег HTML-метки поля
Тип возвращаемого значения: string
Позволяет создавать тег <label>. Простой пример:
echo form_label('What is your Name', 'username'); // Would produce: <label for="username">What is your Name</label>Аналогично другим функциям, вы можете передать ассоциативный массив в третий параметр, если хотите установить дополнительные атрибуты.
Пример:
$attributes = array( 'class' => 'mycustomclass', 'style' => 'color: #000;' ); echo form_label('What is your Name', 'username', $attributes); // Would produce: <label for="username" class="mycustomclass" style="color: #000;">What is your Name</label>
-
form_submit([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (string) – Название кнопки
- $value (string) – Значение кнопки
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-кнопки отправки
Тип возвращаемого значения: string
Позволяет генерировать стандартную кнопку отправки. Простой пример:
echo form_submit('mysubmit', 'Submit Post!'); // Would produce: <input type="submit" name="mysubmit" value="Submit Post!" />Аналогично другим функциям, вы можете передать ассоциативный массив в первый параметр, если хотите установить собственные атрибуты. Третий параметр позволяет добавить дополнительные данные к форме, такие как JavaScript.
-
form_reset([$data = ''[, $value = ''[, $extra = '']]]) -
Параметры: - $data (string) – Название кнопки
- $value (string) – Значение кнопки
- $extra (mixed) – Дополнительные атрибуты для добавления к тегу в виде массива или строки
Возвращаемое значение: Тег HTML-кнопки сброса
Тип возвращаемого значения: string
Позволяет генерировать стандартную кнопку сброса. Использование идентично
form_submit().
-
Параметры: - $data (string) – Название кнопки
- $content (string) – Текст кнопки
- $extra (mixed) – Дополнительные атрибуты для тега, либо в виде массива, либо как строка
Возвращаемое значение: Тег HTML-кнопки
Тип возвращаемого значения: строка
Позволяет генерировать стандартный элемент кнопки. Минимально можно передать имя кнопки и текст в первом и втором параметрах:
echo form_button('name','content'); // Would produce: <button name="name" type="button">Content</button>Или передать ассоциативный массив, содержащий любые данные, которые вы хотите включить в форму:
$data = array( 'name' => 'button', 'id' => 'button', 'value' => 'true', 'type' => 'reset', 'content' => 'Reset' ); echo form_button($data); // Would produce: <button name="button" id="button" value="true" type="reset">Reset</button>Если вы хотите, чтобы ваша форма содержала дополнительные данные, например, JavaScript, вы можете передать их как строку в третьем параметре:
$js = 'onClick="some_function()"'; echo form_button('mybutton', 'Click Me', $js);
-
form_close([$extra = '']) -
Параметры: - $extra (string) – Любые данные, которые нужно добавить после закрывающего тега, как есть
Возвращаемое значение: Закрывающий тег HTML формы </form>
Тип возвращаемого значения: строка
Создаёт закрывающий тег </form>. Единственное преимущество использования этой функции заключается в том, что вы можете передавать в неё данные, которые будут добавлены под тегом. Например:
$string = '</div></div>'; echo form_close($string); // Would produce: </form> </div></div>
-
set_value($field[, $default = ''[, $html_escape = TRUE]]) -
Параметры: - $field (string) – Имя поля
- $default (string) – Значение по умолчанию
- $html_escape (bool) – Нужно ли отключать HTML-экранирование значения
Возвращаемое значение: Значение поля
Тип возвращаемого значения: строка
Позволяет установить значение поля ввода формы или текстовой области. Вы должны указать имя поля в первом параметре функции. Второй (необязательный) параметр позволяет установить значение по умолчанию для формы. Третий (необязательный) параметр позволяет отключить HTML-экранирование значения, в случае необходимости использования этой функции в сочетании с, например,
form_input()и избежать двойного экранирования.Пример:
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />В вышеприведённой форме при загрузке будет отображено «0».
Примечание
Если вы загрузили Библиотеку валидации форм и установили правило валидации для имени поля, используемого с этим вспомогательным методом, то вызов будет перенаправлен на собственный метод Библиотеки валидации форм
set_value(). В противном случае, эта функция ищет значение поля в$_POST.
-
set_select($field[, $value = ''[, $default = FALSE]]) -
Параметры: - $field (string) – Имя поля
- $value (string) – Значение для проверки
- $default (string) – Является ли это значение также значением по умолчанию
Возвращаемое значение: атрибут ‘selected’ или пустая строка
Тип возвращаемого значения: строка
Если вы используете меню <select>, эта функция позволяет отобразить выбранный пункт меню.
Первый параметр должен содержать имя выпадающего списка, второй параметр — значение каждого пункта, а третий (необязательный) параметр позволяет задать пункт как значение по умолчанию (используйте boolean TRUE/FALSE).
Пример:
<select name="myselect"> <option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option> <option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option> <option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option> </select>
-
set_checkbox($field[, $value = ''[, $default = FALSE]]) -
Параметры: - $field (string) – Имя поля
- $value (string) – Значение для проверки
- $default (string) – Является ли это значение также значением по умолчанию
Возвращаемое значение: атрибут ‘checked’ или пустая строка
Тип возвращаемого значения: строка
Позволяет отобразить состояние чекбокса при отправке.
Первый параметр должен содержать имя чекбокса, второй параметр — его значение, а третий (необязательный) параметр позволяет задать пункт как значение по умолчанию (используйте boolean TRUE/FALSE).
Пример:
<input type="checkbox" name="mycheck" value="1" <?php echo set_checkbox('mycheck', '1'); ?> /> <input type="checkbox" name="mycheck" value="2" <?php echo set_checkbox('mycheck', '2'); ?> />
-
set_radio($field[, $value = ''[, $default = FALSE]]) -
Параметры: - $field (string) – Имя поля
- $value (string) – Значение для проверки
- $default (string) – Является ли это значение также значением по умолчанию
Возвращаемое значение: атрибут ‘checked’ или пустая строка
Тип возвращаемого значения: строка
Позволяет отобразить радиокнопки в состоянии, в котором они были отправлены. Эта функция идентична функции
set_checkbox()выше.Пример:
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> /> <input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />Примечание
Если вы используете класс Form Validation, вам всегда необходимо указать правило для своего поля, даже если оно пустое, чтобы функции
set_*()работали. Это связано с тем, что если объект Form Validation определён, управлениеset_*()передаётся методу класса, а не универсальной вспомогательной функции.
-
form_error([$field = ''[, $prefix = ''[, $suffix = '']]]) -
Параметры: - $field (string) – Имя поля
- $prefix (string) – Открывающий тег ошибки
- $suffix (string) – Закрывающий тег ошибки
Возвращаемое значение: Сообщение об ошибке валидации формы в формате HTML
Тип возвращаемого значения: строка
Возвращает сообщение об ошибке валидации из Библиотеки валидации форм, связанное с указанным именем поля. Вы можете необязательно указать открывающий и закрывающий теги для сообщения об ошибке.
Пример:
// Assuming that the 'username' field value was incorrect: echo form_error('myfield', '<div class="error">', '</div>'); // Would produce: <div class="error">Error message associated with the "username" field.</div>
-
validation_errors([$prefix = ''[, $suffix = '']]) -
Параметры: - $prefix (string) – Открывающий тег ошибки
- $suffix (string) – Закрывающий тег ошибки
Возвращаемое значение: Сообщение об ошибке валидации формы в формате HTML
Тип возвращаемого значения: строка
Аналогично функции
form_error(), возвращает все сообщения об ошибках валидации, созданные Библиотекой валидации форм, с необязательными открывающими и закрывающими тегами вокруг каждого из сообщений.Пример:
echo validation_errors('<span class="error">', '</span>'); /* Would produce, e.g.: <span class="error">The "email" field doesn't contain a valid e-mail address!</span> <span class="error">The "password" field doesn't match the "repeat_password" field!</span> */
-
form_prep($str) -
Параметры: - $str (string) – Значение для экранирования
Возвращаемое значение: Экранированное значение
Тип возвращаемого значения: строка
Позволяет безопасно использовать HTML и символы, такие как кавычки, в элементах формы, не выходя за пределы формы.
Примечание
Если вы используете любые функции вспомогательных методов формы, перечисленные на этой странице, значения формы будут подготовлены автоматически, поэтому нет необходимости вызывать эту функцию. Используйте её только если создаёте собственные элементы формы.
Примечание
Эта функция устаревшая и является просто псевдонимом для общей функции
html_escape()— пожалуйста, используйте её вместо этого.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/helpers/form_helper.html