Хелпер 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); ?>" />
Примечание: Если вы используете какие либо функции с этой страницы, значения формы будут обрабатываться атоматически. Повторно вызывать данную функцию в этом случае не нужно. Используйте её только в том случае, если создаёте свои элементы.