Xác thực trong Livewire sẽ giống với xác thực mẫu tiêu chuẩn trong Laravel. Nói tóm lại, Livewire cung cấp thuộc tính
6 để đặt quy tắc xác thực trên cơ sở từng thành phần và phương thức
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
7 để xác thực thuộc tính của thành phần bằng cách sử dụng các quy tắc đó
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Đây là một ví dụ đơn giản về biểu mẫu trong Livewire đang được xác thực
1class ContactForm extends Component
7 'name' => 'required|min:6',
8 'email' => 'required|email',
15 // Execution doesn't reach here if validation fails.
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Nếu xác thực không thành công, một
8 tiêu chuẩn sẽ bị ném [và bị Livewire bắt] và đối tượng
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
9 tiêu chuẩn có sẵn trong chế độ xem của thành phần. Do đó, bất kỳ mã hiện có nào bạn có, có thể bao gồm Blade, để xử lý xác thực trong phần còn lại của ứng dụng của bạn cũng sẽ được áp dụng ở đây
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Bạn cũng có thể thêm các cặp khóa/tin nhắn tùy chỉnh vào túi lỗi
1$this->addError['key', 'message']
Nếu bạn cần xác định các quy tắc động, bạn có thể thay thế thuộc tính
6 cho phương thức
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
1$this->addError['key', 'message']
1 trên thành phần 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
Đôi khi, việc xác thực trường biểu mẫu khi người dùng nhập vào trường đó rất hữu ích. Livewire làm cho việc xác thực "thời gian thực" trở nên đơn giản bằng phương pháp
1$this->addError['key', 'message']
2Để xác thực trường nhập liệu sau mỗi lần cập nhật, chúng ta có thể sử dụng móc nối
1$this->addError['key', 'message']
3 của Livewire2
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
3
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Hãy chia nhỏ chính xác những gì đang xảy ra trong ví dụ này
- Người dùng nhập vào trường "tên"
- Khi người dùng nhập tên của họ, thông báo xác thực sẽ hiển thị nếu tên đó ít hơn 6 ký tự
- Người dùng có thể chuyển sang nhập email của họ và thông báo xác thực cho tên vẫn hiển thị
- Khi người dùng gửi biểu mẫu, sẽ có kiểm tra xác thực lần cuối và dữ liệu sẽ được duy trì
Nếu bạn đang thắc mắc, "tại sao tôi cần
1$this->addError['key', 'message']
4? Tôi không thể sử dụng 1$this->addError['key', 'message']
5?". Lý do là vì nếu không, mọi cập nhật cho bất kỳ trường nào sẽ xác thực TẤT CẢ các trường. Đây có thể là một trải nghiệm người dùng chói tai. Hãy tưởng tượng nếu bạn nhập một ký tự vào trường đầu tiên của biểu mẫu và đột nhiên mọi trường đơn lẻ đều có thông báo xác thực. 1$this->addError['key', 'message']
4 ngăn chặn điều đó và chỉ xác thực trường hiện tại đang được cập nhậtXác thực với các quy tắc bên ngoài thuộc tính 1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
6
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Nếu vì bất kỳ lý do gì mà bạn muốn xác thực bằng cách sử dụng các quy tắc khác với các quy tắc được xác định trong thuộc tính
6, bạn luôn có thể thực hiện việc này bằng cách chuyển trực tiếp các quy tắc vào các phương thức
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
1$this->addError['key', 'message']
9 và 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
0 1class ContactForm extends Component
7 'name' => 'required|min:6',
8 'email' => 'required|email',
15 // Execution doesn't reach here if validation fails.
1Tùy chỉnh Thông báo Lỗi & Thuộc tính
Nếu bạn muốn tùy chỉnh các thông báo xác thực được sử dụng bởi thành phần Livewire, bạn có thể làm như vậy với thuộc tính
1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
1Nếu bạn muốn giữ các thông báo xác thực mặc định của Laravel, nhưng chỉ tùy chỉnh phần
1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
2 của thông báo, bạn có thể chỉ định tên thuộc tính tùy chỉnh bằng cách sử dụng thuộc tính 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
3 1class ContactForm extends Component
7 'name' => 'required|min:6',
8 'email' => 'required|email',
15 // Execution doesn't reach here if validation fails.
5Bạn có thể thay thế thuộc tính
1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
1 cho phương thức 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
5 trên thành phầnNếu bạn không sử dụng thuộc tính xác thực toàn cầu của
6 thì bạn có thể chuyển trực tiếp các thông báo và thuộc tính tùy chỉnh vào
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
1$this->addError['key', 'message']
90
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Thao tác thông báo lỗi trực tiếp
Các phương pháp
1$this->addError['key', 'message']
9 và 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
0 sẽ xử lý hầu hết các trường hợp, nhưng đôi khi bạn có thể muốn kiểm soát trực tiếp ErrorBag bên trong của LivewireLivewire cung cấp một số phương pháp để bạn thao tác trực tiếp với ErrorBag
Từ bất kỳ đâu bên trong lớp thành phần Livewire, bạn có thể gọi các phương thức sau
3
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Phiên bản Trình xác thực truy cập
Đôi khi, bạn có thể muốn truy cập phiên bản Trình xác thực mà Livewire sử dụng trong các phương thức
1$this->addError['key', 'message']
9 và 1class ContactForm extends Component
6 protected function rules[]
9 'name' => 'required|min:6',
10 'email' => ['required', 'email', 'not_in:' . auth[]->user[]->email],
0. Điều này có thể sử dụng phương pháp 22. Bao đóng mà bạn cung cấp nhận trình xác thực được xây dựng đầy đủ làm đối số, cho phép bạn gọi bất kỳ phương thức nào của nó trước khi các quy tắc xác thực thực sự được đánh giá
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
0
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Xác nhận thử nghiệm
Livewire cung cấp các tiện ích kiểm tra hữu ích cho các tình huống xác thực. Hãy viết một bài kiểm tra đơn giản cho thành phần "Mẫu liên hệ" ban đầu
1
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Điều này rất hữu ích, nhưng chúng ta có thể tiến thêm một bước và thực sự kiểm tra các quy tắc xác thực cụ thể
2
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Livewire cũng cung cấp nghịch đảo của
23 ->
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
24
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
3
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Để biết thêm ví dụ về cú pháp được hỗ trợ cho hai phương thức này, hãy xem Tài liệu kiểm tra
Trình xác thực tùy chỉnh
Nếu bạn muốn sử dụng hệ thống xác thực của riêng mình trong Livewire, đó không phải là vấn đề. Livewire sẽ bắt
8 và cung cấp lỗi cho chế độ xem giống như sử dụng
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
7
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Ví dụ
4
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
5
1
2
3 @error['name'] {{ $message }} @enderror
5
6 @error['email'] {{ $message }} @enderror
8 Save Contact
Bạn có thể tự hỏi liệu bạn có thể sử dụng "FormRequest" của Laravel hay không. Do bản chất của Livewire, việc nối vào yêu cầu http sẽ không hợp lý. Hiện tại, chức năng này không thể thực hiện được hoặc được khuyến nghị