Trong Laravel, Controller là một thành phần chính của mô hình thiết kế MVC (Model-View-Controller). Nó giúp chúng ta xử lý các yêu cầu từ người dùng và đưa ra phản hồi tương ứng.
Mỗi controller trong Laravel có thể có nhiều phương thức (method), mỗi phương thức tương ứng với một hoặc nhiều hành động mà controller đó có thể thực hiện.
Ví dụ, một controller có thể có phương thức index()
để hiển thị trang chủ của ứng dụng, và có phương thức store()
để lưu trữ dữ liệu người dùng.
Một controller được tạo trong Laravel bằng câu lệnh Artisan như sau:
goCopy codephp artisan make:controller MyController
Sau khi chạy câu lệnh này, Laravel sẽ tạo ra một file MyController.php
trong thư mục app/Http/Controllers
.
Ví dụ về một controller đơn giản trong Laravel:
namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function index() { // Trả về view để hiển thị danh sách người dùng return view('users.index'); } public function store(Request $request) { // Lưu trữ dữ liệu người dùng vào cơ sở dữ liệu // Sử dụng $request để lấy dữ liệu từ người dùng gửi lên // Ví dụ: $request->input('name') // Trả về phản hồi đến người dùng sau khi lưu trữ dữ liệu thành công return redirect()->route('users.index')->with('success', 'Người dùng đã được lưu trữ thành công.'); } }
Trong ví dụ trên, UserController
là tên của controller. Controller này có hai phương thức index()
và store()
. Phương thức index()
trả về một view để hiển thị danh sách người dùng. Phương thức store()
nhận một đối tượng Request
và lưu trữ dữ liệu người dùng vào cơ sở dữ liệu. Sau khi lưu trữ dữ liệu thành công, phương thức này chuyển hướng người dùng đến trang danh sách người dùng và hiển thị thông báo thành công.
Chúng ta có thể đăng ký các tuyến đường (route) trong Laravel để gọi các phương thức của controller tương ứng với các yêu cầu từ người dùng. Ví dụ:
Route::get('/users', 'UserController@index')->name('users.index'); Route::post('/users', 'UserController@store')->name('users.store');
Các tuyến đường này đăng ký phương thức index()
cho yêu cầu GET
đến /users
, và phương thức store()
cho yêu cầu POST
đến /users
.