Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Помощник для работы с формами

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

## Загрузка этого помощника

`$this->load->helper('form');`

Доступны следующие функции:

## form_open()

Создает открывающий тег формы, с основным URL, сформированным на основе ваших конфигурационных настроек. Опционально вы можете передать атрибуты формы и скрытые поля. Функция будет всегда добавлять атрибут `accept-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);`

Пример выше создает форму, соответствующую этой:

`<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()

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

## form_hidden()

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

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

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

`$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
'url' => 'http://example.com'
);
echo form_hidden($data);
// Сделает:
<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" />`

## form_input()

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

`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" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" />`

Если вы хотите, чтобы тег содержал какие-то дополнительные данные, такие как JavaScript, вы можете передать их в третьем параметре:

`$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);`

## form_password()

Эта функция идентична во всех отношениях form_input(), описанной выше, за исключением того, что она создает поле для ввода пароля (input type="password").

## form_upload()

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

## form_textarea()

Эта функция идентична во всех отношениях form_input(), за исключением того, что она создает поле для ввода текста (textarea). Примечание: вместо параметров "maxlength" и "size" вы можете передать более адекватные "rows" и "cols".

## form_dropdown()

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

Если массив, переданный в $options является многомерным, form_dropdown() сделает <optgroup>, используя ключи массива в качестве меток.

## form_multiselect()

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

## form_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()

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

`$string = "</div></div>";
echo form_fieldset_close($string);
// Сделает:
</fieldset>
</div></div>`

## form_checkbox()

Позволяет вам сгенерировать поле флага checkbox. Простой пример:

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

## form_radio()

Эта функция во всех отношениях идентична функции form_checkbox(), но она создает переключатели "radio".

## form_submit()

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

`echo form_submit('mysubmit', 'Submit Post!');
// Сделает:
<input type="submit" name="mysubmit" value="Submit Post!" />`

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

## form_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_reset()

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

## form_button()

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

`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()

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

`$string = "</div></div>";
echo form_close($string);
// Сделает:
</form>
</div></div>`

## form_prep()

Позволяет вам безопасно использовать HTML и символы с кавычками, чтобы они не разорвали форму. Рассмотрим этот пример:

`$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myform" value="$string" />`

Так как строка содержит набор кавычек, она разорвет форму. Функция form_prep конвертирует HTML так, чтобы он мог использоваться безопасно:

`<input type="text" name="myform" value="<?php echo form_prep($string); ?>" />`

Примечание: Если вы используете функции помощника form, описанные на этой странице, можете быть уверены в том, что все значения защищаются автоматически, поэтому нет нужды использовать функцию form_prep(); Используйте эту функцию, только если вы создаете собственные элементы форм.

## set_value()

Позволяет устанавливать значения для полей input и textarea. Передайте имя поля в первом параметре функции. Второй опциональный параметр позволяет установить значение по умолчанию. Пример:

`<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />`

В примере выше при первой загрузке страницы в поле будет 0.

## set_select()

Если вы используете меню <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()

Позволяет вам вывести флаг checkbox в том состоянии, в котором он был перед передачей формы. Первый параметр должен содержать имя флага, второй параметр должен содержать его значение, а третий опциональный параметр позволяет указать вам на состояние по умолчанию (используйте булевы 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()

Позволяет вам вывести переключатель radio в том состоянии, в котором он был перед передачей формы. Эта функция идентична функции 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'); ?> />`

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter