FuelPHP - 验证

验证是Web应用程序中频繁且重复次数最多的任务之一.用户在表单中输入所需数据并提交.然后,Web应用程序需要在处理数据之前验证数据.例如,用户输入员工数据,post_action需要在将其保存到数据库之前进行验证. FuelPHP为此提供了一个非常简单的类验证.

在FuelPHP中,验证的概念非常简单,它通过Validation类提供各种方法来正确验证表单.以下是验证的工作流程,

第1步 : 使用 forge 方法创建新的验证对象.

$ val = Validation :: forge();

第2步 : 使用add方法添加需要验证的字段.

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

第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);

第4步 : 调用run方法来验证数据.

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

第5步 : 使用validated和error分别获取有效和无效字段.

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

规则

FuelPHP包含许多要验证的规则,还提供了创建新规则的选项.验证类支持的规则如下,

  • 必需 : 要输入的值

  • required_with : 将另一个字段设置为伴随字段.如果设置了该字段,则还需要设置随播广告字段

  • match_value : 设置值与字段值匹配

  • match_pattern : 将要匹配的值设置为带有字段值的正则表达式

  • match_field : 将另一个字段的值设置为值以与字段的值匹配

  • match_collection : 将要匹配的值设置为具有字段值的集合

  • min_length : 设置字段值的最小长度

  • max_length : 设置字段值的最大长度

  • exact_length : 设置字段值的确切长度

  • valid_date : 将字段值设置为有效日期

  • valid_email : 将字段值设置为有效的电子邮件

  • valid_emails : 将字段的值设置为有效的电子邮件,以逗号分隔

  • valid_url : 将字段的值设置为有效的网址

  • valid_ip : 将字段的值设置为有效的IP

  • numeric_min : 设置字段值的最小值

  • numeric_max : 设置字段值的最大值

  • numeric_between : 设置字段值的最小值和最大值

  • valid_string : 与正则表达式相似但更简单

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

此处,alpha表示字母字符和点引用to(.).有效字符串只是包含字母字符和(.)的字符串.其他选项是大写,小写,特殊,数字,空格等.

工作示例

我们可以更新添加员工功能以包含验证.只需更新员工控制器的 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'); 
   } 
}

在这里,我们已将名称和年龄指定为必填字段. 年龄需要介于20到30之间.如果两个规则都有效,那么员工数据将被保存并重定向到员工列表页面.否则,员工数据将被拒绝并重定向以添加员工页面.