FuelPHP - 验证
验证是 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 方法来验证数据。
// 只对帖子运行验证 if ($val->run()) { // success } else { // falier }
步骤 5 − 使用 valided 和 error 分别获取有效和无效字段。
$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');
这里,alpha 表示字母,dot 表示 (.)。有效字符串只有包含字母和 (.) 的字符串。其他选项包括大写、小写、特殊字符、数字、空格等。
工作示例
我们可以更新添加员工功能以包含验证。只需按如下方式更新员工控制器的 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 作为必填字段。age 需要在 20 到 30 之间。如果两个规则都有效,则将保存员工数据并重定向到员工列表页面。否则,将拒绝员工数据并重定向到添加员工页面。