[FP] Practice Validation on Fuelphp - Làm việc với Validation trong Fuelphp
Posted: Fri Aug 19, 2016 4:08 am
Simple Validation - Các kiểm tra đơn giản cho input tham khảo tại http://fuelphp.com/docs/classes/validat ... dation.htm
* khai báo sử dụng Class Validation
* khai báo validation rule ứng với từng control
** add('tên_control_input','label hiển thị cho control')
** add_rule('tên_validation_rule', các options đi kèm ứng với validtion_rule đó')
** có nhiều validation rule: required, required_with, match_value, match_pattern, match_field, match_collection, min_length, max_length, exact_length, valid_email, valid_emails, valid_url, valid_ip, numeric_min, numeric_max, numeric_between, valid_string
tham khảo tại http://fuelphp.com/docs/classes/validat ... tml#/rules
* khi data post back server các data của các controls sẽ được kiểm tra thông qua run() và trả về kết quả true / false
* Khi dùng mặc định thông báo của Validation
các error_message xuất ra có phần công thức hóa (:label, :param:1) đặt thù ứng với từ rule được cài đặc sẵn trong fuel\core\lang\en\validation.php
ví dụ:
'max_length' => :label may not contain at least :param:1 characters
$val->add('ctrUser','User name') ->:add_rule('min_length',6) ; // Phải nhập User name từ 6 ký tự trở lên
:label là "User name"
:parm:1 giá trị 6
Khi User name nhập dưới 6 ký tự thì thông báo sẽ là 'User name may not contain at least 6 characters'
$val->add('ctrProductID','ProductCode') ->:add_rule('min_length',6) ; // Phải nhập Product ID từ 6 ký tự trở lên
Khi User name nhập dưới 6 ký tự thì thông báo sẽ là 'Product ID may not contain at least 6 characters'
Phần tiếp theo sau ... là để có thể xử lý linh động hơn message validation hay tự tạo một validation rule riêng - ta phải làm sao.
* khai báo sử dụng Class Validation
Code: Select all
$val = \Validation::forge('user-form'); //user-form trùng với <form name="user-form"
** add('tên_control_input','label hiển thị cho control')
** add_rule('tên_validation_rule', các options đi kèm ứng với validtion_rule đó')
** có nhiều validation rule: required, required_with, match_value, match_pattern, match_field, match_collection, min_length, max_length, exact_length, valid_email, valid_emails, valid_url, valid_ip, numeric_min, numeric_max, numeric_between, valid_string
tham khảo tại http://fuelphp.com/docs/classes/validat ... tml#/rules
Code: Select all
$val->add('re-password', 'パスワード確認')->add_rule('match_field','password')->add_rule('min_length',6);
$val->add('password', 'パスワード')->add_rule('match_field','re-password')->add_rule('min_length',6);
Code: Select all
if (Input::post())
{
$val = \Validation::forge('user-form');
$val->add('re-password', 'パスワード確認')->add_rule('match_field','password')->add_rule('min_length',6);
$val->add('password', 'パスワード')->add_rule('match_field','re-password')->add_rule('min_length',6);
if ($val->run())
{
/* Nếu các validation đều thỏa thì các code xử lý ở đây sẽ chạy */
}
else
{
/* Nếu validation nào fail thì các code xử lý ở đây sẽ chạy */
// Gán lỗi vào biến để hiện thị trên view
$data['errors'] = implode('<br>', $val->error_message()); // error_message : các thông báo lỗi của Validation Rule khi fail
}
// Gọi view trả về thông báo lỗi nếu có
$this->display($data,'path/file_view');
}
* Khi dùng mặc định thông báo của Validation
các error_message xuất ra có phần công thức hóa (:label, :param:1) đặt thù ứng với từ rule được cài đặc sẵn trong fuel\core\lang\en\validation.php
ví dụ:
'max_length' => :label may not contain at least :param:1 characters
$val->add('ctrUser','User name') ->:add_rule('min_length',6) ; // Phải nhập User name từ 6 ký tự trở lên
:label là "User name"
:parm:1 giá trị 6
Khi User name nhập dưới 6 ký tự thì thông báo sẽ là 'User name may not contain at least 6 characters'
$val->add('ctrProductID','ProductCode') ->:add_rule('min_length',6) ; // Phải nhập Product ID từ 6 ký tự trở lên
Khi User name nhập dưới 6 ký tự thì thông báo sẽ là 'Product ID may not contain at least 6 characters'
Phần tiếp theo sau ... là để có thể xử lý linh động hơn message validation hay tự tạo một validation rule riêng - ta phải làm sao.