CodeIgniter, руководство пользователя к версии 1.6.1


Хелпер Form

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

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

Для загрузки хелпера используется следующий код:

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

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

form_open()

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

Главное преимущество использования хелпера перед html-тэгом в том, что хелпер делает сайт более стабильным в случае переезда и связанного с ним изменения URL.

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

echo form_open('email/send');

Создаётся форма, которая будет указывать на ваш базовый URL плюс URI "email/send":

<form method="post" action="http:/www.your-site.com/index.php/email/send" />

Добавляем атрибуты

Атрибуты могут быть добавлены путём передачи ассоциативного массива вторым параметром:

$attributes = array('class' => 'email', 'id' => 'myform');

echo form_open('email/send', $attributes);

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

<form method="post" action="http:/www.your-site.com/index.php/email/send"  class="email"  id="myform" />

Добавляем скрытые поля ввода

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

$hidden = array('username' => 'Александр', 'member_id' => '234');

echo form_open('email/send', '', $hidden);

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

<form method="post" action="http:/www.your-site.com/index.php/email/send"  class="email"  id="myform" />
<input type="hidden" name="username" value="Александр" />
<input type="hidden" name="member_id" value="234" />

form_open_multipart()

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

form_hidden()

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

form_hidden('username', 'Александр');

// Выдаст:

<input type="hidden" name="username" value="Александр" />

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

$data = array(
              'name'  => 'Александр',
              'email' => 'alexander@example.com',
              'url'   => 'http://www.example.com'
            );

echo form_hidden($data);

// Выдаст:

<input type="hidden" name="name" value="Александр" />
<input type="hidden" name="email" value="alexander@example.com" />
<input type="hidden" name="url" value="http://www.example.com" />

form_input()

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

echo form_input('username', 'Александр');

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

$data = array(
              'name'        => 'username',
              'id'          => 'username',
              'value'       => 'Александр',
              'maxlength'   => '100',
              'size'        => '50',
              'style'       => 'width:50%',
            );

echo form_input($data);

// Выдаст:

<input type="text" name="username" id="username" value="Александр" maxlength="100" size="50" style="width:50%" />

Если вам требуется поместить в форму дополнительные данные, такие как JavaScript, вы можете передать их строкой третьим параметром:

$js = 'onClick="some_function()"';

echo form_input('username', 'Александр', $js);

form_password()

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

form_upload()

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

form_textarea()

Данная функция идентична form_input(), описанной ранее, за исключением того, что она устанавливает тип поля в "textarea". Замечание: Вместо атрибутов "maxlength" и "size" указываются "rows" и "cols".

form_dropdown()

Позволяет создать стандартный выпадающий список. Первым параметром задаётся имя поля, вторым — ассоциативный массив опций и третьим — выбранное значение. Также вы можете передать третьим параметром массив. В этом случае CodeIgniter создаст список с возможностью множественного выбора. Пример:

$options = array(
                  'small'  => 'Маленькая уточка',
                  'med'    => 'Средняя уточка',
                  'large'   => 'Большая уточка',
                  'xlarge' => 'Огромная утка!',
                );

$ducks_on_sale = array('small', 'large');

echo form_dropdown('ducks', $options, 'large');

// Выдаст:

<select name="ducks">
<option value="small">Маленькая уточка</option>
<option value="med">Средняя уточка</option>
<option value="large" selected="selected">Большая уточка</option>
<option value="xlarge">Огромная утка!</option>
</select>

echo form_dropdown('ducks', $options, $ducks_on_sale);

// Выдаст:

<select name="shirts" multiple="multiple">
<option value="small" selected="selected">Маленькая уточка</option>
<option value="med">Средняя уточка</option>
<option value="large" selected="selected">Большая уточка</option>
<option value="xlarge">Огромная утка!</option>
</select>

Если вы хотите, чтобы открывающий <select> содержал дополнительные данные, такие как JavaScript, вы можете передать их строкой четвёртым параметром:

$js = 'onChange="some_function()"';

echo form_dropdown('ducks', $options, 'large', $js);

form_fieldset()

Создаёт поля fieldset/legend.

echo form_fieldset('Мой адрес');
echo "<p>Содержимое группы полей.</p>\n";
echo form_fieldset_close();

// Выдаст
<fieldset>
<legend>Мой адрес</legend>
<p>Содержимое группы полей.</p>
</fieldset>

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

$attributes = array('id' => 'address_info', 'class' => 'address_info');
echo form_fieldset('Мой адрес', $attributes);
echo "<p>Содержимое группы полей.</p>\n";
echo form_fieldset_close();

// Выдаст
<fieldset id="address_info" class="address_info">
<legend>Мой адрес</legend>
<p>Содержимое группы полей.</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()

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

echo form_submit('mysubmit', 'Отправить!');

// Выведет:

<input type="submit" name="mysubmit" value="Отправить!" />

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

form_label()

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

echo form_label('Введите ваше имя', 'username');

// Выведет:
<label id="username">Введите ваше имя</label>

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

$attributes = array(
'class' => 'mycustomclass',
'style' => 'color: #000;',
);
echo form_label('Введите ваше имя', 'username', $attributes);

// Выведет:
<label id="username" class="mycustomclass" style="color: #000;">Введите ваше имя</label>

form_reset()

Позволяет создать стандартную кнопку для сброса полей формы. Используется также, как и form_submit().

form_close()

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

$string = "</div></div>";

echo form_close($string);

// Выведет:

</form>
</div></div>

form_prep()

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

$string = 'Строка содержит "текст в кавычках".';

<input type="text" name="myform" value="$string" />

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

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

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