FuelPHP 驗證
fuelphp 驗證
驗證 是 web 應用程序中最頻繁和最重復的任務之一。用戶在表單中輸入所需的數據并提交。然后,web 應用程序需要在處理數據之前驗證數據。例如,用戶輸入員工數據,post_action 需要驗證,然后才能將其保存到數據庫中。 fuelphp 為此提供了一個非常簡單的類 validation。
在 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-使用驗證和錯誤分別獲取有效和無效字段。
$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'); } }
在這里,我們指定了 姓名和年齡作為必填字段。 age 需要在 20 到 30 之間。如果兩個規則都有效,則員工數據將被保存并重定向到員工列表頁面。否則,員工數據將被拒絕并重定向到添加員工頁面。