Cakephp form validation - Xử lý validation trên form

Cakephp form validation – Xử lý validation trên form

Cakephp form validation là một phần quan trọng của bất kỳ ứng dụng CakePHP nào, vì nó giúp đảm bảo rằng các dữ liệu trong một mô hình phù hợp với các quy tắc cần được tuân thủ của các ứng dụng đó. Ví dụ, bạn muốn chắc chắn rằng mật khẩu [$password] dài ít nhất 8 ký tự, hoặc tên người dùng [$username] là duy nhất. Cakephp form validation làm cho việc xử lý trên form hay ứng dụng dễ dàng hơn nhiều.

Cakephp form validation - Xử lý validation trên form
Cakephp form validation – Xử lý validation trên form

Có rất nhiều khía cạnh khác nhau để > form validation. Mình xin giới thiệu tới các bạn chủ để hôm nay. Về cơ bản: những gì sẽ xảy ra khi bạn gọi > save() một phương thức trong Model của bạn. Để biết thêm về  việc làm thế nào để xử lý hiển thị các lỗi xác nhận, xin đọc thêm về FormHelper.

Bước đầu tiên để xác nhận dữ liệu được tạo ra các quy tắc validation trong Model. VD:

class User extends AppModel {
    public $validate = array();
}

Trong VD trên, các mảng $validate được thêm vào User Model, nhưng mảng không chứa quy tắc xác nhận (validation). Giả sử rằng bảng người dùng đã đăng nhập, mật khẩu, email và các trường khác, ví dụ dưới đây cho thấy một số quy tắc xác nhận đơn giản áp dụng cho các trường:

class User extends AppModel {
    public $validate = array(
        'login' => 'alphaNumeric',
        'email' => 'email',
        'born' => 'date'
    );
}

VD  cho thấy cách các kiểm tra giá trị được gán với từng trường trong User Model.

Đối với trường Login, chữ cái và số này sẽ được chấp nhận, Email nên có giá trị hợp lệ kiểu email@abc.com , và Born phải là một ngày hợp lệ.

Việc validator cho phép hiển thị automagic CakePHP của các thông báo lỗi trong các hình thức được định nghĩa nếu dữ liệu đưa vào không tuân theo các quy tắc đã nêu.

CakePHP có nhiều quy tắc xác nhận và sử dụng chúng có thể khá dễ dàng. Một số quy tắc được định nghĩa sẵn cho phép bạn để xác minh các định dạng của email, URL, và số thẻ tín dụng – nhưng mình sẽ giới thiệu cho các chi tiết này sau nha.

Dưới đây là một ví dụ xác nhận phức tạp hơn mà lợi dụng của một số các quy tắc xác nhận built-in:

class User extends AppModel {
    public $validate = array(
        'login' => array(
            'alphaNumeric' => array(
                'rule' => 'alphaNumeric',
                'required' => true,
                'message' => 'Letters and numbers only'
            ),
            'between' => array(
                'rule'    => array('lengthBetween', 5, 15),
                'message' => 'Between 5 to 15 characters'
            )
        ),
        'password' => array(
            'rule' => array('minLength', '8'),
            'message' => 'Minimum 8 characters long'
        ),
        'email' => 'email',
        'born' => array(
            'rule' => 'date',
            'message' => 'Enter a valid date',
            'allowEmpty' => true
        )
    );
}

Để đăng nhập ‘login': giá trị nhập vào phải chứa các chữ cái và các con số duy nhất, chiều dài ký tự nên trong khoảng  5 đến 15 ký tự.

Mật khẩu phải có tối thiểu 8 ký tự.

Email phải là một địa chỉ email hợp lệ, và ‘Born’  phải là một ngày hợp lệ.

Có 03 cách khác nhau mà bạn có thể định nghĩa các quy tắc xác nhận (validator): mảng đơn giản (array), quy tắc duy nhất cho mỗi trường, và nhiều quy tắc cho mỗi trường.

One thought on “Cakephp form validation – Xử lý validation trên form”

  1. Thanks for providing this article. I am able to get the validation done if the fields are noncompliant to the coding done. But I am facing one issue and that is even if the values entered are non-compliant, I am able to submit the form successfully which ideally it shouldnt.

Trả lời

Thư điện tử của bạn sẽ không được hiện thị công khai. Các trường bắt buộc được đánh dấu *

Bạn có thể sử dụng các thẻ HTML và thuộc tính sau: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>