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

Là một nhà phát triển web Laravel, tôi rất biết ơn hệ thống Xác thực của nó, hệ thống này chắc chắn cung cấp một bộ quy tắc tuyệt vời, trong các trường hợp thông thường là đủ để xác thực tất cả các loại dữ liệu

Điều tốt về khung không chỉ là nó cung cấp một loạt các tính năng tích hợp mà còn cho phép bạn mở rộng chức năng của nó và xây dựng bộ quy tắc của riêng bạn, mà bạn có thể sử dụng nó trong nhiều dự án

Trong bài viết này, chúng ta sẽ khám phá cách tạo Quy tắc xác thực tùy chỉnh

Mục tiêu là để xác thực biểu mẫu đó với các quy tắc sau

  • Tên. yêu cầu
  • started_at. yêu cầu và ngày
  • kết thúc tại. không bắt buộc, nhưng nếu điền thì phải là ngày và sau started_at

Làm cách nào để tạo quy tắc xác thực tùy chỉnh trong laravel?
Bây giờ, hãy tạo quy tắc xác thực mà bạn chỉ có thể nhập năm Thế vận hội Olympic
  • Trò chơi bắt đầu vào năm 1896
  • Năm không thể lớn hơn năm hiện tại
  • Số phải chia hết cho 4
Hãy chạy một lệnh.
php artisan make:rule OlympicYear
Laravel tạo một tệp ứng dụng/Quy tắc/OlympicYear. php.
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class OlympicYear implements Rule
{

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}
Như tôi đã nói, nó tương tự như các lớp Yêu cầu xác thực. Chúng tôi điền vào các phương pháp. pass() sẽ trả về true/false tùy thuộc vào điều kiện $value, đây là trường hợp của chúng tôi.
public function passes($attribute, $value)
{
    return $value >= 1896 && $value <= date('Y') && $value % 4 == 0;
}
Tiếp theo, chúng tôi điền vào thông báo lỗi này.
public function message()
{
    return ':attribute should be a year of Olympic Games';
}
Cuối cùng, chúng ta sử dụng lớp này như thế nào? .
public function store(Request $request)
{
    $this->validate($request, ['year' => new OlympicYear]);
}
Hãy chú ý đến cú pháp, tham số thứ hai phải là một mảng và sau đó chúng ta tạo một đối tượng mới từ lớp Quy tắc của mình. Đó là nó.
Làm cách nào để tạo quy tắc xác thực tùy chỉnh trong laravel?

Làm cách nào để thêm xác thực duy nhất trong laravel?

Sử dụng quy tắc xác thực duy nhất trong Laravel Form Request .
$table->string('title')->unique();.
nghệ nhân php làm. yêu cầu StorePostRequest. .
quy tắc chức năng công cộng () { return [ 'title' => 'bắt buộc. độc nhất. bài đăng, tiêu đề' ]; .
quy tắc chức năng công cộng () { return [ 'title' => "bắt buộc. độc nhất. bài viết,tiêu đề,{$this->post->id}" ]; }

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.

Bạn nên triển khai những phương pháp nào cho trình xác thực tùy chỉnh của mình?

Việc triển khai Trình xác thực phải chứa hàm tạo, một tập hợp các phương thức truy cập cho bất kỳ thuộc tính nào trên thẻ và một phương thức xác thực sẽ ghi đè .