Làm cách nào để xác thực một mảng trong chiếu sáng?

Đối với những bạn đang tìm kiếm một PHP framework đặc biệt linh hoạt, không mất nhiều thời gian để tìm hiểu và có một cộng đồng lớn có thể tham gia với thông tin chi tiết bất cứ khi nào bạn cần, thì Laravel chính là lựa chọn của bạn. Chúng ta đã đi sâu vào Laravel khi thảo luận về cách tiếp cận giữa Laravel và Django. Bây giờ chúng ta sẽ phóng to xác thực Laravel, đối với đầu vào của người dùng, có lẽ là chức năng mà Laravel được biết đến nhiều nhất và tốt nhất. Trong bài viết sau, chúng ta sẽ từng bước giải quyết vấn đề xác thực trong Laravel. Nhưng trước tiên, hãy xem nó là gì

1. Xác thực Laravel là gì?

Nói tóm lại, bạn có một ứng dụng và bạn cần xác thực dữ liệu đầu vào. Trình xác thực của Laravel kiểm tra xem đầu vào đó có tôn trọng các quy tắc xác thực mà bạn đã xác định hay không

Xác thực Laravel có thể được thực hiện theo nhiều cách khác nhau và các thông báo lỗi được tạo tự động hoặc thủ công, tùy thuộc vào phương thức xác thực bạn chọn. Khi đầu vào được xác thực, phần còn lại sẽ tự động diễn ra như mong đợi. Bằng cách này, bạn tránh được các lỗi tiếp theo trên đường đi

2. Làm cách nào để xác thực trong Laravel?

Đúng vậy, chúng tôi đã nói rằng có nhiều cách để xác thực đầu vào bằng Laravel

Bạn có thể sử dụng tham số truy vấn xác thực yêu cầu của Laravel. Phương pháp này có thể áp dụng ngay khi có yêu cầu. Khi trình xác thực Laravel không thành công, bạn sẽ tự động được chuyển hướng đến trang trước. Tương tự, nếu xác nhận thành công, nó sẽ tiếp tục bước sau

Một phương pháp khác là yêu cầu biểu mẫu. Nó phù hợp với khối lượng đầu vào lớn, vì vậy bộ điều khiển của bạn không bị lộn xộn. Xác thực yêu cầu biểu mẫu cũng có thể được thực hiện theo nhiều cách khác nhau. phương thức rules(), đây là phương thức dễ nhất và phương thức ủy quyền(), đảm bảo người dùng có quyền gửi biểu mẫu. Điều tuyệt vời về yêu cầu biểu mẫu là bạn cũng có thể tùy chỉnh thông báo lỗi xác thực cho từng biểu mẫu, thay vì đặt ngay một thông báo cho toàn bộ ứng dụng

Phương thức xác thực thứ ba là phương thức make(), hàm ý tạo trình xác thực theo cách thủ công. Tất nhiên, nhược điểm là bạn sẽ không được hưởng những lợi ích của tự động hóa. Nhưng điều tốt là bạn có thể tự do xử lý các thông báo lỗi tùy chỉnh theo bất kỳ cách nào bạn muốn hoặc cần chúng.

Xác thực Laravel trong 4 bước

Hãy cho chúng tôi xem đâu là các bước chính để xử lý xác thực với nền tảng Laravel. Trước khi chúng tôi thấy các bước xác thực thực tế, trước tiên bạn cần và. Bạn có thể sử dụng lệnh PHP artisan make controller để tạo FormController. tập tin php

1. Viết logic xác thực

Với mọi thứ đã sẵn sàng, giờ đây bạn có thể viết logic xác thực trong phương thức lưu trữ. Đối với điều này, bạn có thể áp dụng phương thức xác thực được tìm thấy trong đối tượng Illuminate\Http\Request, một trong các mảng đối tượng xác thực của Laravel. Khi xác thực không thành công, khung sẽ tạo phản hồi tự động cho người dùng và bạn sẽ thấy Illuminate\Validation\ValidationException. Nếu tất cả đều tốt, việc thực hiện tiếp tục bình thường

Xác thực Laravel dừng ở lỗi đầu tiên. Trong một số trường hợp, có thể phải dừng lỗi xác thực đầu tiên đối với giá trị thuộc tính. Đối với điều này, hãy sử dụng quy tắc bảo lãnh xác thực của Laravel được gán cho thuộc tính đó

2. Hiển thị lỗi xác thực

Bạn đã xác định các quy tắc xác thực trong Laravel và đầu vào của người dùng mà bạn nhận được không tuân thủ. Việc xác thực Laravel thực hiện là đưa người dùng quay lại trang trước và nó tự động thực hiện điều đó. Các lỗi xác thực và nhập yêu cầu cũng được tự động đưa vào phiên. Nếu bạn áp dụng phần mềm trung gian Illuminate\View\Middleware\ShareErrorsFromSession, một biến $errors sẽ được chia sẻ cho tất cả các chế độ xem của ứng dụng, vì vậy bạn biết rằng nó luôn được xác định. Biến xác thực Laravel này có thể được tìm thấy trong Illuminate\Support\MessageBag như một ví dụ

3. Xác thực yêu cầu biểu mẫu trong Laravel

Xác thực yêu cầu biểu mẫu được sử dụng cho các tình huống xác thực có độ phức tạp tăng lên. Các lớp yêu cầu biểu mẫu này là các lớp tùy chỉnh với logic xác thực và ủy quyền của riêng chúng. Để tạo lớp yêu cầu, hãy chạy PHP Artisan make. lệnh yêu cầu. Lớp yêu cầu biểu mẫu được tạo theo cách này có thể được tìm thấy trong thư mục app/Http/Requests

Bạn có thể sử dụng gợi ý kiểu nếu bạn yêu cầu các phụ thuộc trong phương thức chữ ký của quy tắc. Bộ chứa dịch vụ tự động giải quyết chúng

Bạn có thể sử dụng gợi ý kiểu nếu bạn yêu cầu các phụ thuộc trong phương thức chữ ký của quy tắc. Bộ chứa dịch vụ tự động giải quyết chúng

Điểm hay của điều này là bạn không cần phải phức tạp hóa bộ điều khiển của mình bằng logic xác thực. Khi bạn nhập gợi ý yêu cầu, yêu cầu biểu mẫu sẽ được xác thực ngay cả trước khi gọi phương thức điều khiển. Như bạn có thể mong đợi, khi xác thực không thành công, người dùng sẽ được đưa trở lại vị trí trước đó bằng phản hồi chuyển hướng tự động. Trong trường hợp yêu cầu XHR, người dùng nhận được mã trạng thái 422 của phản hồi HTTP có lỗi xác thực '

Bạn thậm chí có thể “làm phong phú” yêu cầu biểu mẫu của mình bằng móc xác thực “sau”. Phương thức withValidator có thể được sử dụng cho điều đó. Trước khi Laravel đánh giá các quy tắc xác thực, bạn có thể gọi bất kỳ phương thức nào vì đã nhận được một trình xác thực được xây dựng đầy đủ

Nếu bạn muốn chắc chắn rằng một người dùng nhất định thực sự được phép cập nhật tài nguyên, bạn có thể áp dụng phương thức ủy quyền có sẵn trong lớp yêu cầu biểu mẫu này

Để kiểm tra thông tin của người dùng đã được xác thực, bạn có thể chạy phương thức người dùng, vì lớp yêu cầu cơ sở của Laravel được mở rộng bởi biểu mẫu yêu cầu. Trả về sai phương thức ủy quyền được dịch thành mã trạng thái 403 và sẽ không thực thi phương thức điều khiển của bạn. Trả về true trong phương thức ủy quyền nếu bạn chọn xử lý logic ủy quyền trong các phần khác của ứng dụng

4. Thông báo lỗi

Laravel cung cấp nhiều phương thức để làm việc với các thông báo lỗi. Chúng có sẵn trong phiên bản Illuminate\Support\MessageBag mà bạn nhận được trong phiên bản trình xác thực khi bạn gọi phương thức lỗi

Bạn có thể truy xuất thông báo đầu tiên hoặc tất cả thông báo cho một trường (phương thức đầu tiên hoặc phương thức get). Trong trường hợp sau, bạn có thể sử dụng ký tự * để truy xuất tất cả các thông báo cho từng mảng trường biểu mẫu

Với phương pháp tất cả, bạn có thể truy xuất, như bạn mong đợi, tất cả thư trong tất cả các trường. Nếu bạn muốn kiểm tra xem có bất kỳ lỗi nào đối với một trường cụ thể hay không, hãy sử dụng phương thức has

Tin nhắn tùy chỉnh

Nếu bạn có các thuộc tính yêu cầu thông báo tùy chỉnh, hãy truy cập lang/xx/xác thực. php của ứng dụng của bạn và thêm vào mảng tùy chỉnh các tùy chỉnh bạn cần. Theo mặc định, Laravel đi kèm với các thông báo lỗi bằng tiếng Anh, được tìm thấy trong thư mục lang/en/validation. tập tin php. Trong tệp này, có các mục dịch cho từng quy tắc xác thực. Có thể dịch tùy chỉnh các thông báo xác thực lỗi sang các ngôn ngữ khác nhau bằng cách sửa đổi các mục dịch có sẵn

Để tùy chỉnh thông báo lỗi trong Laravel, bạn có thể sử dụng Trình xác thực. tạo phương thức và chuyển cho đối số thứ ba thông báo tùy chỉnh của bạn. Ký hiệu “dấu chấm” được sử dụng cho một trường cụ thể. Đầu tiên viết tên của các thuộc tính, sau đó viết các quy tắc tùy chỉnh

Làm cách nào để xác thực một mảng trong chiếu sáng?

3. Quy tắc xác thực có sẵn trong Laravel

Một trong những ưu điểm của các quy tắc xác thực của Laravel là chúng đã có sẵn, sẵn sàng được chọn và sử dụng nếu ứng dụng của bạn không yêu cầu tùy chỉnh cụ thể

Trong khi các quy tắc xác thực của Laravel 8 được tính vào khoảng 70, thì Laravel 9 hiện đã kết thúc, điều này sẽ giúp cuộc sống của bạn dễ dàng hơn rất nhiều

Hãy đi qua một số phổ biến nhất

Mọi trang web và ứng dụng đều có trường đó cần được kiểm tra (mặc dù ít người đọc và thực sự đồng ý với nó) – Điều khoản Dịch vụ hoặc Điều khoản và Điều kiện. Nó phải được chấp nhận để người dùng tiếp tục trên trang web hoặc ứng dụng. Chà, bạn có quy tắc xác thực được chấp nhận cho quy tắc đó với các giá trị có, bật, 1 hoặc đúng

Bạn có thể cần xác thực toàn bộ mảng trường để có thể sử dụng xác thực Laravel cho mảng, miễn là trường được xác thực là một mảng PHP

, hoặc và

Các quy tắc này là phổ biến để xác thực ngày tháng, miễn là ngày đó phải là hàm strtotime của PHP

Nó thường được sử dụng để xác nhận mật khẩu, yêu cầu trường foo_confirmation phù hợp. Chúng tôi sẽ giải thích thêm trong bài viết

, ,

Các quy tắc này đảm bảo rằng đầu vào hợp lệ, bằng cách kiểm tra các trường theo các mẫu nhất định

Quy tắc này được sử dụng để xác thực các trường trong cơ sở dữ liệu nhất định

Quy tắc này xác thực một trường được cung cấp không trống. Để một trường được coi là trống, có một số điều kiện giá trị phải chuyển thành đúng

  • Giá trị của trường là tệp không có đường dẫn
  • Mảng hoặc đối tượng có thể đếm được là một giá trị trống
  • Có một chuỗi rỗng
  • Bạn có một giá trị null

Có các biến thể khác cho quy tắc bắt buộc bổ sung điều kiện cho các trường được xác thực

4. Xác thực tùy chỉnh trong Laravel là gì?

Làm cách nào để xác thực một mảng trong chiếu sáng?
Hình ảnh từ undraw. đồng

Laravel là công cụ tuyệt vời để phát triển ứng dụng web nhanh với nhiều quy tắc xác thực đã có sẵn. Tuy nhiên, đôi khi việc phát triển phần mềm tùy chỉnh yêu cầu các quy tắc xác thực tùy chỉnh. Giống như có thể đặt thông báo lỗi tùy chỉnh, bạn cũng có thể mở rộng bộ quy tắc xác thực tích hợp sẵn bằng các quy tắc tùy chỉnh của riêng mình

Anh em nào đã từng làm việc chắc còn nhớ Trình xác thực. mở rộng phương pháp. Bằng cách đó, ba tham số đã được gửi đến trình xác thực tùy chỉnh. $attribute, $value của nó và $parameters của quy tắc. Thay vì sử dụng Closure để mở rộng Trình xác thực, bạn có thể mở rộng lớp Trình xác thực bằng cách sử dụng Illuminate\Validation\Validator. Có thể thêm các phương thức xác thực khác bằng cách sử dụng tiền tố xác thực. Khi thông báo lỗi cần thay thế trình giữ chỗ tùy chỉnh, bạn có thể thêm hàm replaceXXX để xác định chúng

Chuyển nhanh đến xác thực Laravel 9, hiện tại, có hai cách để thêm vào mảng quy tắc xác thực của Laravel. bằng cách sử dụng các đối tượng quy tắc hoặc bằng cách sử dụng các bao đóng. Hãy xem khi nào nên sử dụng từng cái

Đối tượng quy tắc

Trong PHP Artisan make controller, viết make. lệnh quy tắc. Quy tắc nằm trong thư mục ứng dụng/Quy tắc. Thư mục này có thể đã tồn tại hoặc nó có thể được tạo khi thực hiện các lệnh Artisan

Để xác định hành vi của quy tắc, hãy chuyển một thể hiện đối tượng quy tắc với các quy tắc xác thực khác để gắn nó vào trình xác thực. Đối tượng quy tắc có một phương thức, gọi, nhận tên thuộc tính, giá trị và những gì sẽ gọi trong trường hợp thất bại. Laravel cũng có thể dịch thông báo lỗi khi đóng $fail bằng cách cung cấp khóa chuỗi dịch

Nếu có dữ liệu bổ sung đang được xác thực và bạn cần truy cập dữ liệu đó bằng xác thực tùy chỉnh, giao diện Illuminate\Contracts\Validation\DataAwareRule có thể được triển khai bởi lớp quy tắc mà bạn cần một phương thức setData để thực hiện. Laravel 9 sẽ tự động gọi phương thức này cho tất cả dữ liệu được gửi để xác thực. Ngoài ra, để truy cập phiên bản thực hiện xác thực, hãy sử dụng giao diện ValidatorAwareRule

đóng cửa

Nếu ứng dụng chỉ yêu cầu sử dụng quy tắc xác thực tùy chỉnh một lần, thì sử dụng bao đóng là cách tốt hơn để áp dụng quy tắc đó. Việc đóng nhận tên thuộc tính, giá trị và gọi lại $fail cho lỗi xác thực

Quy tắc ngầm

Khi các thuộc tính trống, cả quy tắc tùy chỉnh và quy tắc xác thực nội trang đều không được chạy. Để đảm bảo quy tắc tùy chỉnh được chạy bất chấp chuỗi trống của thuộc tính, hãy tạo quy tắc được gọi là quy tắc “ngầm” bằng cách áp dụng giao diện Illuminate\Contracts\Validation\ImplicitRule. Bạn sẽ không cần triển khai các phương thức bổ sung vì giao diện đóng vai trò là “giao diện đánh dấu” của trình xác thực

Một đối tượng quy tắc ẩn mới có thể được tạo bằng lệnh Artisan make. quy tắc và tùy chọn –implicit

5. Điều gì được xác nhận trong xác nhận của Laravel?

Như chúng tôi đã đề cập, xác nhận là một trong những quy tắc xác thực tích hợp sẵn của Laravel. Nó ngụ ý rằng để được xác thực, trường này phải có {field}đối tác xác nhận trong đầu vào. Trường hợp sử dụng phổ biến nhất để xác nhận trong Laravel là xác nhận mật khẩu. Đối với điều này, theo hướng dẫn của họ, bạn nên triển khai trường password_confirmation trong yêu cầu quy tắc xác thực để tìm và kiểm tra sự bằng nhau

Một cách khác để xác nhận mật khẩu là sử dụng cùng. quy tắc mật khẩu để kiểm tra trường password_confirmation

Với hơn 80 mảng quy tắc xác thực của Laravel và khả năng xây dựng các quy tắc xác thực tùy chỉnh và thông báo lỗi tùy chỉnh một cách khá dễ dàng, không có gì ngạc nhiên khi vào năm 2021, nó được coi là một trong những framework phát triển web tốt nhất. Có thể nói rằng phiên bản Laravel 9 hiện tại có thể dễ dàng đứng đầu với tư cách là một trong những framework được sử dụng nhiều nhất, ít nhất là khi xác thực

PHÁT TRIỂN PHẦN MỀM TÙY CHỈNH

Bạn có ý tưởng về dự án Laravel không?

Liên hệ chúng tôi

Làm cách nào để xác thực một mảng trong chiếu sáng?

Làm cách nào để xác thực một mảng trong chiếu sáng?

Teodora

Chuyên gia tiếp thị kỹ thuật số

Kết hợp công nghệ với sự sáng tạo, Teodora biến những tách cà phê thành những suy nghĩ được viết cẩn thận. Với sức mạnh của dấu phẩy Oxford và một chút ma thuật, cô ấy đã mang ngôn từ đến gần mọi người hơn

Làm cách nào để xác thực một mảng trong laravel?

bạn có thể gọi phương thức validate() trực tiếp trên đối tượng Yêu cầu như vậy. $data = $request->validate([ "tên" => "bắt buộc. mảng. tối thiểu. 3", "tên. *" => "bắt buộc. chuỗi. riêng biệt. tối thiểu. 3", ]);

Làm cách nào để xác thực khóa mảng trong laravel?

Bạn có thể thực hiện việc này bằng cách thêm trình xác thực tùy chỉnh . Xem thêm. https. // ấu trùng. com/docs/5. 2/xác thực#quy tắc xác thực tùy chỉnh. Ví dụ. \Validator. mở rộng('integer_keys', function($attribute, $value, $parameters, $validator) { return is_array($value) && count(array_filter(array_keys($value), 'is_string')) === 0; })

Làm cách nào để đọc một mảng trong laravel?

Nếu bạn muốn truy cập dữ liệu của mảng nào đó, chỉ cần làm $array_name[index]->key trong bộ điều khiển hoặc trong dạng xem . Chỉ mục thường là một số nguyên và khóa là thứ bạn đang muốn trích xuất.

Làm cách nào để xác thực tham số tuyến đường trong Laravel 8?

Sử dụng phương thức where() . Nếu có nhiều tham số, nó sẽ lấy mảng có khóa là tên tham số và giá trị làm quy tắc xác thực được áp dụng trên khóa.