- 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 & Session 管理
- 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 - 设置字段值的最大长度
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 指字母字符,点指 (.)。有效字符串仅包含字母字符和 (.) 的字符串。其他选项包括大写、小写、特殊字符、数字、空格等。
工作示例
我们可以更新添加员工功能以包含验证。只需按如下方式更新员工控制器的 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 之间。如果两个规则都有效,则将保存员工数据并重定向到员工列表页面。否则,将拒绝员工数据并重定向到添加员工页面。