Controller

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()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.