Bài viết được sự cho phép của tác giả Kien Dang Chung
Todo list: Khái niệm Laravel Controller
Trong bài trước chúng ta đã sơ lược về mô hình MVC, bạn cũng đã được làm quen với Route và View. Trong bài hôm nay, bạn hãy cùng tôi tìm hiểu về Controller, vậy Laravel Controller có phải là Controller trong mô hình MVC, nó được sử dụng cho mục đích gì?.
Laravel Controller
Chúng ta cùng xem định nghĩa Laravel Controller trên tài liệu chính thức của Laravel: Thay vì định nghĩa tất cả các đoạn xử lý logic nghiệp cho yêu cầu trong các file route dưới dạng Closure, chúng ta sẽ tổ chức nó vào các class Controller. Controller giúp nhóm các logic nghiệp vụ cho yêu cầu liên quan vào trong một class. Controller được lưu trong thư mục app/Http/Controllers. Như vậy chúng ta có thể thấy Laravel Controller mang dáng dấp của Controller trong MVC, tuy nhiên nó được phân lớp nhiều hơn, giúp xây dựng ứng dụng tốt hơn.
Khá rối rắm đúng không, bạn không cần quan tâm sâu bên trong, chỉ cần nhớ Controller trong Laravel là các class PHP nằm trong thư mục app/Http/Controllers, về chức năng chúng ta sẽ tìm hiểu dưới đây. Các controller này có thể tạo ra thủ công bằng cách tạo file hoặc thông qua câu lệnh artisan:
php artisan make:controller AboutController --resource
Ở đây, AboutController là tên controller, tham số –resource là tùy chọn, tham số này sẽ tạo ra controller với đầy đủ các phương thức cần thiết như index, create, store, update…
Xem thêm tuyển dụng Laravel nhiều vị trí trên TopDev
Một chú ý nữa là các file controller được tạo ra này sẽ có namespace theo đường dẫn thư mục đến controller. Ví dụ đường dẫn thư mục là app->Http->Controllers thì namespace ở đây sẽ là:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AboutController extends Controller
{
}
Nhờ đó, Composer với autoloading có thể tải chính xác class này ngay khi bạn tạo ra nó. Chúng ta sẽ tìm hiểu về cách sử dụng của Controller.
Bạn có nhớ chúng ta đã khai báo đường dẫn about trong routes/web.php trong bài trước:
Route::get('about', function () {
return view('about');
});
Tham số thứ hai của phương thức get() có thể là một function ở dạng Closure, ngoài ra nó có thể là một chuỗi bao gồm tên của controller và tên của phương thức trong controller cách nhau bởi ký tự @:
Route::get('about', 'AboutController@index');
Nếu bạn thực hiện luôn sẽ gặp lỗi “Method index doesn’t exist”, do phương thức index không tồn tại trong AboutController. Thêm phương thức index vào:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AboutController extends Controller
{
public function index()
{
return view('about');
}
}
Quay lại trang http://localhost:8000/about mọi thứ hoạt động bình thường giống như khi chúng ta sử dụng kiểu Closure.
Trong phương thức của controller chúng ta có thể thực hiện rất nhiều công việc như gọi đến một api ở ngoài, thực hiện truy vấn cơ sở dữ liệu hoặc trả về một view như ví dụ ở trên.
Diễn giải một chút về hoạt động của ứng dụng:
- Người dùng vào đường dẫn http://localhost:8000/about
- Hệ thống kiểm tra trong routes/web.php xem đã định nghĩa chưa, nếu chưa trả về lỗi 404 không tìm thấy yêu cầu, nếu đã định nghĩa thực hiện tiếp nội dung trong tham số thứ 2 có thể là function dạng Closure hoặc chuỗi tên controller và phương thức trong đó, ở đây là ‘AboutController@index’.
- AboutController sẽ được tải lên và thực thi phương thức index().
- Phương thức index() trả về View about.blade.php tạo ra ở bài trước.
- Laravel Blade sẽ xử lý nội dung file blade và trả về người dùng nội dung thuần HTML.
Tóm tắt
Như vậy, sau bài học hôm nay bạn chỉ cần nắm được:
- Laravel Controller là class PHP nằm trong app->Http->Controllers.
- Nó có thể tạo thủ công hoặc bằng công cụ artisan.
- Khi xử lý Route, có thể truyền vào một function hoặc một Controller.
- Trong phương thức của controller có thể thực hiện bất cứ công việc nào có liên quan đến việc cuối cùng là trả về View.
Code: Bài 3 – Laravel Controller
Các bước thực hiện để chạy code giống 2 bài học trước.
Bài viết gốc được đăng tải tại allaravel.com
Có thể bạn quan tâm:
- Todo List: Tạo bản ghi trong database thông qua Laravel Model
- Todo List: Liên kết Route và Model tự động trong Laravel
- Todo List: Xóa dữ liệu từ database
Xem thêm tuyển dụng CNTT hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?