Controllers trong Laravel - Xử lý logic ứng dụng và tương tác dữ liệu

Controllers trong Laravel là các lớp chịu trách nhiệm xử lý logic của ứng dụng và điều hướng dữ liệu giữa các models và views. Controllers giúp bạn tách biệt logic ứng dụng và giao diện người dùng, tạo ra một cấu trúc dự án rõ ràng và dễ bảo trì.

 

Tạo controller

Để tạo một controller trong Laravel, bạn có thể sử dụng lệnh Artisan của Laravel. Ví dụ, để tạo một controller có tên "UserController", bạn có thể chạy lệnh sau trong terminal:

php artisan make:controller UserController

Sau khi tạo controller, bạn có thể định nghĩa các phương thức xử lý trong controller. Ví dụ, trong phương thức index(), bạn có thể truy xuất dữ liệu từ model và chuyển dữ liệu đến view để hiển thị:

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();

        return view('users.index', ['users' => $users]);
    }

    // Các phương thức xử lý khác
}

Trong ví dụ trên, chúng ta sử dụng model User để truy xuất dữ liệu người dùng từ cơ sở dữ liệu. Sau đó, chúng ta chuyển dữ liệu này đến view users.index để hiển thị danh sách người dùng.

Controllers cũng hỗ trợ các phương thức như store(), update(), và delete() để xử lý thêm, sửa, và xóa dữ liệu. Bạn có thể tương tác với cơ sở dữ liệu thông qua các phương thức này.

 

Sử dụng controller trong định tuyến

Để sử dụng controller trong định tuyến, bạn có thể chỉ định tên controller và phương thức tương ứng trong file routes/web.php.

use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);

Trong ví dụ này, khi người dùng truy cập vào URL /users, Laravel sẽ gọi phương thức index() trong UserController để xử lý yêu cầu.

 

Tạo view cho màn hình danh sách người dùng

Để tạo tệp tin users.index, bạn có thể sử dụng lệnh sau:

php artisan make:view users.index

Lệnh trên sẽ tạo một tệp tin index.blade.php trong thư mục resources/views/users.

Sau khi tệp tin được tạo, bạn có thể mở tệp tin index.blade.php và thực hiện thao tác thiết kế giao diện cho trang users.index. Bạn có thể sử dụng các cú pháp Blade để tạo cấu trúc HTML và hiển thị dữ liệu từ controller.

<!-- resources/views/users/index.blade.php -->
@extends('layouts.app')

@section('content')
    <h1>Users</h1>
    <ul>
        @foreach ($users as $user)
            <li>{{ $user->name }}</li>
        @endforeach
    </ul>
@endsection

Trong ví dụ trên, chúng ta sử dụng layout app.blade.php thông qua @extends('layouts.app'). Phần nội dung của trang được định nghĩa trong @section('content') và hiển thị danh sách người dùng từ biến $users trong vòng lặp @foreach.

Để sử dụng trang users.index, bạn cần định nghĩa route tương ứng trong file routes/web.php để nó trỏ đến phương thức trong controller và trả về view users.index.

 

Tóm lại, controllers trong Laravel giúp bạn tách biệt logic ứng dụng và xử lý dữ liệu. Bằng cách sử dụng controllers, bạn có thể xây dựng ứng dụng mạnh mẽ và dễ bảo trì trong Laravel.