Làm cách nào để hiển thị thông báo lỗi trong Laravel?

Đô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, 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

Thông báo phản hồi xác thực là một bổ sung vô giá cho bất kỳ ứng dụng kiểu CRUD nào. Nếu ứng dụng của bạn cho phép người dùng tạo các bản ghi được lưu trữ trong cơ sở dữ liệu của bạn, thì tất nhiên bạn sẽ muốn xác thực chúng trước khi lưu vào cơ sở dữ liệu. Laravel đi kèm với các phương thức để xử lý việc này và nó đi kèm với cú pháp Laravel blade sẽ hiển thị bất kỳ lỗi xác thực nào cho người dùng

Có hai phần để đảm bảo rằng kiểm tra xác thực được thực hiện và báo cáo trong chế độ xem, hãy thực hiện theo các bước sau để thêm lỗi xác thực vào chế độ xem của bạn

Bước 1

Đảm bảo kiểm tra xác thực phù hợp đang được thực hiện đối với dữ liệu yêu cầu đã gửi trong bộ điều khiển

Trong chức năng tạo của bộ điều khiển này, dữ liệu cho một sản phẩm được yêu cầu, tên string và trọng lượng double

PHP

public function store[Request $request]
    {
        
        $product = new Product[[
            "name" => $request->get['name'],
            "weight" => $request->get['weight']
        ]];
        
        $product->save[];

        return view['products.index'];

    }

Như bạn có thể thấy, hàm điều khiển xử lý dữ liệu được gửi và lưu vào cơ sở dữ liệu, nhưng không có kiểm tra nào được thực hiện. Chúng ta có thể điều chỉnh bộ điều khiển này để xác thực các đầu vào như vậy –

PHP

public function store[Request $request]
    {
        //**** Validate the inputs here
        $request->validate[[
            'name' => 'required',
            'weight' => 'required',
        ]];
        //****
        
        $product = new Product[[
            "name" => $request->get['name'],
            "weight" => $request->get['weight']
        ]];
        
        $product->save[];

        return view['products.index'];

    }

Bây giờ bộ điều khiển sử dụng

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.'

0 để kiểm tra các quy tắc đã chỉ định đối với dữ liệu được gửi trong yêu cầu. Nếu tất cả đều ổn, nó sẽ tiếp tục và tạo một bản ghi Sản phẩm mới, nếu không, nó sẽ thoát, chuyển hướng trở lại chế độ xem tạo trong

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.'

1

Bước 2

Bây giờ bộ điều khiển đang xác thực yêu cầu, tất cả những gì bạn cần là thêm mã sau vào tệp xem của mình, tôi muốn đảm bảo rằng mã này ở trên biểu mẫu, nhưng điều đó hoàn toàn phụ thuộc vào bạn

PHP

@if [$errors->any[]]
    
    @foreach [$errors->all[] as $error]
  • {{ $error }}
  • @endforeach
@endif

Bây giờ nếu bạn tiếp tục và gửi biểu mẫu của mình mà không có các trường bắt buộc trong quy tắc xác thực của bộ điều khiển, bạn sẽ thấy một cái gì đó giống như sau –

Và thế là xong, hãy đảm bảo rằng cả phương thức xác thực được thiết lập trong bộ điều khiển của bạn và vòng lặp lỗi được thêm vào chế độ xem [hoặc tệp bố cục] của bạn để có chức năng này trên toàn trang web

Làm cách nào để hiển thị thông báo lỗi trong Laravel?

Trong một lệnh @error, bạn có thể lặp lại biến $message để hiển thị thông báo lỗi. .

Chủ Đề