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

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Валидация форм

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

- Обзор
- Учебник по валидации форм
  - Форма
  - Страница успеха
  - Контроллер
  - Установка правил валидации
  - Установка правил валидации массивом
  - Объединение правил
  - Подготовка данных
  - Перезаполнение формы
  - Ваши функции-правила
  - Установка сообщений об ошибках
  - Изменение форматирования ошибок
  - Перевод имен полей
  - Раздельный показ ошибок
  - Сохранение наборов правил валидации в конфигурационном файле
  - Использование массивов в качестве имен полей
- Справка по правилам
- Справка по подготовке данных
- Справка по функциям
- Справка по помощникам

# Обзор

Перед тем, как объяснить подход CodeIgniter к валидации, давайте опишем идеальный сценарий:

1. Отображается форма.
2. Вы ее заполняете и отправляете.
3. Если вы заполняете что-то неправильно, или возможно отсутствует требуемый элемент, форма отображается снова. При этом она уже содержит ранее введенные данные вместе с текстами ошибок, указывающими на проблему.
4. Этот процесс продолжается, пока вы не отправите корректно заполненную форму.

На принимающем конце скрипт должен:

1. Проверять требуемые данные.
2. Проверять корректность типа данных и соответствие критериям. Например, если передано имя пользователя, оно должно содержать только правильные данные. Оно должно быть более минимальной длины, но не более указанной максимальной. Имя пользователя не может совпадать с уже существующим в базе именем, и не должно быть в списке зарезервированных слов. И так далее.
3. Очистить данные для безопасности.
4. Предварительно форматировать данные, если это требуется (обрезать лишние пробелы, декодировать сущности HTML и так далее).
5. Подготовить данные для вставки в базу данных.

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

# Учебник по валидации форм

Далее следует «настольный» учебник по реализации валидации форм с CodeIgniter.

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

1. Файл отображения с формой.
2. Файл отображения, содержащий сообщение об успехе.
3. Функция контроллера, чтобы получать и обрабатывать переданные данные.

Давайте сделаем эти три простые вещи, используя форму для регистрации пользователей в качестве примера.

## Форма

Используя текстовый редактор, создайте форму myform.php. В нее поместите этот код, и сохраните ее в вашу директорию `applications/views/`:

<html> <head> <title>My Form</title> </head> <body> <?php echo validation_errors(); ?> <?php echo form_open('form'); ?> <h5>Username</h5> <input type="text" name="username" value="" size="50" /> <h5>Password</h5> <input type="text" name="password" value="" size="50" /> <h5>Password Confirm</h5> <input type="text" name="passconf" value="" size="50" /> <h5>Email Address</h5> <input type="text" name="email" value="" size="50" /> <div><input type="submit" value="Submit" /></div> </form> </body> </html>

## Страница успеха

Используя текстовый редактор, создайте файл formsuccess.php. Поместите в него этот код, и сохраните в вашу директорию `applications/views/`:

<html> <head> <title>My Form</title> </head> <body> <h3>Your form was successfully submitted!</h3> <p><?php echo anchor('form', 'Try it again!'); ?></p> </body> </html>

## Контроллер

Используя текстовый редактор, создайте контроллер form.php. Поместите в него этот код, и сохраните в вашей директории `applications/controllers/`:

<?php class Form extends CI_Controller { function index() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } } ?>

## Попробуйте!

Чтобы попробовать вашу форму, посетите ваш сайт по URL, соответствующий этому:

`example.com/index.php/form/`

Если вы нажали кнопку Submit, вы увидите перезагруженную форму. Это происходит потому, что вы пока не указали никаких правил валидации.

Так как вы не указали классу Form Validation что нужно валидировать, он возвращает FALSE по умолчанию. Функция `run()` возвращает TRUE только если успешно применила ваши правила, без каких-либо нарушений.

## Объяснение

Обратите внимание на несколько вещей насчет того, что написано выше:

Форма (myform.php) это обычная веб-форма, с несколькими исключениями:

1. Она использует помощник форм для создания открывающего тега. Технически это не является необходимым. Вы можете создавать форму, используя стандартный HTML. Однако, смысл использования помощника в том, что он генерирует URL для action, основываясь на URL, указанном в конфигурационном файле. Это делает ваше приложение более портативным, когда изменяется его URL.
2. В верху формы вы увидели такой вызов функции: `<?php echo validation_errors(); ?>`

   Эта функция вернет любые сообщения об ошибках, возвращенные валидатором. Если там нет ошибок, функция вернет пустую строку.

Контроллер (form.php) имеет единственную функцию: index(). Эта функция инициализирует класс валидации и загружает помощник форм и помощник URL, используемые в отображении. Она также запускает процесс валидации. В зависимости от того, была ли валидация успешной, она отображает форму или страницу успеха.

## Установка правил валидации

CodeIgniter позволяет вам установить множество правил валидации, какие вам требуются для каждого данного поля, объединять их в некотором порядке, а также позволяет вам подготавливать и предварительно обрабатывать данные из полей в то же время. Чтобы установить правила валидации, вы будете использовать функцию set_rules():

`$this->form_validation->set_rules();`

Функция выше принимает три параметра на вход:

1. Имя поля — существующее имя, которые вы дали полю формы.
2. Человекочитаемое имя поля, которое будет вставлено в сообщения об ошибках. Например, если имя поля «user», вы можете дать ему человекочитаемое имя «Имя пользователя». Примечание: Если вы хотите сохранять имена полей в языковом файле, пожалуйста посмотрите раздел Перевод имен полей.
3. Правила валидации для поля формы.

Вот пример. В вашем контроллере (application/controllers/form.php) добавье этот код, сразу после функции инициализации валидации:

`$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
`

Теперь ваш контроллер выглядит примерно так:

<?php class Form extends CI_Controller { function index() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'required'); $this->form_validation->set_rules('password', 'Password', 'required'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } } ?>

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

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

## Установка правил массивом

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

`$config = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'Password Confirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
);
$this->form_validation->set_rules($config);`

## Объединение правил

CodeIgniter позволяет вам объединять правила. Попробуйте. Измените ваши правила в третьем параметре функции для установки правил, вроде этого:

`$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
`

Код выше устанавливает следующие правила:

1. Поле имени пользователя должно содержать не менее 5 и не более 12 символов.
2. Содержимое поля пароля должно совпадать с подтверждением пароля.
3. Поле для адреса электронной почты должно содержать правильный адрес электронной почты.

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

## Подготовка данных

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

`$this->form_validation->set_rules('username', 'Username', '`trim`|required|min_length[5]|max_length[12]|`xss_clean`');
$this->form_validation->set_rules('password', 'Password', '`trim`|required|matches[passconf]|`md5`');
$this->form_validation->set_rules('passconf', 'Password Confirmation', '`trim`|required');
$this->form_validation->set_rules('email', 'Email', '`trim`|required|valid_email');
`

В этом примере мы обрезаем (trim) данные из полей, конвертируем пароль в MD5 и прогоняем имя пользователя через функцию xss_clean(), которая удалит потенциально опасные данные.

Любые родные функции PHP, которые принимают один параметр, могут быть использованы в качестве правил. Например htmlspecialchars, trim, MD5 и так далее.

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

## Перезаполнение формы

До сих пор мы имели дело только с ошибками. Теперь настало время для перезаполнения формы переданными данными. CodeIgniter предлагает несколько функций-помощников, которые позволяют сделать это. Одна из них используется наиболее часто:

`set_value('field name')`

Откройте ваше отображение application/views/myform.php и обновите значение в каждом поле, используя фунцию set_value():

Не забудьте включить каждое имя поля в функцию set_value()!

<html> <head> <title>My Form</title> </head> <body> <?php echo validation_errors(); ?> <?php echo form_open('form'); ?> <h5>Username</h5> <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /> <h5>Password</h5> <input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" /> <h5>Password Confirm</h5> <input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" /> <h5>Email Address</h5> <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" /> <div><input type="submit" value="Submit" /></div> </form> </body> </html>

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

Примечание: Раздел Справка по фунциям ниже содержит объяснения по фунциям, которые позволяют перезаполнять меню <select>, переключатели и флаги.

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

`<input type="text" name="`colors[]`" value="<?php echo set_value('`colors[]`'); ?>" size="50" />`

Смотрите дополнительную информацию в разделе Использование массивов в качестве имен полей ниже.

## Ваши функции-правила

Система валидации поддерживает обратные вызовы (callbacks) для ваших собственных функций. Это позволяет вам расширять класс валидации в соответствии с вашими потребностями. Например, если вы хотите запустить запрос в БД, чтобы убедиться в том, что пользователь выбрал уникальное имя пользователя, вы можете создать функцию с обратным вызовом (callback) для этого. Давайте создадим пример.

В вашем контроллере замените правило "username" на это:

`$this->form_validation->set_rules('username', 'Username', '`callback_username_check`');`

Потом добавьте новую функцию username_check() в ваш контроллер. Вот так теперь может выглядеть контроллер:

<?php class Form extends CI_Controller { public function index() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'callback_username_check'); $this->form_validation->set_rules('password', 'Password', 'required'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } } public function username_check($str) { if ($str == 'test') { $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"'); return FALSE; } else { return TRUE; } } } ?>

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

Чтобы вызвать функцию, просто поместите ее имя в правило, с префиксом "callback_". Если вам нужно получать дополнительные параметры в функции, просто добавьте их в квадратные скобки: "callback_foo[bar]", и они будут переданы в качестве аргументов.

Примечание: Вы также можете обрабатывать данные формы, которые были переданы вашей функции и возвращены ей. Если ваша функция возвращает что-то кроме TRUE или FALSE, будет подразумеваться, что это новые данные из формы, которые следует обрабатывать.

## Установка сообщений об ошибках

Все родные сообщения об ошибках храняться в языковом файле: language/english/form_validation_lang.php

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

`$this->form_validation->set_message('rule', 'Error Message');`

Где rule соответствует имени конкретного правила, и Error Message это текст, который должен быть отображен.

Если вы включите %s в вашу строку ошибки, оно будет заменено на человекочитаемое имя, которые вы использовали при определении правила.

В примере с обратным вызовом (вашей функцией-правилом) выше сообщение об ошибке будет установлено передачей имени функции:

`$this->form_validation->set_message('username_check')`

Вы также можете переопределять любые сообщения об ошибках в языковом файле. Например, чтобы изменить сообщение для правила required («требуется»), сделайте следующее:

`$this->form_validation->set_message('required', 'Your custom message here');`

## Перевод имен полей

Если вы хотите сохранить человекочитаемое имя, переданное функции set_rules(), и следовательно, позволить ему быть переведенным, сделайте так:

Сначала, добавьте префикс lang: к имени, как в этом примере:

`$this->form_validation->set_rules('first_name', '`lang:`first_name', 'required');
`

Затем сохраните имя в одном из ваших языковых файлов, без префикса:

`$lang['first_name'] = 'First Name';`

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

`$this->lang->load('file_name');`

Смотрите страницу языкового класса за дополнительной информацией о языковых файлах.

## Изменение форматирования ошибок

По умолчаиню класс Form Validation использует теги абзаца (<p>) вокруг каждого сообщения об ошибке. Вы можете изменять эти ограничители, глобально или индивидуально.

1. Глобальное изменение ограничителей

   Чтобы изменить ограничители глобально, в вашей функции контроллера после каждой загрузки класса валидации добавьте это:

   `$this->form_validation->set_error_delimiters('`<div class="error">`', '`</div>`');`

   В этом примере мы переключили ограничители на теги div.

2. Индивидуальное изменение ограничителей

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

   `<?php echo form_error('field name', '`<div class="error">`', '`</div>`'); ?>`

   или:

   `<?php echo validation_errors('`<div class="error">`', '`</div>`'); ?>`

## Раздельное отображение ошибок

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

Попробуйте! Измените вашу форму, в соответствии с этим:

<h5>Username</h5> <?php echo form_error('username'); ?> <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /> <h5>Password</h5> <?php echo form_error('password'); ?> <input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" /> <h5>Password Confirm</h5> <?php echo form_error('passconf'); ?> <input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" /> <h5>Email Address</h5> <?php echo form_error('email'); ?> <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

Если ошибок нет, ничего не будет отображаться. Если есть ошибка, появится сообщение над полем.

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

`<?php echo form_error('`options[size]`'); ?>
<input type="text" name="`options[size]`" value="<?php echo set_value("`options[size]`"); ?>" size="50" />`

Смотрите дополнительную информацию в разделе Использование массивов в качестве имен полей.

# Сохранение наборов правил валидации в файле конфигурации

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

### Как сохранить ваши правила

Чтобы сохранить ваши правила валидации, просто создайте файл с именем `form_validation.php` в вашей директории application/config/. В этом файле поместите массив `$config` с вашими правилами. Как было показано ранее, массив должен соответствовать таком прототипу:

`$config = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'Password Confirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
);
`

Ваши правила валидации будут автоматически загружены и использованы при вызове функции run().

Пожалуйста обратите внимание на то, что вы должны назвать этот массив $config.

### Создание набора правил

Чтобы организовать ваши правила в наборы, поместите их в «подмассивы». Рассмотрим этот пример, показывающий две группы правил. Для примера мы назвали эти группы "signup" и "email". Вы можете называть правила, как вам угодно:

`$config = array(
'`signup`' => array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'PasswordConfirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
),
'`email`' => array(
array(
'field' => 'emailaddress',
'label' => 'EmailAddress',
'rules' => 'required|valid_email'
),
array(
'field' => 'name',
'label' => 'Name',
'rules' => 'required|alpha'
),
array(
'field' => 'title',
'label' => 'Title',
'rules' => 'required'
),
array(
'field' => 'message',
'label' => 'MessageBody',
'rules' => 'required'
)
)
);
`

### Вызов конкретной группы правил

Чтобы вызвать группу правил, передайте ее имя функции `run()`. Например, чтобы вызвать правила `signup`, сделайте так:

`if ($this->form_validation->run('`signup`') == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
`

### Ассоциирование функции контроллера с группой правил

Альтернативный и более автоматизированный способ вызова группы правил — это именование ее в соответствии с классом и функцией, в которых вы хотите ее использовать. Например, давайте предположим, что мы имеем контроллер с именем `Member` и функцию в нем `signup()`. Наш класс может выглядеть так:

`<?php
class `Member` extends CI_Controller {
function `signup`()
{
$this->load->library('form_validation');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
}
?>`

В конфигурационном файле валидации, создайте группу правил `member/signup`:

`$config = array(
'`member/signup`' => array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'PasswordConfirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
)
);
`

Когда имя группы правил идентично контроллеру и функции, она будет автоматически использоваться при вызове функции run() внутри этого класса и функции.

# Использование массивов в качестве имен полей

Класс валидации форм поддерживает использование массивов в качестве имен полей. Рассмотрим этот пример:

`<input type="text" name="`options[]`" value="" size="50" />`

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

Например, чтобы установить правило для полей выше, используйте:

`$this->form_validation->set_rules('`options[]`', 'Options', 'required');`

Или чтобы показывать сообщения об ошибках около поля:

`<?php echo form_error('`options[]`'); ?>`

Или для перезаполнения поля:

`<input type="text" name="`options[]`" value="`<?php echo set_value('`options[]`'); ?>`" size="50" />`

Вы можете использовать многомерные массивы в качестве имен полей. Например:

`<input type="text" name="`options[size]`" value="" size="50" />`

Или:

`<input type="text" name="`sports[nba][basketball]`" value="" size="50" />`

Как в нашем первом примере, вы должны использовать соответствующее имя массива в функции-помощнике:

`<?php echo form_error('`sports[nba][basketball]`'); ?>`

Если вы используете флаги (checkbox) или другие поля, которые имеют множество опций, не забудьте оставить пустые скобки после каждой опции, так все отмеченные попадут в массив POST:

`<input type="checkbox" name="`options[]`" value="red" />
<input type="checkbox" name="`options[]`" value="blue" />
<input type="checkbox" name="`options[]`" value="green" />`

Или, если вы используете многомерный массив:

`<input type="checkbox" name="`options[color][]`" value="red" />
<input type="checkbox" name="`options[color][]`" value="blue" />
<input type="checkbox" name="`options[color][]`" value="green" />`

Если вы используете функции-помощники, также добавьте скобки:

`<?php echo form_error('`options[color][]`'); ?>`

# Справка по правилам

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

Правило | Параметр | Описание | Пример
--- | --- | --- | ---
required | Нет | Возвращает FALSE, если элемент формы пуст. |
matches | Да | Возвращает FALSE, если содержимое элемента формы не соответствует содержимому элемента формы, указанному в параметре. | matches[form_item]
is_unique | Да | Возвращает FALSE, если элемент формы не уникален в указанных в параметре таблице и поле. | is_unique[table.field]
min_length | Да | Возрвращает FALSE, если длина меньше, чем указано в параметре. | min_length[6]
max_length | Да | Возрвращает FALSE, если длина больше, чем указано в параметре. | max_length[12]
exact_length | Да | Возвращае FALSE, если длина не соответствует указанной. | exact_length[8]
greater_than | Да | Возвращает FALSE, если содержимое элемента формы меньше указанного или не является числовым значением. | greater_than[8]
less_than | Да | Возвращает FALSE, если содержимое элемента формы больше чем указано, или не является числовым значением. | less_than[8]
alpha | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитных символов. |
alpha_numeric | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитно-числовых символов. |
alpha_dash | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитно-числовых символов, символов подчеркивания или дефисов. |
numeric | Нет | Возвращает FALSE, если содержимое элемента формы не является числовым значением. |
integer | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме целого числа. |
decimal | Да | Возвращает FALSE, если содержимое элемента формы не является десятичным числом. |
is_natural | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме натуральных чисел: 0, 1, 2, 3 и так далее. |
is_natural_no_zero | Нет | Возвращает FALSE, если содержимое элемента формы содержит что-то кроме натуральных чисел, кроме ноля: 1, 2, 3 и так далее |
valid_email | Нет | Возвращает FALSE, если элемент формы не содержит корректный адрес электронной почты. |
valid_emails | Нет | Возвращает FALSE, если элемент формы не содержит список корректных адресов электронной почты. |
valid_ip | Нет | Возвращает FALSE, если указанный IP-адрес некорректен. |
valid_base64 | Нет | Возвращает FALSE, если переданная строка содержит что-либо кроме правильных символов Base64. |

Примечание: Эти функции также могут использоваться самостоятельно, например:

`$this->form_validation->required($string);`

Примечание: Вы также можете использовать любые функции PHP, которые принимают один параметр.

# Справка по подготовке данных

Вот список всех функций подготовки данных, доступных для использования:

Имя | Параметр | Описание
--- | --- | ---
xss_clean | Нет | Пропускает данные через фильтр XSS, описанный на странице класса Input.
prep_for_form | Нет | Конвертирует специальные символы HTML так, чтобы они отображались в форме, не разрывая ее.
prep_url | Нет | Добавляет "http://" к URL-ам, если требуется.
strip_image_tags | Нет | Обрезает теги HTML от изображений, оставляя только URL.
encode_php_tags | Нет | Конвертирует теги PHP в соответствия.

Примечание: Вы также можете использовать любую родную функцию PHP, которая принимает один парамер, например `trim`, `htmlspecialchars`, `urldecode` и так далее.

# Справка по функциям

Следующие функции доступны для использования в вашем контроллере.

## $this->form_validation->set_rules();

Позволяет вам устанавливать правила валидации, как описано выше:

- Установка правил валидации
- Сохранение групп правил в конфигурационном файле

## $this->form_validation->run();

Запускает процесс валидации. Возвращает TRUE при успехе или FALSE при неудаче. Вы можете опционально передать имя группы фукнции, как описано в разделе Сохранение групп правил в конфигурационном файле.

## $this->form_validation->set_message();

Позволяет вам устанавливать собственные сообщения об ошибках. Смотрите ваше Установка сообщений об ошибках.

# Справка по помощникам

Доступны следующие функции-помощники для использования в файлах отображениях, содержащих ваши формы. Это процедурные функции, поэтому они не нуждаются в предварении $this->form_validation.

## form_error()

Показывает индивидуальное сообщение об ошибке, ассоциированное с именем поля, переданное функции. Пример:

`<?php echo form_error('username'); ?>`

Разделители сообщений об ошибках опционально могут быть определены. Смотрите Изменение форматирования ошибок.

## validation_errors()

Показывает все сообщения об ошибках. Пример:

`<?php echo validation_errors(); ?>`

Разделители сообщений об ошибках опционально могут быть определены. Смотрите Изменение форматирования ошибок.

## set_value()

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

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

При первой загрузке в поле формы будет 0.

## set_select()

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