1. Định nghĩa controller (Defining controller)

1. Định nghĩa controller (Defining controller)

Để tạo một controller, ta sử dụng lệnh Artisan sau:

php artisan make:controller HomeController

Các bạn mở file controller vừa tạo lên và quan sát nội dung của nó.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    //
}

Mỗi controller có thể extends với class App\Http\Controllers\Controller. Base controller này cung cấp rất nhiều method thuận tiện, chẳng hạn method middleware, cho phép ta đăng ký middleware cho cả controller hoặc từng method.

Lưu ý: Controller không bắt buộc phải extends base controller App\Http\Controllers\Controller. Tuy nhiên bạn sẽ không thể truy cập các phương thức tiện ích như middleware, validationdispatch tại controller đó. Trong tập này ta chỉ tìm hiểu về method middleware, các method còn lại sẽ được đề cập ở những tập sau.

Chúng ta hãy thử định nghĩa một method trong HomeController xem sao:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function show()
    {
        return 'Home page';
    }
}

Sau đó ta chỉ cần đăng ký controller ngay tại route như thế này:

Route::get('/', 'HomeController@show');

Ở tham số thứ hai của Route::get, thay vì truyền một Closure như trước kia, ta sẽ truyền một chuỗi có cú pháp Namespace\NameController@method. Khi request có URI / với phương thức GET thì method show trong HomeController class sẽ được thực thi.

Bạn có thể truyền dữ liệu cho method controller thông qua tham số trên URI. Chẳng hạn mình có thêm route:

Route::get('/page/{page?}', 'HomeController@page');

Vậy làm thế nào để phương thức page trong HomeController có thể nhận dữ liệu của tham số pagetrong URI? Các bạn cần đăng ký thêm method page tại HomeController như sau:

public function page($page = 1)
{
    return "Page $page";
}

Chúng ta cũng sẽ khai báo biến nhận dữ liệu như khi sử dụng Closure object, không khác một chút gì cả, bao gồm các tính chất như thứ tự biến dữ liệu, tham số tùy chọn...

Last updated