- FuelPHP 教程
- FuelPHP - 主页
- FuelPHP - 简介
- FuelPHP - 安装
- FuelPHP - 架构概述
- FuelPHP - 简单的 Web 应用程序
- FuelPHP - 配置
- FuelPHP - 控制器
- FuelPHP - 路由
- FuelPHP - 请求与响应
- FuelPHP - 视图
- FuelPHP - 演讲者
- FuelPHP - 模型和数据库
- FuelPHP - 表单编程
- FuelPHP - 验证
- 高级形式编程
- FuelPHP - 文件上传
- FuelPHP-Ajax
- FuelPHP - HMVC 请求
- FuelPHP - 主题
- FuelPHP - 模块
- FuelPHP - 包
- Cookie 和会话管理
- FuelPHP - 活动
- FuelPHP - 电子邮件管理
- FuelPHP - 分析器
- 错误处理和调试
- FuelPHP - 单元测试
- 完整的工作示例
- FuelPHP 有用资源
- FuelPHP - 快速指南
- FuelPHP - 有用的资源
- FuelPHP - 讨论
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 方法来验证数据。
// run validation on just post if ($val->run()) { // success } else { // falier }
步骤 5 - 使用 validated 和 error 分别获取有效和无效字段。
$vars = $val->validated(); $vars = $val->error();
规则
FuelPHP 包含许多要验证的规则,并且还提供了创建新规则的选项。Validation类支持的规则如下:
required - 要输入的值
required_with - 将另一个字段设置为伴随字段。如果设置了该字段,则还需要设置伴随字段
match_value - 设置与字段值匹配的值
match_pattern - 设置要与字段值匹配的正则表达式的值
match_field - 将另一个字段的值设置为与该字段的值匹配的值
match_collection - 将值设置为与字段值匹配的集合
min_length - 设置字段值的最小长度
max_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之间。如果两条规则都有效,那么员工数据将被保存并重定向到员工列表页面。否则,员工数据将被拒绝并重定向到添加员工页面。