验证是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之间.如果两个规则都有效,那么员工数据将被保存并重定向到员工列表页面.否则,员工数据将被拒绝并重定向以添加员工页面.