- 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 之間。如果兩個規則都有效,則將儲存員工資料並重定向到員工列表頁面。否則,將拒絕員工資料並重定向到新增員工頁面。