FuelPHP - Валидация

Validation- одна из частых и наиболее повторяемых задач в веб-приложении. Пользователь вводит необходимые данные в форму и отправляет их. Затем веб-приложению необходимо проверить данные перед их обработкой. Например, пользователь вводит данные о сотруднике, и post_action необходимо проверить перед сохранением в базе данных. FuelPHP предоставляет для этой цели действительно простой класс Validation.

В FuelPHP концепция проверки очень проста и предоставляет различные методы через класс Validation для правильной проверки формы. Ниже приводится рабочий процесс проверки,

Step 1 - Создайте новый объект проверки, используя forge метод.

$val = Validation::forge();

Step 2 - Добавьте поля, которые необходимо проверить, используя метод добавления.

$val->add('name', 'Employee name');

Step 3 - Установите правила проверки для добавленных полей с помощью add_rule метод.

$val->add('name', 'Employee name')->add_rule('required'); 
$val->add('age', 'Employee age')->add_rule('required') 
   ->add_rule('numeric_min', 20) 
   ->add_rule('numeric_max', 30);

Step 4 - Вызов метода запуска для проверки данных.

// run validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
}

Step 5 - Используйте проверенные и ошибки, чтобы получить действительные и недопустимые поля соответственно.

$vars = $val->validated(); 
$vars = $val->error();

Правила

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

  • required - Вводимое значение

  • required_with- Установите другое поле в качестве сопутствующего поля. Если поле задано, необходимо указать и сопутствующие поля.

  • match_value - Установите значение, которое будет соответствовать значению поля

  • match_pattern - Установите значение, которое будет сопоставлено как регулярное выражение со значением поля

  • match_field - Установить значение другого поля как значение, которое будет соответствовать значению поля

  • match_collection - Установите значение, которое будет сопоставлено как коллекция со значением поля

  • min_length - Установить минимальную длину значения поля

  • max_length - Установить максимальную длину значения поля

  • exact_length - Установите точную длину значения поля

  • valid_date - Установите значение поля на действительную дату

  • valid_email - Установите в поле действительный адрес электронной почты.

  • valid_emails - Установите значение поля на действительные электронные письма, разделенные запятыми.

  • valid_url - Установите в качестве значения поля действительный URL

  • valid_ip - Установите значение поля на действительный IP

  • numeric_min - Установить минимальное значение значения поля

  • numeric_max - Установить максимальное значение значения поля

  • numeric_between - Установить минимальное и максимальное значение значения поля

  • valid_string - Подобно регулярному выражению, но проще

$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');

Здесь альфа относится к алфавитным символам, а точки - к (.). Допустимая строка - это только строка, содержащая буквы алфавита и (.). Другие варианты: прописные, строчные, специальные, числовые, пробелы и т. Д.

Рабочий пример

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

public function post_add() { 
   $val = Validation::forge(); 
   $val->add('name', 'Employee name')->add_rule('required'); 
   $val->add('age', 'Employee age')->add_rule('required')
      ->add_rule('numeric_min', 20) 
      ->add_rule('numeric_max', 30);  
   
   if ($val->run()) { 
      $name = Input::post('name'); 
      $age = Input::post('age');  
      $model = new model_employee(); 
      $model->name = $name; 
      $model->age = $age; 
      $model->save();  
      Response::redirect('employee/list'); 
   } else { 
      Response::redirect('employee/add'); 
   } 
}

Здесь мы указали nameи возраст в качестве обязательных полей. Вageдолжно быть от 20 до 30. Если действуют оба правила, данные о сотрудниках будут сохранены и перенаправлены на страницу со списком сотрудников. В противном случае данные о сотруднике будут отклонены и перенаправлены на страницу добавления сотрудника.