Хелпер по работе с формами

Вспомогательный файл содержит функции, которые помогают в работе с формами.

Загрузка хелпера

Хелпер доступен после подключения:

$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); ?>" />

Примечание

Если вы используете какие-либо функции перечисленные на этой странице, значения формы будут автоматически экранированы, поэтому нет необходимости вызвать эту функцию. Используйте её только если вы создаете свой собственный элемент формы.

Доступные функции

The following functions are available:

form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])
Параметры:
  • $action (строка) – Действие формы / целевая строка URI
  • $attributes (массив) – HTML атрибуты
  • $hidden (массив) – Массив скрытых полей
Возвращает:

Открывающий тег HTML-формы

Возвращаемый тип:

строка

Создает открывающий тег формы с базовым URL созданным из настроек конфигурации. Дополнительно можно добавить атрибуты формы и скрытые поля ввода, а также всегда будут добавлены атрибуты accept-charset из значения charset в файле настроек.

Основное преимущество использования этого тега, по сравнению с жестким кодированием собственного HTML, заключается в том, что это позволяет вашему сайту быть более портативным в случае если URL-адреса когда-либо изменятся.

Вот простой пример:

echo form_open('email/send');

Приведенный выше пример создаст форму, которая указывает на базовый адрес и включает сегменты “email/send” URI:

<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 (строка) – Действие формы / целевая строка URI
  • $attributes (массив) – HTML атрибуты
  • $hidden (массив) – Массив скрытых полей
Возвращает:

Открывающий тег многостраничной формы HTML

Возвращаемый тип:

строка

Эта функция абсолютно идентична функции описанной выше form_open(), за исключением того, что она добавляет необходимый multipart атрибут, если вы хотели бы использовать форму для загрузки файлов.

form_hidden($name[, $value = ''])
Параметры:
  • $name (строка) – Имя поля
  • $value (строка) – Значение поля
Возвращает:

Скрытый тег поля ввода HTML

Возвращаемый тип:

строка

Позволяет создавать скрытые поля ввода. Вы можете использовать строку имя/значение для создания одного поля:

form_hidden('username', 'johndoe');
// создаст: <input type="hidden" name="username" value="johndoe" />

… or you can submit an associative array to create multiple fields:

$data = array(
        'name'  => 'John Doe',
        'email' => '[email protected]',
        'url'   => 'http://example.com'
);

echo form_hidden($data);

/*
        создаст:
        <input type="hidden" name="name" value="John Doe" />
        <input type="hidden" name="email" value="[email protected]" />
        <input type="hidden" name="url" value="http://example.com" />
*/

Можно также передать ассоциативный массив в поле значение:

$data = array(
        'name'  => 'John Doe',
        'email' => '[email protected]',
        'url'   => 'http://example.com'
);

echo form_hidden('my_array', $data);

/*
        создаст:

        <input type="hidden" name="my_array[name]" value="John Doe" />
        <input type="hidden" name="my_array[email]" value="[email protected]" />
        <input type="hidden" name="my_array[url]" value="http://example.com" />
*/

Если вы хотите создать скрытые поля ввода с дополнительными атрибутами:

$data = array(
        'type'  => 'hidden',
        'name'  => 'email',
        'id'    => 'hiddenemail',
        'value' => '[email protected]',
        'class' => 'hiddenemail'
);

echo form_input($data);

/*
        создаст:

        <input type="hidden" name="email" value="[email protected]" id="hiddenemail" class="hiddenemail" />
*/
form_input([$data = ''[, $value = ''[, $extra = '']]])
Параметры:
  • $data (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля ввода текста HTML

Возвращаемый тип:

строка

Позволяет создать стандартное поле ввода текста. Вы можете передать имя и значение поля в первом и втором параметре соответственно:

echo form_input('username', 'johndoe');

Или вы можете передать ассоциативный массив, содержащий необходимые данные:

$data = array(
        'name'          => 'username',
        'id'            => 'username',
        'value'         => 'johndoe',
        'maxlength'     => '100',
        'size'          => '50',
        'style'         => 'width:50%'
);

echo form_input($data);

/*
        создаст:

        <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 (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля ввода пароля

Возвращаемый тип:

строка

Эта функция идентична во всех отношениях с form_input() функцией за исключением того, что он использует тип “password”.

form_upload([$data = ''[, $value = ''[, $extra = '']]])
Параметры:
  • $data (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля выбора файла

Возвращаемый тип:

строка

Эта функция идентична во всех отношениях с form_input() функцией за исключением того, что он использует тип “file”, что позволяет загружать файлы.

form_textarea([$data = ''[, $value = ''[, $extra = '']]])
Параметры:
  • $data (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег текстового поля

Возвращаемый тип:

строка

Эта функция идентична во всех отношениях с form_input() функцией за исключением того, что он использует тип “textarea”.

Примечание

Вместо атрибутов maxlength и size в примерах выше, следует использовать атрибуты rows и cols.

form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
Параметры:
  • $name (строка) – Имя поля
  • $options (массив) – Ассоциативный массив опций для перечисления
  • $selected (массив) – Список полей для пометки атрибутом selected
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля выпадающего списка

Возвращаемый тип:

строка

Позволяет создать стандартное раскрывающееся поле. Первый параметр содержит имя поля, второй параметр будет содержать ассоциативный массив опций, и третий параметр будет содержать значение, которое вы хотите отметить как выбранное. Вы также можете передать массив из нескольких элементов третьим параметром, и 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');

/*
        создаст:

        <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);

/*
        создаст:

        <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> содержал дополнительные данные, в виде атрибутов или 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> с ключом массива, как label.

form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
Параметры:
  • $name (строка) – Имя поля
  • $options (массив) – Ассоциативный массив опций для перечисления
  • $selected (массив) – Список полей для пометки атрибутом selected
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля выпадающего списка с множественным выбором

Возвращаемый тип:

строка

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

Использование параметра идентично использованию в функции form_dropdown() выше, за исключением того, что имя поля будет храниться в массиве POST - пример foo[].

form_fieldset([$legend_text = ''[, $attributes = array()]])
Параметры:
  • $legend_text (строка) – Текст, который нужно положить в <legend> тег
  • $attributes (массив) – Атрибуты, которые будут установлены в <fieldset> тег
Возвращает:

Тег поля fieldset

Возвращаемый тип:

строка

Позволяет создавать fieldset/legend поля.

Пример:

echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();

/*
        создает:

                <fieldset>
                        <legend>Address Information</legend>
                                <p>form 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();

/*
        создает:

        <fieldset id="address_info" class="address_info">
                <legend>Address Information</legend>
                <p>form content here</p>
        </fieldset>
*/
form_fieldset_close([$extra = ''])
Параметры:
  • $extra (строка) – Все, что нужно добавить после закрывающего тега, как есть
Возвращает:

Закрывающий fieldset тег

Возвращаемый тип:

строка

создает закрывающий </fieldset> тег. Единственное преимущество использования этой функции - передать данные которые будут добавлены ниже открывающего тега. Например

$string = '</div></div>';
echo form_fieldset_close($string);
// создаст: </fieldset></div></div>
form_checkbox([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
Параметры:
  • $data (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $checked (bool) – Следует ли пометить флажок как checked
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег ввода флажок

Возвращаемый тип:

строка

Позволяет создать поле флажка. Простой пример:

echo form_checkbox('newsletter', 'accept', TRUE);
// создаст:  <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);
// создаст: <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 (массив) – Атрибуты поля
  • $value (строка) – Значение поля
  • $checked (bool) – Следует ли пометить радиокнопку как checked
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег поля радиокнопки

Возвращаемый тип:

строка

Эта функция идентична во всех отношениях с form_checkbox() функцие выше, за исключением того, что используется тип “radio”.

form_label([$label_text = ''[, $id = ''[, $attributes = array()]]])
Параметры:
  • $label_text (строка) – Текст, который нужно положить в <label> тег
  • $id (строка) – ID элемента формы, для которого мы создаем метку
  • $attributes (смешанный) – HTML атрибуты
Возвращает:

Тег поля label

Возвращаемый тип:

строка

Позволяет создавать <label>. Простой пример:

echo form_label('What is your Name', 'username');
// создаст:  <label for="username">What is your Name</label>

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

Пример:

$attributes = array(
        'class' => 'mycustomclass',
        'style' => 'color: #000;'
);

echo form_label('What is your Name', 'username', $attributes);
// создаст:  <label for="username" class="mycustomclass" style="color: #000;">What is your Name</label>
form_submit([$data = ''[, $value = ''[, $extra = '']]])
Параметры:
  • $data (строка) – Название кнопки
  • $value (строка) – Значение кнопки
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег кнопки

Возвращаемый тип:

строка

Позволяет создать стандартную кнопку отправки. Простой пример:

echo form_submit('mysubmit', 'Submit Post!');
// создаст:  <input type="submit" name="mysubmit" value="Submit Post!" />

Подобно другим функциям, вы можете отправить ассоциативный массив в первый параметр, если вы желаете указать собственные атрибуты. Третий параметр позволяет добавлять в форму дополнительные данные, например JavaScript.

form_reset([$data = ''[, $value = ''[, $extra = '']]])
Параметры:
  • $data (строка) – Название кнопки
  • $value (строка) – Значение кнопки
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег кнопки сброса

Возвращаемый тип:

строка

Позволяет создать стандартную кнопку сброса. Использование идентично form_submit().

form_button([$data = ''[, $content = ''[, $extra = '']]])
Параметры:
  • $data (строка) – Название кнопки
  • $content (строка) – Надпись на кнопке
  • $extra (смешанный) – Дополнительные атрибуты, добавляемые в тег в виде массива или строки
Возвращает:

Тег кнопки

Возвращаемый тип:

строка

Позволяет создать стандартную кнопку. Минимальные параметры - имя и содержимое кнопки в первом и втором параметрах соответственно:

echo form_button('name','content');
// создаст: <button name="name" type="button">Content</button>

Или вы можете передать ассоциативный массив, содержащий любые данные:

$data = array(
        'name'          => 'button',
        'id'            => 'button',
        'value'         => 'true',
        'type'          => 'reset',
        'content'       => 'Reset'
);

echo form_button($data);
// создаст: <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 (строка) – Все, что нужно добавить после закрывающего тега, как есть
Возвращает:

Закрывающий тег HTML-формы

Возвращаемый тип:

строка

создает закрывающий </form> тег. Единственное преимущество использованич - позволяет передавать данные, которые будут добавлены ниже метки. Например:

$string = '</div></div>';
echo form_close($string);
// создаст:  </form> </div></div>
set_value($field[, $default = ''[, $html_escape = TRUE]])
Параметры:
  • $field (строка) – Имя поля
  • $default (строка) – Значение по умолчанию
  • $html_escape (bool) – Следует ли отключить 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 (строка) – Имя поля
  • $value (строка) – Значение для проверки
  • $default (строка) – Есть ли значение по умолчанию
Возвращает:

атрибут ‘selected’ или пустую строку

Возвращаемый тип:

строка

Если вы используете <select> в меню, эта функция позволяет отображать выбранный пункт меню.

Первый параметр должен содержать название меню выбора, второй параметр должен содержать значение каждого элемента, а третий (необязательный) параметр позволяет задать элемент по умолчанию (использовать логическое значение 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 (строка) – Имя поля
  • $value (строка) – Значение для проверки
  • $default (строка) – Есть ли значение по умолчанию
Возвращает:

атрибут ‘checked’ или пустую строку

Возвращаемый тип:

строка

Позволяет отображать флажок в состоянии, в котором он был отправлен.

Первый параметр должен содержать название флажка, второй параметр должен содержать его значение и третий (необязательный) параметр позволяет задать элемент по умолчанию (использовать логическое значение 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 (строка) – Имя поля
  • $value (строка) – Значение для проверки
  • $default (строка) – Есть ли значение по умолчанию
Возвращает:

атрибут ‘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'); ?> />

Примечание

При использовании класса проверки формы необходимо всегда указывать правило для поля, даже если оно пустое, для функций set_*(). Так как, если объект проверки формы определен, контроль за set_*() передается методу класса вместо универсальной вспомогательной функции.

form_error([$field = ''[, $prefix = ''[, $suffix = '']]])
Параметры:
  • $field (строка) – Имя поля
  • $prefix (строка) – Открывающий тег ошибки
  • $suffix (строка) – Закрывающий тег ошибки
Возвращает:

Сообщение об ошибке проверки формы в формате HTML

Возвращаемый тип:

строка

Возвращает сообщение об ошибке проверки от библиотеки проверки форм, связаной с указанным именем поля. При необходимости можно указать открывающий и закрывающий теги, чтобы обойти ошибку сообщение.

Пример:

// Предполагая, что 'username' неверное значение поля:
echo form_error('myfield', '<div class="error">', '</div>');

// создаст: <div class="error">Error message associated with the "username" field.</div>
validation_errors([$prefix = ''[, $suffix = '']])
Параметры:
  • $prefix (строка) – Открывающий тег ошибки
  • $suffix (строка) – Закрывающий тег ошибки
Возвращает:

Сообщение об ошибке проверки формы в формате HTML

Возвращаемый тип:

строка

Аналогично form_error() функции, возвращает все сообщения об ошибках библиотеки проверки форм, с дополнительным открывающим и закрывающим тегами вокруг каждого из сообщений.

Пример:

echo validation_errors('<span class="error">', '</span>');

/*
        создаст, 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 (строка) – Значение для экранирования
Возвращает:

Экранированное значение

Возвращаемый тип:

строка

Позволяет безопасно использовать HTML символы, такие как кавычки.

Примечание

Если вы используете любую из функций помощника формы, перечисленных на этой странице, форма значения будут подготовлены автоматически, поэтому нет необходимости вызывать эту функцию. Используйте её только при создании собственных элементов формы.

Примечание

Эта функция УСТАРЕВШАЯ и является просто псевдонимом общие функции html_escape().