Laravel – Validation

Tram Ho

Trong bài viết lần này tôi xin chia sẻ về validation trong Laravel framework. Các message trong bài viết sử dụng tiếng Nhật. Go my way!

Thêm Validation

Validate khi thực hiện tạo mới

Khi check validation trong laravel chỉ cần liệt kê những nội dung mà chúng ta muốn validate. Dưới đây là một phần source check validation sample khi đăng ký account.

Trong source phía trên, điều kiện check validate của các field như sau:

admin_code là required, integer, unique

role là size

password là required, string, min, confirmed.

Áp dụng vào thực tế và thử thao tác tạo lỗi như sau.

Nếu không input vào item Admin Code vào click button : Add/追加

Hiển thị message rồi nhé, Bravo !

Nhân tiện, tôi đã sử dụng Register.blade.php của auth để tạo ra màn hình này, nên phương thức hiển thị cũng khá rõ ràng và dễ hiểu.

Theo Laravel Documentation, do $error được định nghĩa trong middleware ShareErrorsFromSession nên chúng ta có thể sử dụng thoải mái.

Chỉ cần áp dụng vào cơ chế hiển thị là chúng ta đã có thể cho hiển thị error message. Ngoài ra, nếu xuất hiện lỗi Password validation, sẽ hiển thị error message tương tự như alert message ở phía dưới item tương ứng.

Sau đây tôi xin phép chia sẻ về cơ chế hiển thị error ở đoạn code dưới đây:

Trong class thực hiện check có error message validation tại thuộc tính đó(password) hay không bằng @error (Chỉ thị message hiển thị ở đâu) , trong trường hợp có message thì cho hiển thị nội dung của @error phía dưới item tương ứng. Khai báo error message tại @message.

Và tại đây tôi sẽ tận dụng để display none(hide) những message đã hiển thị.

Đối với action Update, chỉ thực hiện check validation với item đã được input

Thông thường, nếu là required item thì nội dung validation cũng không thay đổi khi thực hiện Update Example : Với item Admin Code, mặc dù tại thời điểm Create là : Unique, nhưng khi thực hiện Update, nếu muốn set giống với Admin Code ban đầu, hoặc chỉ Check/Update tại trạng thái đã input (Trường hợp Hash PW không hiển thị trên màn hình).

Example : Tôi đã bỏ check unique cho admin_code. Thêm ‘sometimes’ và ‘nullable’ cho password với mục đích chỉ check khi đã thực hiện input. Chỉ với những thay đổi nhỏ này, tôi có thể xử lý có thực hiện update item đó , và chỉ update khi item đó được set giá trị khi save data.

Xử lý đa ngôn ngữ message sang tiếng Nhật

Phần tiếp theo tôi sẽ sử dụng message bằng tiếng Nhật

Tạo file tiếng Nhật

Nếu tạo sẵn các file xử lý của từng ngôn ngữ trong thư mục resources / lang, nó sẽ được Localization theo cài đặt. Folder lang mặc định sẽ như sau:

Trong folder en (tiếng Anh), có những file sau: ・auth.php: message hiển thị khi lỗi authen login ・pagination.php: text hiển thị khi pagination ・passwords.php: message hiển thị khi reset password ・validation.php: message hiển thị khi validation v.v… Khi localization, sẽ sử dụng file trên hoặc sẽ tự tạo.

Bây giờ tôi sẽ tạo folder ja lưu file messgae tiếng Nhật.

Sau khi chuyển sang tiếng Nhật, tất cả message sẽ lấy ra từ folder ja nên file hiện tại có trong en sẽ copy vào cả folder ja.

Nhân tiện đưa các file đa ngôn ngữ cho tiếng Nhật vào chung folder.

:attribute, :date sẽ trở thành variable.

Đa ngôn ngữ Item name

validation.php có thể setting đa ngôn ngữ (tiếng Nhật) cho Item name được hiển thị trong message lỗi.

Set trong mảng trong attributes thì sẽ như thế này.

Message sau khi được sử lý đa ngôn ngữ cho tiếng Nhật

Item name hiển thị trong message lỗi được chuyển thành tiếng Nhật. Item trên màn hình là tiếng Anh, cái này thì thiết định bằng blade.php.

Hết !!!

Nguồn : https://qiita.com/apricotcomic/items/acb4fdb8969990034da8#validateを追加する

Chia sẻ bài viết ngay