📜  FuelPHP-验证

📅  最后修改于: 2020-10-25 04:24:26             🧑  作者: Mango


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

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

步骤1-使用forge方法创建新的Validation对象。

$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 validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
} 

步骤5-使用validated和error分别获取有效和无效字段。

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

规则

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

  • 必需-要输入的值

  • required_with-将另一个字段设置为伴随字段。如果设置了该字段,则还需要设置伴随字段

  • match_value-设置要与字段值匹配的值

  • match_pattern-设置要与字段值匹配的正则表达式值

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

  • match_collection-设置要与字段值匹配的值作为集合

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

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

  • precision_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');

在此,alpha表示字母字符,而点表示(。)。有效字符串仅是包含字母字符和(。)的字符串。其他选项是大写,小写,特殊字符,数字,空格等。

工作实例

我们可以更新添加员工功能以包括验证。只需如下更新雇员控制器的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之间。如果两个规则都有效,则将保存员工数据并将其重定向到员工列表页面。否则,员工数据将被拒绝并重定向到添加员工页面。