Thông báo tùy chỉnh xác thực yêu cầu của Laravel 8

Trong khi bạn đang làm việc với đầu vào và biểu mẫu của người dùng, việc xác thực các trường phổ biến và trích xuất các quy tắc xác thực chính xác giúp mã dễ bảo trì và đọc hơn. Bạn có thể làm cho mã mạnh hơn bằng cách sử dụng quy tắc xác thực tùy chỉnh của Laravel với các tham số. Điều này hợp lý hóa luồng giữa logic và mã bất cứ nơi nào được yêu cầu

Laravel cung cấp nhiều quy tắc xác thực thuận tiện khác nhau có thể được áp dụng cho dữ liệu nếu các giá trị dành riêng cho bảng cơ sở dữ liệu. Trong bài viết chuyên sâu này, chúng tôi sẽ trình bày chi tiết tất cả các quy tắc xác thực để giúp bạn làm quen với các tính năng của các quy tắc xác thực này

Bắt đầu xác thực

Để củng cố kiến ​​thức của bạn, hãy xem xét một ví dụ về xác thực biểu mẫu và hiển thị thông báo lỗi cho người dùng. Chúng tôi sẽ hướng dẫn bạn tổng quan này để bạn có thể hiểu đầy đủ về cách xác thực yêu cầu dữ liệu đến trong Laravel

Xác định các tuyến đường khác nhau

Hãy lấy một ví dụ nơi chúng tôi xác định các tuyến đường sau trong 'tuyến đường/web. tập tin php

use App\Http\Controllers\PostController;
 
Route::get['/post/create', [PostController::class, 'create']];
Route::post['/post', [PostController::class, 'store']];

Trong đoạn mã trên, route 'GET' sẽ mô tả một biểu mẫu để tạo một bài đăng mới. Lộ trình 'POST' chia sẻ bài đăng mới trong cơ sở dữ liệu

Tạo bộ điều khiển mới

Bây giờ hãy hiểu cách một bộ điều khiển đơn giản xử lý các yêu cầu dữ liệu đến liên quan đến các tuyến đường này

Đôi khi, do cách chúng tôi đặt tên cho các thông số đầu vào hoặc yêu cầu của mình, cuối cùng chúng tôi sẽ hiển thị các thông báo lỗi xác thực không phù hợp và trông không phù hợp với người dùng cuối

Đây là một ví dụ

3namespace App\Http\Controllers\Api;

5use App\Http\Controllers\Controller;

7class CartItemsController extends Controller

12 'qty' => ['required', 'integer', 'min:10'],

13 'productId' => ['required', 'exists:products,id']

Chúng tôi xác thực trường qty, nhưng chúng tôi đang sử dụng từ viết tắt chứ không phải từ số lượng đầy đủ. Và trong khi điều này được chấp nhận trong mã;

Điều này thậm chí còn tồi tệ hơn khi chúng ta xử lý các tên tham số như productId.

Mặc dù lỗi đầu tiên là khá, nhưng ít nhất thì lỗi thứ hai hơi kỳ lạ. Là người dùng cuối, tôi sẽ mong đợi điều gì đó trong dòng "Sản phẩm không còn nữa. "

Để khắc phục điều này, chúng ta có thể tùy chỉnh các thông báo lỗi bằng cách chuyển một mảng thứ hai làm đối số, chứa các khóa được tạo bằng cách sử dụng tên của tham số, dấu chấm và sau đó là tên của quy tắc xác thực - giá trị sẽ là thông báo lỗi mà chúng ta muốn

Trong trường hợp quy tắc xác thực `min`, để nhận được giá trị tối thiểu bắt buộc, chúng ta có thể sử dụng tên quy tắc làm trình giữ chỗ `. tối thiểu

3namespace App\Http\Controllers\Api;

5use App\Http\Controllers\Controller;

7class CartItemsController extends Controller

12 'qty' => ['required', 'integer', 'min:10'],

13 'productId' => ['required', 'exists:products,id']

15 'qty.min' => 'The quantity must be at least :min.',

16 'productId.exists' => 'The product is no longer available.'

Và, tất nhiên, chúng ta có thể làm điều tương tự bằng cách sử dụng các đối tượng yêu cầu biểu mẫu. Chỉ có điều bây giờ, mảng thông báo lỗi sẽ được trả về bằng phương thức messages[] mới được thêm vào

Hôm nay, tôi sẽ cho bạn biết ví dụ về thông báo lỗi tùy chỉnh xác thực của laravel. bạn sẽ tìm hiểu trình xác nhận thông báo lỗi tùy chỉnh của laravel. Trong bài viết này, chúng tôi sẽ triển khai thông báo xác thực tùy chỉnh của laravel trong bộ điều khiển. Bài viết này đi vào chi tiết về các thông báo lỗi tùy chỉnh xác thực biểu mẫu laravel

Ở đây, tôi sẽ chỉ cho bạn ba cách để đặt thông báo lỗi tùy chỉnh với xác thực của laravel. chúng tôi sẽ thêm các thông báo lỗi tùy chỉnh trong ứng dụng laravel 6, laravel 7, laravel 8 và laravel 9. đôi khi chúng ta cần thay đổi thông báo lỗi xác thực laravel mặc định thành thông báo lỗi của chính mình

Vì vậy, hãy xem ba cách dưới đây để thay đổi thông báo lỗi xác thực trong ứng dụng laravel 7

ví dụ 1. Sử dụng tệp ngôn ngữ

ví dụ 2. Trực tiếp trong mã điều khiển

ví dụ 3. Sử dụng Yêu cầu tùy chỉnh

Hãy xem từng ví dụ một

ví dụ 1. Sử dụng tệp ngôn ngữ

Ở điểm đầu tiên, chúng tôi sẽ đặt thông báo tùy chỉnh bằng cách trực tiếp trên laravel đặt tệp mặc định. nhưng nó sẽ thay đổi trong toàn bộ dự án của bạn. Vì vậy, dưới đây tôi đã thêm mã xác thực bộ điều khiển cho mô-đun người dùng của mình như dưới đây

Bộ điều khiển người dùng. php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User;

class UserController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index[Request $request]

{

$users = User::all[];

return view['users.index', compact['users']];

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store[Request $request]

{

$request->validate[[

'name' => 'required',

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

'password' => 'required|same:confirm_password'

]];

$input = $request->all[];

$input['password'] = bcrypt[$input['password']];

User::create[$input];

return redirect[route['users.index']];

}

}

Bây giờ tôi muốn thay đổi thông báo lỗi xác thực cho trường "tên", vì vậy hãy mở "xác thực. php" và thay đổi như dưới đây

tài nguyên/lang/vi/xác thực. php

....

'custom' => [

'name' => [

'required' => 'The :attribute field can not be blank value.',

],

],

....

ví dụ 2. Trực tiếp trong mã điều khiển

Trong tùy chọn thứ hai, chúng ta có thể thay đổi trực tiếp từ phương thức điều khiển, tôi nghĩ nếu bạn muốn thực hiện nhanh thì tùy chọn này sẽ hoàn hảo

Bộ điều khiển người dùng. php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User;

class UserController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index[Request $request]

{

$users = User::all[];

return view['users.index', compact['users']];

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store[Request $request]

{

$request->validate[[

'name' => 'required',

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

'password' => 'required|same:confirm_password'

],

[ 'name.required' => 'The :attribute field can not be blank value.']];

$input = $request->all[];

$input['password'] = bcrypt[$input['password']];

User::create[$input];

return redirect[route['users.index']];

}

}

ví dụ 3. Sử dụng Yêu cầu tùy chỉnh

Trong tùy chọn thứ ba, chúng tôi phải tạo yêu cầu tùy chỉnh và sau đó bạn có thể sử dụng nó trong bộ điều khiển của mình, phương pháp này là cách tốt hơn của laravel, vì vậy có thể chạy lệnh sau để tạo yêu cầu biểu mẫu người dùng

Làm cách nào để tùy chỉnh thông báo lỗi xác thực trong laravel?

Để khắc phục điều này, chúng ta có thể tùy chỉnh các thông báo lỗi bằng cách chuyển một mảng thứ hai làm đối số, chứa các khóa được tạo bằng cách sử dụng tên của tham số, dấu chấm và sau đó là tên của . - the value will be the error message we want to display.

Làm cách nào để xác thực tùy chỉnh trong laravel?

Bắt đầu xác thực .
Xác định các tuyến đường khác nhau. .
Tạo bộ điều khiển mới. .
Mã hóa logic xác thực. .
Thuộc tính lồng nhau. .
Tạo và triển khai các yêu cầu biểu mẫu. .
Các móc sau để hình thành yêu cầu. .
Ngừng sau lần xác thực đầu tiên không thành công. .
Chuẩn bị một tuyến đường chuyển hướng

Làm cách nào để thay đổi thông báo xác thực mặc định trong laravel?

sử dụng Ứng dụng\Http\Requests\CustomRequest;. phản hồi chức năng công khai [CustomRequest $request] { $validation = Trình xác thực. make[$request->all[], [ 'reponse' => 'required', ]];

Phương pháp được sử dụng để chỉ định thông báo tùy chỉnh cho lỗi Trình xác thực trong yêu cầu biểu mẫu là gì?

Sau khi kiểm tra xem yêu cầu có vượt qua được xác thực hay không, bạn có thể sử dụng phương pháp withErrors để đưa thông báo lỗi vào phiên. Khi sử dụng phương pháp này, biến $errors sẽ tự động được chia sẻ với chế độ xem của bạn sau khi chuyển hướng, cho phép bạn dễ dàng hiển thị lại cho người dùng.

Chủ Đề