Laravel Controllers: Cổng vào Logic Ứng dụng Web

Xin chào các bạn tương lai của Laravel! Hôm nay, chúng ta sẽ bắt đầu một chuyến hành trình đầy thú vị qua thế giới của các controller Laravel. Như một người giáo viên khoa học máy tính gần gũi, tôi ở đây để hướng dẫn các bạn qua khía cạnh quan trọng này của phát triển web. Vậy, hãy lấy đồ uống yêu thích của bạn, ngồi thoải mái, và cùng chúng ta bắt đầu nhé!

Laravel - Controllers

Controllers Là Gì?

Trước khi chúng ta bắt đầu viết mã, hãy hiểu controllers là gì. Hãy tưởng tượng bạn đang xây dựng một ngôi nhà. Nền móng là cơ sở dữ liệu của bạn, các bức tường và mái nhà là các view của bạn, nhưng phần dây điện nào làm cho mọi thứ hoạt động? Đó chính là vai trò của controllers! Chúng là bộ não của ứng dụng Laravel của bạn, xử lý các yêu cầu của người dùng và xác định cách phản hồi.

Tạo Một Controller

Hãy bắt đầu bằng cách tạo controller đầu tiên của chúng ta. Trong Laravel, chúng ta sử dụng công cụ dòng lệnh artisan để tạo controllers. Đó giống như có một cây phép màu tạo mã cho chúng ta!

php artisan make:controller MyFirstController

Lệnh này tạo một tệp mới MyFirstController.php trong thư mục app/Http/Controllers. Hãy xem bên trong có gì:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyFirstController extends Controller
{
//
}

Đây là cấu trúc cơ bản của một controller. Nó giống như một khung tranh trống, sẵn sàng để chúng ta vẽ logic ứng dụng của mình!

Thêm Phương Thức Vào Controller

Bây giờ, hãy thêm một phương thức vào controller của chúng ta:

public function hello()
{
return 'Hello, World!';
}

Phương thức đơn giản này trả về một chuỗi. Trong một ứng dụng thực tế, bạn thường sẽ trả về một view hoặc dữ liệu JSON, nhưng chúng ta đang bắt đầu từ nhỏ.

Controller Middleware

Middleware trong Laravel giống như một bảo vệ ở câu lạc bộ. Nó có thể kiểm tra xem người dùng có được phép truy cập vào một số phần của ứng dụng của bạn hay không. Hãy thêm một chút middleware vào controller của chúng ta:

public function __construct()
{
$this->middleware('auth')->only('secretPage');
}

public function secretPage()
{
return 'This is a secret page!';
}

Trong ví dụ này, chỉ những người dùng đã xác thực mới có thể truy cập phương thức secretPage. Đó giống như có một khu vực VIP trong ứng dụng của bạn!

Controllers Tài Nguyên RESTful

Controllers tài nguyên RESTful là cách tổ chức các hành động của controller theo nguyên tắc REST. Laravel làm cho việc tạo ra chúng trở nên dễ dàng:

php artisan make:controller ProductController --resource

Lệnh này tạo một controller với các phương thức cho các hành động index, create, store, show, edit, update và destroy. Đó giống như nhận được một ngôi nhà đã xây dựng sẵn thay vì tự xây từ đầu!

Dưới đây là bảng các phương thức RESTful và các动词 HTTP tương ứng:

HTTP Verb URI Action Route Name
GET /products index products.index
GET /products/create create products.create
POST /products store products.store
GET /products/{id} show products.show
GET /products/{id}/edit edit products.edit
PUT/PATCH /products/{id} update products.update
DELETE /products/{id} destroy products.destroy

Controllers Tự Động

Controllers tự động là cách để tự động ánh xạ các phương thức controller đến các route dựa trên URI. Mặc dù chúng không được sử dụng phổ biến trong các ứng dụng Laravel hiện đại, nhưng vẫn tốt khi biết chúng tồn tại:

Route::controller('users', 'UserController');

Điều này sẽ tự động ánh xạ các yêu cầu GET đến /users đến phương thức index, các yêu cầu POST đến phương thức store, và vân vân.

Tiêm注入 Constructor

Laravel có một bộ chứa phụ thuộc mạnh mẽ cho phép chúng ta type-hint các phụ thuộc vào constructor của controller. Đó giống như đặt một订单 pizza và tất cả các topping đều được thêm tự động!

use App\Repositories\UserRepository;

class UserController extends Controller
{
protected $users;

public function __construct(UserRepository $users)
{
$this->users = $users;
}
}

Bây giờ, mỗi khi Laravel tạo một instance của UserController, nó tự động tiêm một instance của UserRepository.

Tiêm注入 Phương Thức

Tương tự như tiêm vào constructor, chúng ta cũng có thể tiêm các phụ thuộc vào các phương thức controller:

use Illuminate\Http\Request;

public function store(Request $request)
{
$name = $request->input('name');
// Lưu người dùng...
}

Ở đây, Laravel tự động tiêm object Request, cho phép chúng ta dễ dàng truy cập tất cả dữ liệu đầu vào.

Kết Luận

Và thế là chúng ta đã cùng nhau hành trình qua thế giới của các controller Laravel, từ tạo ra đến tiêm注入. Nhớ rằng, controllers là trái tim của ứng dụng Laravel của bạn, điều phối giữa các models và views.

Khi chúng ta kết thúc, tôi nhớ lại một học sinh từng nói với tôi, "Học controllers giống như học lái xe. Ban đầu, nó có vẻ phức tạp, nhưng một khi bạn đã quen, bạn có thể đi đến bất kỳ đâu!" Và điều đó là đúng - việc thành thạo controllers mở ra một thế giới của khả năng trong phát triển web.

Hãy tiếp tục thực hành, tiếp tục mã hóa, và quan trọng nhất, hãy vui vẻ! Đến gặp lại các bạn lần sau, chúc các bạn may mắn với Laravel!

Credits: Image by storyset