Routing

Khi Laravel xử lý một request của người dùng, bước đầu tiên nó sẽ làm là phân tích format của URL gửi tới. Mỗi một format của URL tương ứng với một route. Route sẽ quy định luồng thực thi tiếp theo của ứng dụng. Trong Laravel, các routes được định nghĩa trong file routes.php. Ví dụ khi mở file routes.php bạn sẽ thấy đoạn mã sau:

Route::get('/', function()
{
    return View::make('hello');
});

Bây giờ bạn sửa đoạn mã trên thành như sau:

Route::get('/', function()
{
    return Response::make('hello');
});

Route trên được dùng tương ứng với các request gửi tới trang chủ của website. Trong trường hợp của chúng ta là địa chỉ URL http://laravelapp.dev/. Bạn cũng có thể bỏ qua dấu / ở phía cuối do theo mặc định thì đối với Apache 2 địa chỉ http://laravelapp.devhttp://laravelapp.dev/ là tương đương nhau.

Ở cách viết trên chúng ta gọi method tĩnh get trong đối tượng Route. Tên của method này tương ứng với phương thức gửi request lên server. Nếu bạn muốn viết một route để xử lý các POST request thì phương thức sử dụng sẽ là post. Ví dụ:

Route::post('/', function()
{
    return Response::make('hello');
});

Khi gọi method get chúng ta chuyền vào 2 đối số. Đối số đầu tiên xác định định dạng của URL, ở đây là /. Đối số thứ 2 là một hàm, hàm này gọi method make (static method) từ đối tượng Response. Method này sẽ trả về dòng chữ hello:

return Response::make('hello');

Một cách khác là bạn cũng có thể sử dụng câu lệnh sau để trả về một đoạn văn bản:

return 'hello';

Tuy nhiên sử dụng Response::make bạn có thể trả về nhiều kiểu dữ liệu khác ngoài văn bản như json hay xml. Khi truy cập địa chỉ http://laravelapp.dev trên trình duyệt bạn sẽ thấy kết quả như dưới đây:

Laravel Routing

Bây giờ bạn hãy thêm vào phía cuối cùng của file routes.php đoạn mã lệnh sau:

Route::get('/{name}', function($name)
{
    return Response::make('hello '.$name);
});

Lưu nội dung của file lại sau đó truy cập địa chỉ http://laravelapp.com/you bạn sẽ thấy trình duyệt hiển thị dòng chữ hello you.

Với route trên, chúng ta quy định format của URL dưới dạng /{name} trong đó {name} đại diện cho một chuỗi các ký tự (số và chữ số) và không bao gồm ký tự đặc biệt /. Sau đó hàm callbackđược định nghĩa với một tham số $name. Tham số này chính là giá trị của chuỗi ký tự được đặc trưng bởi {name} trong URL. Bạn không nhất thiết phải đặt tên cho tham số này trùng với tên của phần URL đặc trưng cho nó. Ví dụ đoạn mã sau là tương đương với trên:

Route::get('/{name}', function($n)
{
    return Response::make('hello '.$n);
});