Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Xác thực là quá trình kiểm tra dữ liệu đến. Theo mặc định, laravel cung cấp lớp bộ điều khiển cơ sở sử dụng đặc điểm ValidatesRequests để xác thực tất cả các yêu cầu Http đến

Hãy hiểu việc xác thực thông qua một ví dụ

Chúng tôi sẽ tạo một ứng dụng trong đó chúng tôi thêm tên của học sinh

  • Đầu tiên, chúng tôi tạo dự án laravel mới trong đó chúng tôi thực hiện xác thực. Nhập lệnh được đưa ra dưới đây trong một công cụ dòng lệnh

nhà soạn nhạc tạo dự án laravel/laravel=5. 8 student_app -prefer-dist;

Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Kết quả trên cho thấy project student_app đã được tạo thành công trong thư mục xampp/htdocs

  • Sau khi tạo một dự án, trước tiên chúng ta sẽ tạo một mô hình với việc di chuyển cơ sở dữ liệu
Làm cách nào tôi có thể xác thực tên của mình trong laravel?
  • Câu lệnh trên tạo một mô hình 'Sinh viên' trong thư mục ứng dụng và 'create_students_table' trong thư mục Di chuyển. Cấu trúc của 'create_students_table. php' được đưa ra dưới đây

Đoạn mã trên tạo một bảng 'sinh viên' có bốn cột (id, name, created_at, updated_at)

Dữ liệu có sẵn trong bảng người dùng

bảng người dùng

Làm cách nào tôi có thể xác thực tên của mình trong laravel?
  • Di chuyển các thay đổi trên trong cơ sở dữ liệu bằng cách sử dụng lệnh được cung cấp bên dưới

nghệ nhân php di chuyển;

Làm cách nào tôi có thể xác thực tên của mình trong laravel?
  • Bây giờ, chúng tôi tạo một bộ điều khiển xử lý tất cả các hoạt động cơ sở dữ liệu
Làm cách nào tôi có thể xác thực tên của mình trong laravel?
  • Sau khi tạo bộ điều khiển, chúng tôi sẽ tạo tuyến đường của tất cả các phương thức của bộ điều khiển. Để tạo route, chúng ta cần viết đoạn mã sau vào web. tập tin php

Tuyến đường. resource('sinh viên','StudentController');

Làm cách nào tôi có thể xác thực tên của mình trong laravel?
  • Trong bước này, chúng ta sẽ định nghĩa phương thức index() của lớp StudentController và mã của phương thức index() được đưa ra bên dưới
  • Bây giờ, chúng tôi tạo một trang xem (chỉ mục. lưỡi. php) của ứng dụng của chúng tôi

mục lục. lưỡi. php

Đầu ra của đoạn mã trên được hiển thị bên dưới

Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Như chúng ta biết rằng URI của phương thức index() của StudentController là '/student', vì vậy khi chúng ta nhấn vào url 'localhost/student_app/public/student', nó sẽ gọi phương thức index(). Phương thức index() trả về dạng xem của chỉ mục. lưỡi. php, được hiển thị trong ảnh chụp màn hình ở trên

  • Khi chúng tôi nhập dữ liệu vào hộp văn bản được hiển thị trong ảnh chụp màn hình ở trên, nó sẽ được lưu trong cơ sở dữ liệu. Để đạt được điều này, mã của hàm store() được đưa ra dưới đây

đầu ra

Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Khi chúng tôi nhấp vào nút 'Thêm sinh viên', sau đó chúng tôi làm mới trang, đầu ra sẽ là

Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Như chúng ta có thể thấy trong ảnh chụp màn hình ở trên, 'Himanshu' được thêm vào danh sách học sinh, điều đó có nghĩa là nút 'Thêm học sinh' đang hoạt động bình thường

Đôi khi, tình huống phát sinh khi chúng tôi không nhập bất kỳ dữ liệu nào và chúng tôi nhấn nút 'Thêm sinh viên'; . Chúng tôi đã thêm mã xác thực vào phương thức store() để xác thực trường 'tên', nhưng chúng tôi không hiển thị bất kỳ thông báo lỗi nào. Để hiển thị thông báo lỗi, laravel đã cung cấp biến error hiển thị thông báo lỗi. Nó có thể được sử dụng như

Sau khi thêm dòng trên vào chỉ mục. lưỡi. php, mã của chỉ mục. lưỡi. tập tin php trông giống như

mục lục. lưỡi. php

đầu ra

Làm cách nào tôi có thể xác thực tên của mình trong laravel?

Chúng tôi cũng có thể hạn chế các ký tự trong trường hộp văn bản. Nếu chúng ta muốn nhập ít nhất 5 ký tự vào trường tên, thì chúng ta có thể sử dụng trường tối thiểu trong hàm xác thực

Lloyd là nhà phát triển web full-stack tự do chuyên về RILT stack (React, Inertia, Laravel, Tailwind). Anh ấy cũng yêu thích Jamstack và xây dựng trang web với Nuxt. js, tiếp theo. js và Gatsby

Xác thực trong Livewire sẽ giống với xác thực mẫu tiêu chuẩn trong Laravel. Tóm lại, Livewire cung cấp thuộc tính

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

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 đó

Đâ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 ___________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

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 một cách linh hoạt, bạn có thể thay thế thuộc tính

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

6 cho phương thức
        

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 hook

        

1$this->addError('key', 'message')

3 của Livewire

            

1class ContactForm extends Component

7 'name' => 'required|min:6',

8 'email' => 'required|email',

11 public function updated($propertyName)

13 $this->validateOnly($propertyName);

16 public function saveContact()

18 $validatedData = $this->validate();

20 Contact::create($validatedData);

            

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ể chỉ 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ật

Xác thực với các quy tắc bên ngoài thuộc tính 12 3 @error('name') {{ $message }} @enderror5 6 @error('email') {{ $message }} @enderror8 Save Contact 6

Nếu vì bất kỳ lý do gì 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

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

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$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

6 public function updated($propertyName)

8 $this->validateOnly($propertyName, [

14 public function saveContact()

16 $validatedData = $this->validate([

17 'name' => 'required|min:6',

18 'email' => 'required|email',

21 Contact::create($validatedData);

Tù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 một 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],

1

Nế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

6 'email' => 'required|email',

10 'email.required' => 'The Email Address cannot be empty.',

11 'email.email' => 'The Email Address format is not valid.',

14 protected $validationAttributes = [

15 'email' => 'email address'

18 public function updated($propertyName)

20 $this->validateOnly($propertyName);

23 public function saveContact()

25 $validatedData = $this->validate();

27 Contact::create($validatedData);

Bạ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ần

Nếu bạn không sử dụng thuộc tính xác thực toàn cầu

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

6, thì bạn có thể chuyển trực tiếp thông báo và thuộc tính tùy chỉnh vào
        

1$this->addError('key', 'message')

9

            

1class ContactForm extends Component

5 public function saveContact()

7 $validatedData = $this->validate(

8 ['email' => 'required|email'],

10 'email.required' => 'The :attribute cannot be empty.',

11 'email.email' => 'The :attribute format is not valid.',

13 ['email' => 'Email Address']

16 Contact::create($validatedData);

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 Livewire

Livewire 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

        

1// Quickly add a validation message to the error bag.

2$this->addError('email', 'The email field is invalid.');

4// These two methods do the same thing, they clear the error bag.

6$this->resetValidation();

8// If you only want to clear errors for one key, you can use:

9$this->resetValidation('email');

10$this->resetErrorBag('email');

12// This will give you full access to the error bag.

13$errors = $this->getErrorBag();

14// With this error bag instance, you can do things like this:

15$errors->add('some-key', 'Some message');

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
            

1class ContactForm extends Component

7 'name' => 'required|min:6',

8 'email' => 'required|email',

11 public function updated($propertyName)

13 $this->validateOnly($propertyName);

16 public function saveContact()

18 $validatedData = $this->validate();

20 Contact::create($validatedData);

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

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

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

1

Đ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ể

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

2

Livewire cũng cung cấp nghịch đảo của

            

1class ContactForm extends Component

7 'name' => 'required|min:6',

8 'email' => 'required|email',

11 public function updated($propertyName)

13 $this->validateOnly($propertyName);

16 public function saveContact()

18 $validatedData = $this->validate();

20 Contact::create($validatedData);

3 ->
            

1class ContactForm extends Component

7 'name' => 'required|min:6',

8 'email' => 'required|email',

11 public function updated($propertyName)

13 $this->validateOnly($propertyName);

16 public function saveContact()

18 $validatedData = $this->validate();

20 Contact::create($validatedData);

4

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

3

Để 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

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

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

Ví dụ

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

4

            

1

2

3 @error('name') {{ $message }} @enderror

5

6 @error('email') {{ $message }} @enderror

8 Save Contact

5

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 đề xuất

Làm cách nào để xác thực các từ chính xác trong Laravel?

Để xác thực các từ chính xác, bạn có thể sử dụng Quy tắc. trong phương thức có sẵn với laravel . Sử dụng quy tắc. trong phương thức, bất kỳ giá trị nào được cung cấp bởi quy tắc này phải được khớp nếu không nó sẽ thất bại.

Làm cách nào để áp dụng xác thực ở dạng Laravel?

Sau khi cài đặt Laravel, chúng tôi sẽ tạo một biểu mẫu mẫu để xem xác thực của chúng tôi. .
1 - Tạo biểu mẫu. Để tạo biểu mẫu trong thư mục tài nguyên/lượt xem, hãy tạo biểu mẫu tệp xem. .
2 - Tạo xác thực. Để tạo Quy tắc xác thực, hãy viết bên trong bộ điều khiển. .
3 - Tạo xác thực bằng Mặt tiền của Trình xác thực. .
4 - Tạo tệp yêu cầu để xác thực

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

Xác thực trong Laravel là gì?

Xác thực là quá trình kiểm tra dữ liệu đến . Theo mặc định, laravel cung cấp lớp bộ điều khiển cơ sở sử dụng đặc điểm ValidatesRequests để xác thực tất cả các yêu cầu Http đến.