CodeIgniter User Guide Version 2.0.0


Помощник Form (формы)

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

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

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

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

form_open()

Создает открывающий тег формы с основным URL, построенным на основании настроек в вашей конфигурации. Эта функция опционально позволяет вам добавлять аттрибуты формы и скрытые поля input type="hidden", и всегда добавляет аттрибут 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" />

Добавление скрытых полей Input

Скрытые поля могут быть добавлены передачей ассоциативного массива в третьем параметре, например так:

$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(), за исключением того, что она создает поля типа "пароль".

form_upload()

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

form_textarea()

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

Позволяет вам генерировать стандартную кнопку 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_pre() конвертирует HTML так, что он может использоваться безопасно:

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

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

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 в состоянии, в котором они были переданы. Эта функция идентична функции выше.

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