Rate this post

Controller Laravel là một tính năng cần thiết trong một khuôn khổ Laravel. Ban đầu, chúng tôi đang xử lý logic yêu cầu ở dạng đóng trong tệp tuyến; bây giờ, thay vì sử dụng các bao đóng trong các tệp định tuyến, chúng tôi sử dụng các lớp Controller. Controller được sử dụng để xử lý logic yêu cầu trong lớp đơn và Controller được định nghĩa trong thư mục “app / http / Controllers”. Khung công tác Laravel tuân theo kiến ​​trúc MVC (Model View Controller) trong đó các Controller hoạt động như di chuyển lưu lượng qua lại giữa mô hình và các khung nhìn.

Các bài viết liên quan:

Tệp mặc định của Controller có sẵn trong thư mục app / http / Controllers.

Trong đoạn mã trên, không gian tên được sử dụng vì nó cho phép bạn sử dụng các tên và lớp hàm giống nhau trong các phần khác nhau của cùng một ứng dụng. Ví dụ,

Giả sử chúng ta phải chạy hàm có tên, tức là RunQuery (). Chúng có sẵn trong các thư mục khác nhau functions1 và functions2, vì vậy chúng ta có thể nói rằng không gian tên tránh được xung đột giữa các tên hàm giống nhau.

‘use’ được sử dụng để nhập lớp vào tệp hiện tại.

Hãy xem cách tạo Controller thông qua Git Bash Window.

Bước 1: Mở Git Bash Window và gõ lệnh “php artistan make: Controller PostsController” vào Git Bash Window để tạo Controller.

Màn hình trên cho thấy rằng Controller có tên là PostsController đã được tạo thành công.

Bước 2: Bây giờ chuyển sang dự án của bạn và xem tệp PostsController đã được tạo hay chưa. Đường dẫn của tệp là:

C:\xampp\htdocs\laravelproject\app \ Http \ Controllers

Màn hình trên cho thấy rằng tệp PostsController đã được tạo.

Mã mặc định của tệp PostsController.php được cung cấp dưới đây:

Đoạn mã trên chứa lớp mở rộng lớp Controller, nhưng lớp này không chứa các chức năng như tạo, cập nhật hoặc xóa. Bây giờ chúng ta sẽ xem cách tạo Controller có chứa một số chức năng mặc định.

Để tạo Controller, trước tiên chúng ta sẽ xóa PostsController.php khỏi dự án, mà chúng ta đã tạo ở bước trước.

Gõ lệnh:

php Artian make: controller -resource PostController, lệnh này được sử dụng để tạo Controller.

Bây giờ, hãy chuyển sang dự án của bạn để xem liệu tệp PostController đã được tạo hay chưa. Đường dẫn của tệp sẽ là:

C: \ xampp \ htdocs \ laravelproject \ app \ Http \ Controllers

Màn hình trên cho thấy rằng tệp PostController đã được tạo thành công.

Mã mặc định của tệp PostController.php được cung cấp bên dưới:

Đoạn mã trên chứa các hàm được sử dụng để thực hiện các hoạt động khác nhau trên các tài nguyên như:

create(): Nó được sử dụng để tạo một tài nguyên mới.

store(): Nó được sử dụng để lưu trữ tài nguyên được chỉ định.

update(): Nó được sử dụng để cập nhật tài nguyên được chỉ định trong bộ nhớ.

destroy(): Nó được sử dụng để xóa các tài nguyên được chỉ định khỏi bộ nhớ.

Controller Route

Controller Route cho phép bạn tạo các lớp Controller với các phương thức được sử dụng để xử lý các yêu cầu.

Bây giờ, chúng ta sẽ hiểu các Controller Route thông qua một ví dụ.

Bước 1: Đầu tiên, chúng ta cần tạo một Controller. Chúng tôi đã tạo Controller có tên là ‘PostController’ trong chủ đề trước.

Bước 2: Mở tệp web.php và viết mã sau:

Trong đoạn mã trên, ‘/ post’ là URL mà chúng tôi muốn truy cập và PostController là tên của Controller. ‘Index’ là tên của phương thức có sẵn trong tệp PostController.php và @index chỉ ra rằng phương thức index () sẽ được nhấn khi chúng ta truy cập url ‘/ post’.

Bước 3: Thêm mã được hiển thị bên dưới:

Bước 4: Nhập URL vào trình duyệt, tức là localhost / laravelproject / public / host

Cho đến bây giờ, chúng tôi đã quan sát cách chúng tôi có thể truy cập Controller. Bây giờ, chúng ta sẽ thấy rằng làm thế nào để truyền dữ liệu đến lớp Controller.

Truyền dữ liệu đến Controller

Chúng ta hãy hiểu qua một ví dụ về cách chúng ta có thể truyền dữ liệu đến Controller:

Bước 1: Mở tệp web.php và thêm mã sau:

Đoạn mã trên chứa tham số ‘id’ trong url ‘/ post’.

Bước 2: Chỉnh sửa tệp PostController.php.

Trong trường hợp trên, chúng tôi đã cập nhật phương thức index (). Chúng tôi đã chuyển tham số ‘id’ vào phương thức index ().

Bước 3: Nhập URL ‘localhost / laravelproject / post / 100’ vào trình duyệt web, sau đó kết quả sẽ được hiển thị như sau:

Controller và Không gian tên

Khi chúng ta chỉ định lớp Controller trong phương thức Route :: get (), thì chúng ta không cần chỉ định vùng tên Controller đầy đủ. Khi RouteServiceProvider tải tất cả các tệp Route có chứa vùng tên, chúng ta chỉ cần chỉ định tên lớp đứng sau phần App / Http / Controllers của vùng tên.

Nếu lớp Controller đầy đủ là App / Http / Controllers / Post / PostController, thì chúng ta có thể đăng ký các tuyến của Controller như dưới đây:

Controller hành động đơn

Nếu chúng ta muốn sử dụng một phương thức duy nhất trong một Controller, thì chúng ta có thể sử dụng một phương thức __invoke () trên Controller.

Khi chúng ta tạo Controller bằng cách sử dụng lệnh php artist: make controller PostController thì cấu trúc của tệp PostController sẽ là:

Bây giờ, chúng ta thêm mã của hàm __invoke () trong một lớp PostController:

Cuối cùng, chúng tôi thêm mã vào tệp web.php, tệp này chịu trách nhiệm xử lý các hành động.

Đoạn mã trên truy cập vào phương thức __invoke () của một lớp PostController. Điều này kết luận rằng chúng ta không cần phải viết phương thức @invoke để truy cập các Controller hành động đơn lẻ.

Đầu ra

Khi chúng tôi nhập URL ‘localhost / laravelproject / public / post / 67’, thì kết quả đầu ra sẽ là:

Nếu không có hành động nào được chỉ định, tức là chúng ta quên viết phương thức __invoke (), thì biểu thức bất ngờ sẽ được ném ra.

Giả sử chúng ta xóa phương thức __invoke () khỏi lớp PostController thì kết quả đầu ra sẽ là:

Leave a Reply

Call now
%d bloggers like this: