Laravel cung cấp một tiện ích đơn giản, thuận tiện để xác thực dữ liệu và truy xuất thông báo lỗi xác thực thông qua lớp
// The given data did not pass validation
6Ví dụ xác thực cơ bản
$validator = Validator::make[
array['name' => 'required|min:5']
Đối số đầu tiên được truyền cho phương thức
// The given data did not pass validation
7 là dữ liệu đang được xác thực. Đối số thứ hai là các quy tắc xác thực sẽ được áp dụng cho dữ liệuSử dụng mảng để chỉ định quy tắc
Nhiều quy tắc có thể được phân tách bằng cách sử dụng ký tự "ống" hoặc dưới dạng các phần tử riêng biệt của một mảng
$validator = Validator::make[
array['name' => array['required', 'min:5']]
Xác thực nhiều trường
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
Khi một phiên bản
// The given data did not pass validation
8 đã được tạo, phương pháp // The given data did not pass validation
9 [hoặc $messages = $validator->messages[];
0] có thể được sử dụng để thực hiện xác thực // The given data did not pass validation
Nếu xác thực không thành công, bạn có thể truy xuất thông báo lỗi từ trình xác thực
$messages = $validator->messages[];
Bạn cũng có thể truy cập vào một loạt các quy tắc xác thực không thành công mà không cần thông báo. Để làm như vậy, hãy sử dụng phương pháp
$messages = $validator->messages[];
1$validator = Validator::make[
array['name' => 'required|min:5']
1Xác thực tập tin
Lớp
// The given data did not pass validation
8 cung cấp một số quy tắc để xác thực tệp, chẳng hạn như $messages = $validator->messages[];
3, $messages = $validator->messages[];
4 và các quy tắc khác. Khi xác thực tệp, bạn có thể chỉ cần chuyển chúng vào trình xác thực cùng với dữ liệu khác của mìnhLàm việc với thông báo lỗi
Sau khi gọi phương thức
$messages = $validator->messages[];
5 trên phiên bản // The given data did not pass validation
8, bạn sẽ nhận được phiên bản $messages = $validator->messages[];
7, phiên bản này có nhiều phương thức thuận tiện để làm việc với các thông báo lỗiTruy xuất thông báo lỗi đầu tiên cho một trường
$validator = Validator::make[
array['name' => 'required|min:5']
8Truy xuất tất cả các thông báo lỗi cho một trường
$validator = Validator::make[
array['name' => 'required|min:5']
9Truy xuất tất cả các thông báo lỗi cho tất cả các trường
// The given data did not pass validation
0Xác định xem có tồn tại thông báo cho một trường hay không
// The given data did not pass validation
1Truy xuất thông báo lỗi với định dạng
$validator = Validator::make[
array['name' => array['required', 'min:5']]
0Ghi chú. Theo mặc định, thư được định dạng bằng cú pháp tương thích với Bootstrap
Truy xuất tất cả các thông báo lỗi với định dạng
$validator = Validator::make[
array['name' => array['required', 'min:5']]
1Thông báo Lỗi & Chế độ xem
Khi bạn đã thực hiện xác thực, bạn sẽ cần một cách dễ dàng để đưa thông báo lỗi trở lại chế độ xem của mình. Điều này được xử lý thuận tiện bởi Laravel. Hãy xem xét các tuyến đường sau đây làm ví dụ
$validator = Validator::make[
array['name' => array['required', 'min:5']]
2Lưu ý rằng khi xác thực không thành công, chúng tôi chuyển phiên bản
// The given data did not pass validation
8 sang Chuyển hướng bằng phương pháp $messages = $validator->messages[];
9. Phương pháp này sẽ flash các thông báo lỗi vào phiên để chúng có sẵn trong yêu cầu tiếp theoTuy nhiên, lưu ý rằng chúng tôi không phải liên kết rõ ràng các thông báo lỗi với chế độ xem trong lộ trình GET của chúng tôi. Điều này là do Laravel sẽ luôn kiểm tra lỗi trong dữ liệu phiên và tự động liên kết chúng với chế độ xem nếu chúng khả dụng. Vì vậy, điều quan trọng cần lưu ý là một biến
$validator = Validator::make[
array['name' => 'required|min:5']
10 sẽ luôn có sẵn trong tất cả các chế độ xem của bạn, theo mọi yêu cầu, cho phép bạn giả định một cách thuận tiện rằng biến $validator = Validator::make[
array['name' => 'required|min:5']
10 luôn được xác định và có thể được sử dụng một cách an toàn. Biến $validator = Validator::make[
array['name' => 'required|min:5']
10 sẽ là một thể hiện của $messages = $validator->messages[];
7Vì vậy, sau khi chuyển hướng, bạn có thể sử dụng biến
$validator = Validator::make[
array['name' => 'required|min:5']
10 bị ràng buộc tự động trong chế độ xem của mình$validator = Validator::make[
array['name' => array['required', 'min:5']]
3Túi lỗi được đặt tên
Nếu bạn có nhiều biểu mẫu trên một trang, bạn có thể đặt tên cho
$messages = $validator->messages[];
7 lỗi. Điều này sẽ cho phép bạn truy xuất các thông báo lỗi cho một biểu mẫu cụ thể. Chỉ cần chuyển một tên làm đối số thứ hai cho $messages = $validator->messages[];
9$validator = Validator::make[
array['name' => array['required', 'min:5']]
4Sau đó, bạn có thể truy cập phiên bản
$messages = $validator->messages[];
7 có tên từ biến $validator = Validator::make[
array['name' => 'required|min:5']
10$validator = Validator::make[
array['name' => array['required', 'min:5']]
5Quy tắc xác thực có sẵn
Dưới đây là danh sách tất cả các quy tắc xác thực có sẵn và chức năng của chúng
Đã được chấp nhận
Trường được xác thực phải là có, bật hoặc 1. Điều này hữu ích để xác thực việc chấp nhận "Điều khoản dịch vụ"
active_url
Trường được xác thực phải là một URL hợp lệ theo hàm PHP
$validator = Validator::make[
array['name' => 'required|min:5']
19sau đó. ngày
Trường được xác thực phải là một giá trị sau một ngày nhất định. Ngày tháng sẽ được chuyển vào hàm PHP
$validator = Validator::make[
array['name' => 'required|min:5']
80chữ cái
Trường được xác thực phải hoàn toàn là ký tự chữ cái
alpha_dash
Trường được xác thực có thể có các ký tự chữ và số, cũng như dấu gạch ngang và dấu gạch dưới
alpha_num
Trường được xác thực phải hoàn toàn là ký tự chữ và số
mảng
Trường được xác thực phải thuộc loại mảng
trước. ngày
Trường được xác thực phải là một giá trị trước ngày đã cho. Ngày tháng sẽ được chuyển vào hàm PHP
$validator = Validator::make[
array['name' => 'required|min:5']
80giữa. nhỏ nhất lớn nhất
Trường được xác thực phải có kích thước nằm trong khoảng từ tối thiểu đến tối đa đã cho. Chuỗi, số và tệp được đánh giá theo cách tương tự như quy tắc
$messages = $validator->messages[];
3boolean
Trường được xác thực phải có thể được truyền dưới dạng boolean. Đầu vào được chấp nhận là
$validator = Validator::make[
array['name' => 'required|min:5']
83, $validator = Validator::make[
array['name' => 'required|min:5']
84, $validator = Validator::make[
array['name' => 'required|min:5']
85, $validator = Validator::make[
array['name' => 'required|min:5']
86, $validator = Validator::make[
array['name' => 'required|min:5']
87 và $validator = Validator::make[
array['name' => 'required|min:5']
88đã xác nhận
Trường được xác thực phải có trường phù hợp là
$validator = Validator::make[
array['name' => 'required|min:5']
89. Ví dụ: nếu trường được xác thực là $validator = Validator::make[
array['name' => 'required|min:5']
90, thì trường $validator = Validator::make[
array['name' => 'required|min:5']
91 phù hợp phải có trong thông tin đầu vàongày
Trường được xác thực phải là một ngày hợp lệ theo chức năng PHP
$validator = Validator::make[
array['name' => 'required|min:5']
80Định dạng ngày tháng. định dạng
Trường được xác thực phải khớp với định dạng được xác định theo hàm PHP
$validator = Validator::make[
array['name' => 'required|min:5']
93khác nhau. đồng ruộng
Trường đã cho phải khác với trường được xác thực
chữ số. giá trị
Trường được xác thực phải là số và phải có độ dài giá trị chính xác
chữ số_giữa. nhỏ nhất lớn nhất
Trường được xác thực phải có độ dài giữa tối thiểu và tối đa đã cho
Trường được xác thực phải được định dạng dưới dạng địa chỉ email
tồn tại. bảng, cột
Trường được xác thực phải tồn tại trên một bảng cơ sở dữ liệu nhất định
Cách sử dụng cơ bản của quy tắc tồn tại
Chỉ định tên cột tùy chỉnh
$validator = Validator::make[
array['name' => array['required', 'min:5']]
6Bạn cũng có thể chỉ định thêm các điều kiện sẽ được thêm dưới dạng mệnh đề "where" vào truy vấn
$validator = Validator::make[
array['name' => array['required', 'min:5']]
7Chuyển
$validator = Validator::make[
array['name' => 'required|min:5']
94 dưới dạng giá trị mệnh đề "where" sẽ thêm kiểm tra cho giá trị cơ sở dữ liệu $validator = Validator::make[
array['name' => 'required|min:5']
94$validator = Validator::make[
array['name' => array['required', 'min:5']]
8hình ảnh
Tệp được xác thực phải là hình ảnh [jpeg, png, bmp hoặc gif]
Trong. thực phẩm, thanh,
Trường được xác thực phải được bao gồm trong danh sách giá trị đã cho
số nguyên
Trường được xác thực phải có giá trị số nguyên
ip
Trường được xác thực phải được định dạng dưới dạng địa chỉ IP
tối đa. giá trị
Trường được xác thực phải nhỏ hơn hoặc bằng giá trị tối đa. Chuỗi, số và tệp được đánh giá theo cách tương tự như quy tắc
$messages = $validator->messages[];
3kịch câm. thực phẩm, thanh,
Tệp đang được xác thực phải có loại MIME tương ứng với một trong các tiện ích mở rộng được liệt kê
Cách sử dụng cơ bản của quy tắc MIME
$validator = Validator::make[
array['name' => array['required', 'min:5']]
9tối thiểu. giá trị
Trường được xác thực phải có giá trị tối thiểu. Chuỗi, số và tệp được đánh giá theo cách tương tự như quy tắc
$messages = $validator->messages[];
3not_in. thực phẩm, thanh,
Trường được xác thực không được bao gồm trong danh sách giá trị đã cho
con số
Trường được xác thực phải có một giá trị số
biểu thức chính quy. mẫu
Trường được xác thực phải khớp với biểu thức chính quy đã cho
Ghi chú. Khi sử dụng mẫu
$validator = Validator::make[
array['name' => 'required|min:5']
98, có thể cần phải chỉ định các quy tắc trong một mảng thay vì sử dụng các dấu phân cách dấu gạch ngang, đặc biệt nếu biểu thức chính quy chứa ký tự dấu gạch ngangyêu cầu
Trường được xác thực phải có trong dữ liệu đầu vào
bắt buộc_if. trường, giá trị,
Trường được xác thực phải có mặt nếu trường trường bằng bất kỳ giá trị nào
bắt buộc_với. thực phẩm, thanh,
Trường được xác thực chỉ phải xuất hiện nếu có bất kỳ trường nào được chỉ định khác
required_with_all. thực phẩm, thanh,
Trường được xác thực chỉ phải có mặt nếu tất cả các trường được chỉ định khác đều có mặt
bắt buộc_không. thực phẩm, thanh,
Trường được xác thực chỉ phải xuất hiện khi không có bất kỳ trường nào được chỉ định khác
bắt buộc_không_có_tất_cả. thực phẩm, thanh,
Trường được xác thực chỉ phải xuất hiện khi tất cả các trường được chỉ định khác không xuất hiện
tương tự. đồng ruộng
Trường đã cho phải khớp với trường đang được xác thực
kích thước. giá trị
Trường được xác thực phải có kích thước khớp với giá trị đã cho. Đối với dữ liệu chuỗi, giá trị tương ứng với số ký tự. Đối với dữ liệu số, giá trị tương ứng với một giá trị số nguyên nhất định. Đối với tệp, kích thước tương ứng với kích thước tệp tính bằng kilobyte
chuỗi. giá trị
Trường được xác thực phải là một loại chuỗi
Múi giờ
Trường được xác thực phải là mã định danh múi giờ hợp lệ theo hàm PHP
$validator = Validator::make[
array['name' => 'required|min:5']
99độc nhất. bảng,cột,ngoại trừ,idColumn
Trường được xác thực phải là duy nhất trên một bảng cơ sở dữ liệu nhất định. Nếu tùy chọn
// The given data did not pass validation
00 không được chỉ định, tên trường sẽ được sử dụngCách sử dụng cơ bản của quy tắc duy nhất
Chỉ định tên cột tùy chỉnh
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
0Buộc một quy tắc duy nhất bỏ qua một ID đã cho
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
1Thêm mệnh đề bổ sung
Bạn cũng có thể chỉ định thêm các điều kiện sẽ được thêm dưới dạng mệnh đề "where" vào truy vấn
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
2Trong quy tắc trên, chỉ những hàng có
// The given data did not pass validation
01 trên 185 mới được đưa vào kiểm tra duy nhấturl
Trường được xác thực phải được định dạng dưới dạng URL
Ghi chú. Hàm này sử dụng phương thức
03 của PHP
// The given data did not pass validation
Thêm quy tắc có điều kiện
Trong một số trường hợp, bạn có thể muốn chạy kiểm tra xác thực đối với một trường chỉ khi trường đó có trong mảng đầu vào. Để nhanh chóng hoàn thành việc này, hãy thêm quy tắc
// The given data did not pass validation
04 vào danh sách quy tắc của bạn$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
3Trong ví dụ trên, trường
// The given data did not pass validation
05 sẽ chỉ được xác thực nếu nó có trong mảng // The given data did not pass validation
06Xác thực có điều kiện phức tạp
Đôi khi bạn có thể chỉ muốn yêu cầu một trường nhất định nếu trường khác có giá trị lớn hơn 100. Hoặc bạn có thể cần hai trường để chỉ có một giá trị nhất định khi có trường khác. Thêm các quy tắc xác thực này không phải là một điều khó khăn. Đầu tiên, tạo một phiên bản
// The given data did not pass validation
8 với các quy tắc tĩnh không bao giờ thay đổi của bạn$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
4Giả sử ứng dụng web của chúng tôi dành cho người sưu tầm trò chơi. Nếu một nhà sưu tập trò chơi đăng ký với ứng dụng của chúng tôi và họ sở hữu hơn 100 trò chơi, chúng tôi muốn họ giải thích lý do tại sao họ sở hữu nhiều trò chơi như vậy. Ví dụ: có lẽ họ điều hành một cửa hàng bán lại trò chơi hoặc có thể họ chỉ thích sưu tầm. Để thêm yêu cầu này một cách có điều kiện, chúng ta có thể sử dụng phương thức
// The given data did not pass validation
04 trên trường hợp // The given data did not pass validation
8$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
5Đối số đầu tiên được truyền cho phương thức
// The given data did not pass validation
04 là tên của trường mà chúng tôi đang xác thực có điều kiện. Đối số thứ hai là các quy tắc chúng tôi muốn thêm. Nếu // The given data did not pass validation
11 được thông qua khi đối số thứ ba trả về $validator = Validator::make[
array['name' => 'required|min:5']
83, các quy tắc sẽ được thêm vào. Phương pháp này giúp dễ dàng xây dựng các xác thực có điều kiện phức tạp. Bạn thậm chí có thể thêm xác thực có điều kiện cho một số trường cùng một lúc$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
6Ghi chú. Tham số
13 được truyền cho
// The given data did not pass validation
11 của bạn sẽ là một phiên bản của
// The given data did not pass validation
15 và có thể được sử dụng làm đối tượng để truy cập đầu vào và tệp của bạn
// The given data did not pass validation
Thông báo lỗi tùy chỉnh
Nếu cần, bạn có thể sử dụng thông báo lỗi tùy chỉnh để xác thực thay vì mặc định. Có một số cách để chỉ định thông báo tùy chỉnh
Truyền tin nhắn tùy chỉnh vào Trình xác thực
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
7Ghi chú. Trình giữ chỗ
16 sẽ được thay thế bằng tên thực của trường được xác thực. Bạn cũng có thể sử dụng các trình giữ chỗ khác trong thông báo xác thực
// The given data did not pass validation
Trình giữ chỗ xác thực khác
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
8Chỉ định một thông báo tùy chỉnh cho một thuộc tính nhất định
Đôi khi bạn có thể muốn chỉ định một thông báo lỗi tùy chỉnh chỉ cho một trường cụ thể
$validator = Validator::make[
'password' => 'lamepassword',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
9Chỉ định tin nhắn tùy chỉnh trong tệp ngôn ngữ
Trong một số trường hợp, bạn có thể muốn chỉ định các tin nhắn tùy chỉnh của mình trong một tệp ngôn ngữ thay vì chuyển chúng trực tiếp tới
// The given data did not pass validation
8. Để làm như vậy, hãy thêm tin nhắn của bạn vào mảng // The given data did not pass validation
18 trong tệp ngôn ngữ // The given data did not pass validation
19 // The given data did not pass validation
0Quy tắc xác thực tùy chỉnh
Đăng ký quy tắc xác thực tùy chỉnh
Laravel cung cấp nhiều quy tắc xác thực hữu ích; . Một phương pháp đăng ký quy tắc xác thực tùy chỉnh là sử dụng phương pháp
$validator = Validator::make[
array['name' => array['required', 'min:5']]
00 // The given data did not pass validation
1Trình xác thực tùy chỉnh Đóng nhận ba đối số. tên của
$validator = Validator::make[
array['name' => array['required', 'min:5']]
01 đang được xác thực, $validator = Validator::make[
array['name' => array['required', 'min:5']]
02 của thuộc tính và một mảng $validator = Validator::make[
array['name' => array['required', 'min:5']]
03 được truyền cho quy tắcBạn cũng có thể truyền một lớp và phương thức cho phương thức
$validator = Validator::make[
array['name' => array['required', 'min:5']]
04 thay vì một ClosureLưu ý rằng bạn cũng sẽ cần xác định thông báo lỗi cho các quy tắc tùy chỉnh của mình. Bạn có thể làm như vậy bằng cách sử dụng mảng thông báo tùy chỉnh nội tuyến hoặc bằng cách thêm mục nhập vào tệp ngôn ngữ xác thực
Mở rộng Lớp Trình xác thực
Thay vì sử dụng lệnh gọi lại Đóng để mở rộng Trình xác thực, bạn cũng có thể mở rộng chính lớp Trình xác thực. Để làm như vậy, hãy viết một lớp Trình xác thực mở rộng
$validator = Validator::make[
array['name' => array['required', 'min:5']]
05. Bạn có thể thêm các phương thức xác thực vào lớp bằng cách đặt tiền tố cho chúng bằng $validator = Validator::make[
array['name' => array['required', 'min:5']]
06 // The given data did not pass validation
2Đăng ký Trình giải quyết trình xác thực tùy chỉnh
Tiếp theo, bạn cần đăng ký tiện ích mở rộng Trình xác thực tùy chỉnh của mình
// The given data did not pass validation
3Khi tạo quy tắc xác thực tùy chỉnh, đôi khi bạn có thể cần xác định thay thế trình giữ chỗ tùy chỉnh cho thông báo lỗi. Bạn có thể làm như vậy bằng cách tạo Trình xác thực tùy chỉnh như được mô tả ở trên và thêm hàm
$validator = Validator::make[
array['name' => array['required', 'min:5']]
07 vào trình xác thực // The given data did not pass validation
4Nếu bạn muốn thêm một thông báo tùy chỉnh "người thay thế" mà không mở rộng lớp
// The given data did not pass validation
8, bạn có thể sử dụng phương thức $validator = Validator::make[
array['name' => array['required', 'min:5']]
09