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
- C Cách tích hợp ChatGPT vào Google Search siêu dễ
- V VoiceGPT là gì? Giới thiệu tính năng và cách cài đặt sử dụng Voice GPT
- G GPT-4o Mini – Thông minh hơn và tiết kiệm hơn?
- C ChatGPT-4o là gì? Điểm mới của ChatGPT-4o vs ChatGPT-4
- C Chat GPT 4.0 là gì? Có gì vượt trội so với Chat GPT phiên bản cũ?
- C Cách tự học code web, tìm kiếm công việc dễ dàng và hạnh phúc mỗi ngày
- G Giới thiệu 15 website học và luyện hack hợp pháp
- T Tầm quan trọng của các chương trình đào tạo sau đại học trong kỷ nguyên 4.0
- i iOS 17.5 Beta 1 vừa được phát hành, những thay đổi nào đáng chú ý?
- i iOS 18 khi nào ra mắt? iOS 18 sẽ không hỗ trợ máy nào?