Điều làm ấn tượng nhất về Laravel đối với tôi chính là thư viện Validate của nó. Thư viện này thực sự rất sáng tạo. Khi tôi chuyển sang làm việc trên các dự án khác mà không sử dụng Laravel, như ví dụ WordPress, tôi luôn muốn tìm một thư viện Validate tương tự. Và cho đến nay, tôi đã tìm thấy một thư viện tuyệt vời đó là GUMP.
GUMP là gì?
GUMP là một thư viện mã nguồn mở viết bằng PHP, được tạo ra để thực hiện xác minh và kiểm tra dữ liệu (validate), cũng như làm sạch dữ liệu (filter). Thư viện này đã được phát triển kể từ năm 2013.
Cài đặt GUMP vào dự án PHP
chúng ta sử dụng composer để cài GUMP
composer require wixel/gump
Hướng dẫn sử dụng GUMP
Các bạn tham khảo đoạn code hoàn chỉnh sau:
$gump = new GUMP(); // set validation rules $gump->validation_rules([ 'username' => 'required|alpha_numeric|max_len,100|min_len,6', 'password' => 'required|max_len,100|min_len,6', 'email' => 'required|valid_email', 'gender' => 'required|exact_len,1|contains,m;f', 'credit_card' => 'required|valid_cc' ]); // set field-rule specific error messages $gump->set_fields_error_messages([ 'username' => ['required' => 'Fill the Username field please, its required.'], 'credit_card' => ['extension' => 'Please enter a valid credit card.'] ]); // set filter rules $gump->filter_rules([ 'username' => 'trim|sanitize_string', 'password' => 'trim', 'email' => 'trim|sanitize_email', 'gender' => 'trim', 'bio' => 'noise_words' ]); // on success: returns array with same input structure, but after filters have run // on error: returns false $valid_data = $gump->run($_POST); if ($gump->errors()) { var_dump($gump->get_readable_errors()); // ['Field <span class="gump-field">Somefield</span> is required.'] // or var_dump($gump->get_errors_array()); // ['field' => 'Field Somefield is required'] } else { var_dump($valid_data); }
Các rule vui lòng tham khảo ở link: https://github.com/Wixel/GUMP
Ngoài ra các bạn có thể dễ dàng mở rộng để validate các yêu cầu khác.
/** * You would call it like 'equals_string,someString' * * @param string $field Field name * @param array $input Whole input data * @param array $params Rule parameters. This is usually empty array by default if rule does not have parameters. * @param mixed $value Value. * In case of an array ['value1', 'value2'] would return one single value. * If you want to get the array itself use $input[$field]. * * @return bool true or false whether the validation was successful or not */ GUMP::add_validator("equals_string", function($field, array $input, array $params, $value) { return $value === $params; }, 'Field {field} does not equal to {param}.'); /** * @param string $value Value * @param array $param Filter parameters (optional) * * @return mixed result of filtered value */ GUMP::add_filter("upper", function($value, array $params = []) { return strtoupper($value); });