Xác thực duy nhất của Laravel khi chèn

Hướng dẫn này sẽ cung cấp cho bạn ví dụ về ví dụ xác thực duy nhất của laravel. ví dụ này sẽ giúp bạn xác thực duy nhất trong ví dụ về laravel. Tôi sẽ chỉ cho bạn cách sử dụng xác thực duy nhất trong laravel. ví dụ này sẽ giúp bạn xác thực yêu cầu biểu mẫu laravel duy nhất. Hãy bắt đầu với ví dụ xác thực email duy nhất của laravel

Ở đây, tôi muốn chỉ cho bạn cách sử dụng xác thực duy nhất trong ứng dụng laravel 6, laravel 7, laravel 8 và laravel 9. tôi sẽ cung cấp cho bạn cách khác để thêm xác thực duy nhất vào ứng dụng của bạn. bạn có thể thêm xác thực duy nhất tại thời điểm tạo và cả thời gian cập nhật

Đôi khi chúng tôi cần thêm xác thực duy nhất cho email, tên người dùng, v.v. tại thời điểm đó nếu bạn kiểm tra email hoặc tên người dùng duy nhất thì bạn phải viết truy vấn cơ sở dữ liệu theo cách thủ công và thực hiện việc đó bằng điều kiện if. nhưng laravel cung cấp quy tắc "duy nhất" sẽ giúp dễ dàng thêm xác thực duy nhất

bạn cũng có thể làm theo hướng dẫn cơ bản từ đầu tại đây. Ví dụ xác thực biểu mẫu Laravel

Về cơ bản, bạn có thể tạo lớp yêu cầu của riêng mình bằng lệnh dưới đây

Tạo lớp yêu cầu

php artisan make:request StoreUserRequest

php artisan make:request UpdateUserRequest

Bây giờ bạn có thể sử dụng nó, trong bộ điều khiển của bạn như dưới đây

Mã tệp điều khiển

namespace App\Http\Controllers;

use App\Http\Requests\StoreUserRequest;

use App\Http\Requests\UpdateUserRequest;

use App\User;

class UserController extends Controller

{

public function store[StoreUserRequest $request]

{

/* Do Something */

}

public function update[UpdateUserRequest $request, User $user]

{

/* Do Something */

}

}

Bây giờ bạn có thể xem từng giải pháp dưới đây và bạn có thể sử dụng bất kỳ ai mà bạn yêu cầu để xác thực duy nhất

Laravel cung cấp một cơ sở đơ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

$messages = $validator->messages[];

8

Ví dụ xác thực cơ bản

$validator = Validator::make[

['name' => 'required|min:5']

Đối số đầu tiên được truyền cho phương thức

$messages = $validator->messages[];

9 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ệu

Sử 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[

['name' => ['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

$messages = $validator->messages[];

8 đã được tạo, phương pháp

$failed = $validator->failed[];

1 [hoặc

$failed = $validator->failed[];

2] 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

$failed = $validator->failed[];

3

________số 8_______

Xác thực tập tin

Lớp

$messages = $validator->messages[];

8 cung cấp một số quy tắc để xác thực tệp, chẳng hạn như

$failed = $validator->failed[];

5,

$failed = $validator->failed[];

6 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ình

Móc sau khi xác thực

Trình xác thực cũng cho phép bạn đính kèm các cuộc gọi lại để chạy sau khi hoàn tất xác thực. Điều này cho phép bạn dễ dàng thực hiện xác thực thêm và thậm chí thêm nhiều thông báo lỗi hơn vào bộ sưu tập thông báo. Để bắt đầu, hãy sử dụng phương pháp

$failed = $validator->failed[];

7 trên phiên bản trình xác thực

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

Bạn có thể thêm bao nhiêu cuộc gọi lại

$failed = $validator->failed[];

7 vào trình xác thực nếu cần

Xác thực bộ điều khiển

Tất nhiên, việc tạo và kiểm tra phiên bản

$messages = $validator->messages[];

8 theo cách thủ công mỗi khi bạn xác thực là một vấn đề đau đầu. Đừng lo lắng, bạn có những lựa chọn khác. Lớp cơ sở

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

0 có trong Laravel sử dụng một đặc điểm

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

1. Đặc điểm này cung cấp một phương pháp thuận tiện duy nhất để xác thực các yêu cầu HTTP đến. Đây là những gì nó trông giống như

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

Nếu vượt qua xác thực, mã của bạn sẽ tiếp tục thực thi bình thường. Tuy nhiên, nếu xác thực không thành công, một

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

2 sẽ bị ném. Ngoại lệ này được tự động bắt và chuyển hướng được tạo đến vị trí trước đó của người dùng. Các lỗi xác thực thậm chí còn được tự động chuyển sang phiên

Nếu yêu cầu đến là yêu cầu AJAX, sẽ không có chuyển hướng nào được tạo. Thay vào đó, một phản hồi HTTP với mã trạng thái 422 sẽ được trả lại cho trình duyệt chứa biểu diễn JSON của các lỗi xác thực

Ví dụ: đây là mã tương đương được viết thủ công

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

Tùy chỉnh Định dạng Lỗi Flashed

Nếu bạn muốn tùy chỉnh định dạng của các lỗi xác thực được đưa vào phiên khi xác thực không thành công, hãy ghi đè ____18_______3 trên bộ điều khiển cơ sở của bạn. Đừng quên nhập lớp

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

4 ở đầu tệp

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

Xác nhận yêu cầu biểu mẫu

Đối với các tình huống xác thực phức tạp hơn, bạn có thể muốn tạo một "yêu cầu biểu mẫu". Yêu cầu biểu mẫu là các lớp yêu cầu tùy chỉnh có chứa logic xác thực. Để tạo một lớp yêu cầu biểu mẫu, hãy sử dụng lệnh

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

5 Artisan CLI

$validator = Validator::make[

['name' => ['required', 'min:5']]

0

Lớp được tạo sẽ được đặt trong thư mục

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

6. Hãy thêm một vài quy tắc xác thực vào phương thức

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

7

$validator = Validator::make[

['name' => ['required', 'min:5']]

1

Vì vậy, các quy tắc xác thực được thực hiện như thế nào?

$validator = Validator::make[

['name' => ['required', 'min:5']]

2

Yêu cầu biểu mẫu đến được xác thực trước khi phương thức bộ điều khiển được gọi, nghĩa là bạn không cần phải làm lộn xộn bộ điều khiển của mình với bất kỳ logic xác thực nào. Nó đã được xác nhận

Nếu xác thực không thành công, phản hồi chuyển hướng sẽ được tạo để đưa người dùng trở lại vị trí trước đó của họ. Các lỗi cũng sẽ được flash vào phiên để chúng có sẵn để hiển thị. Nếu yêu cầu là yêu cầu AJAX, phản hồi HTTP có mã trạng thái 422 sẽ được trả lại cho người dùng bao gồm biểu diễn JSON của các lỗi xác thực

Yêu cầu biểu mẫu ủy quyền

Lớp yêu cầu biểu mẫu cũng chứa một phương thức

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

8. Trong phương pháp này, bạn có thể kiểm tra xem người dùng được xác thực có thực sự có quyền cập nhật một tài nguyên nhất định hay không. Ví dụ: nếu người dùng đang cố cập nhật nhận xét về bài đăng trên blog, họ có thực sự sở hữu nhận xét đó không?

$validator = Validator::make[

['name' => ['required', 'min:5']]

3

Lưu ý cuộc gọi đến phương thức

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

9 trong ví dụ trên. Phương thức này cấp cho bạn quyền truy cập vào các tham số URI được xác định trên tuyến đang được gọi, chẳng hạn như tham số

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

0 trong ví dụ bên dưới

$validator = Validator::make[

['name' => ['required', 'min:5']]

4

Nếu phương thức

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

8 trả về

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

2, phản hồi HTTP có mã trạng thái 403 sẽ tự động được trả về và phương thức điều khiển của bạn sẽ không thực thi

Nếu bạn dự định có logic ủy quyền trong một phần khác của ứng dụng của mình, chỉ cần trả về

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

3 từ phương thức

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

8

$validator = Validator::make[

['name' => ['required', 'min:5']]

5

Tùy chỉnh Định dạng Lỗi Flashed

Nếu bạn muốn tùy chỉnh định dạng của các lỗi xác thực được hiển thị trong phiên khi xác thực không thành công, hãy ghi đè

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

5 trên yêu cầu cơ sở của bạn [

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

6]. Đừng quên nhập lớp

$validator = Validator::make[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

4 ở đầu tệp

$validator = Validator::make[

['name' => ['required', 'min:5']]

6

Làm việc với thông báo lỗi

Sau khi gọi phương thức

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

8 trên phiên bản

$messages = $validator->messages[];

8, bạn sẽ nhận được phiên bản

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

0, 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ỗi

Truy xuất thông báo lỗi đầu tiên cho một trường

$validator = Validator::make[

['name' => ['required', 'min:5']]

7

Truy xuất tất cả các thông báo lỗi cho một trường

$validator = Validator::make[

['name' => ['required', 'min:5']]

8

Truy xuất tất cả các thông báo lỗi cho tất cả các trường

$validator = Validator::make[

['name' => ['required', 'min:5']]

9

Xác định xem có tồn tại thông báo cho một trường hay không

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

0

Truy xuất thông báo lỗi với định dạng

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

1

Ghi 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[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

2

Thô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[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

3

Lưu ý rằng khi xác thực không thành công, chúng tôi chuyển phiên bản

$messages = $validator->messages[];

8 sang Chuyển hướng bằng phương pháp

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

2. 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 theo

Tuy 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à biến

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

3 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 biến

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

3 luôn được xác định và có thể được sử dụng một cách an toàn. Biến

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

3 sẽ là một thể hiện của

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

0

Vì vậy, sau khi chuyển hướng, bạn có thể sử dụng biến

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

3 bị ràng buộc tự động trong chế độ xem của mình

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

4

Tú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

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

0 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 tên làm đối số thứ hai cho

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

2

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

5

Sau đó, bạn có thể truy cập phiên bản có tên

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

0 từ biến

* Store the incoming blog post.

public function store[Request $request]

$v = Validator::make[$request->all[], [

'title' => 'required|unique|max:255',

return redirect[]->back[]->withErrors[$v->errors[]];

3

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

6

Quy 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à yes, on, 1 hoặc true. Đ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

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

2

sau đó. 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

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

3

chữ 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

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

3

giữ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

$failed = $validator->failed[];

5

boolean

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à

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

3,

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

2,

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

8,

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

9,

$validator = Validator::make[

['name' => ['required', 'min:5']]

00 và

$validator = Validator::make[

['name' => ['required', 'min:5']]

01

đã xác nhận

Trường được xác thực phải có trường phù hợp là

$validator = Validator::make[

['name' => ['required', 'min:5']]

02. Ví dụ: nếu trường được xác thực là _______5_______03, thì trường _________04 phù hợp phải có trong thông tin đầu vào

ngày

Trường được xác thực phải là một ngày hợp lệ theo hàm PHP

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

3

Định dạng ngày tháng. định dạng

Trường được xác thực phải phù hợp với định dạng được xác định theo hàm PHP5_______06

khá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

e-mail

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[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

7

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'

8

Chuyển

$validator = Validator::make[

['name' => ['required', 'min:5']]

07 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[

['name' => ['required', 'min:5']]

07

$validator = Validator::make[

'password' => 'lamepassword',

'password' => 'required|min:8',

'email' => 'required|email|unique:users'

9

hình ảnh

Tệp được xác thực phải là hình ảnh [jpeg, png, bmp, gif hoặc svg]

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

kị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

// The given data did not pass validation

0

tố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

not_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[

['name' => ['required', 'min:5']]

11, 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 ngang

yê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 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

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[

['name' => ['required', 'min:5']]

12

độ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

$validator = Validator::make[

['name' => ['required', 'min:5']]

13 không được chỉ định, tên trường sẽ được sử dụng

Đôi khi, bạn có thể cần đặt kết nối tùy chỉnh cho các truy vấn cơ sở dữ liệu do Trình xác thực thực hiện. Như đã thấy ở trên, việc đặt

$validator = Validator::make[

['name' => ['required', 'min:5']]

14 làm quy tắc xác thực sẽ sử dụng kết nối cơ sở dữ liệu mặc định để truy vấn cơ sở dữ liệu. Để ghi đè lên điều này, hãy làm như sau

// The given data did not pass validation

1

Cá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

// The given data did not pass validation

2

Buộc một quy tắc duy nhất bỏ qua một ID đã cho

// The given data did not pass validation

3

Thê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

// The given data did not pass validation

4

Trong quy tắc trên, chỉ những hàng có

$validator = Validator::make[

['name' => ['required', 'min:5']]

15 của

protected function formatValidationErrors[Validator $validator]

return $validator->errors[]->all[];

8 mới được đưa vào kiểm tra duy nhất

url

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

$validator = Validator::make[

['name' => ['required', 'min:5']]

17 của PHP

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

$validator = Validator::make[

['name' => ['required', 'min:5']]

18 vào danh sách quy tắc của bạn

// The given data did not pass validation

5

Trong ví dụ trên, trường

$validator = Validator::make[

['name' => ['required', 'min:5']]

19 sẽ chỉ được xác thực nếu nó có trong mảng

$validator = Validator::make[

['name' => ['required', 'min:5']]

20

Xá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

$messages = $validator->messages[];

8 với các quy tắc tĩnh không bao giờ thay đổi của bạn

// The given data did not pass validation

6

Giả 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

$validator = Validator::make[

['name' => ['required', 'min:5']]

18 trên trường hợp

$messages = $validator->messages[];

8

// The given data did not pass validation

7

Đối số đầu tiên được truyền cho phương thức

$validator = Validator::make[

['name' => ['required', 'min:5']]

18 là tên của trường 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

$validator = Validator::make[

['name' => ['required', 'min:5']]

25 được thông qua khi đối số thứ ba trả về

* Store the incoming blog post.

public function store[Request $request]

$this->validate[$request, [

'title' => 'required|unique|max:255',

3, 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

// The given data did not pass validation

8

Ghi chú. Tham số

$validator = Validator::make[

['name' => ['required', 'min:5']]

27 được truyền cho

$validator = Validator::make[

['name' => ['required', 'min:5']]

25 của bạn sẽ là phiên bản của

$validator = Validator::make[

['name' => ['required', 'min:5']]

29 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

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

// The given data did not pass validation

9

Ghi chú. Trình giữ chỗ

$validator = Validator::make[

['name' => ['required', 'min:5']]

30 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

Trình giữ chỗ xác thực khác

$messages = $validator->messages[];

0

Chỉ đị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ể

$messages = $validator->messages[];

1

Chỉ đị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

$messages = $validator->messages[];

8. Để làm như vậy, hãy thêm tin nhắn của bạn vào mảng

$validator = Validator::make[

['name' => ['required', 'min:5']]

32 trong tệp ngôn ngữ

$validator = Validator::make[

['name' => ['required', 'min:5']]

33

$messages = $validator->messages[];

2

Quy 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[

['name' => ['required', 'min:5']]

34

$messages = $validator->messages[];

3

Trình xác thực tùy chỉnh Đóng nhận ba đối số. tên của

$validator = Validator::make[

['name' => ['required', 'min:5']]

35 đang được xác thực,

$validator = Validator::make[

['name' => ['required', 'min:5']]

36 của thuộc tính và một mảng của

$validator = Validator::make[

['name' => ['required', 'min:5']]

37 được chuyển đến quy tắc

Bạn cũng có thể truyền một lớp và phương thức cho phương thức

$validator = Validator::make[

['name' => ['required', 'min:5']]

38 thay vì một Closure

Lư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[...];

$validator->after[function[$validator]

if [$this->somethingElseIsInvalid[]]

$validator->errors[]->add['field', 'Something is wrong with this field!'];

4. Bạn có thể thêm các phương thức xác thực vào lớp bằng cách thêm tiền tố vào trước chúng bằng

$validator = Validator::make[

['name' => ['required', 'min:5']]

40

$messages = $validator->messages[];

4

Đă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

$messages = $validator->messages[];

5

Khi 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[

['name' => ['required', 'min:5']]

41 vào trình xác thực

$messages = $validator->messages[];

6

Nế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

$messages = $validator->messages[];

8, bạn có thể sử dụng phương thức

$validator = Validator::make[

['name' => ['required', 'min:5']]

43

Chủ Đề