Bài 4: Tìm hiểu Route trong Laravel

Bài 4: Tìm hiểu Route trong Laravel

1. Route là gì

Định tuyến (route) trong Laravel có nghĩa là chỉ dẫn từ một yêu cầu tải một trang đến một đoạn code tương ứng để xử lý (nằm trong các Controller). Các route này nằm trong file route/web.php

route laravel

2. Các phương thức trong Route

Route của Laravel hỗ trợ các phương thức sau:

Route::get($uri, $callback); 
Route::post($uri, $callback);   //Sử dụng khi tạo mới dữ liệu
Route::put($uri, $callback);   //Sử dụng khi update dữ liệu
Route::patch($uri, $callback);
Route::delete($uri, $callback);  //Sử dụng khi xóa dữ liệu
Route::options($uri, $callback);

Trong đó

  • $url: đường dẫn route và
  • $callback: là một hành động nào đó sẽ được thực hiện để trả về.

3. Truyền tham số trong Route

a. Tham số bắt buộc

Trong một ứng dụng web chúng ta thường truyền các tham số thông qua URL, ví dụ về một trang sản phẩm:

https://vietlaravel.test/san-pham/1

Trong đó 1 chính là ID của sản phẩm, chúng ta có thể viết route như sau để get về ID sản phẩm trong URL

Route::get('san-pham/{id}', function($id) {
    echo "ID của sản phẩm là : " . $id;
});

Với cách viết {id} thì id sẽ là tham số bắt buộc phải truyền trong URL, nếu không có thì Laravel sẽ trả về thông báo lỗi.

b. Tham số tùy chọn

Đối với tham số tùy chọn thì các bạn có thể truyền vào hoặc không truyền. Cách viết trong Route sẽ như sau:

Route::get('/hello-world/{year?}', function($year = null){
    if($year){
        echo 'Hello world, ' . $year;
    }else{
        echo ''Hello world';
    }
});

Như vậy đối với tham số tùy chọn chúng ta thêm dấu ? đằng sau tên tham số.

4. Tên Route

Tên routes cho phép chúng ta thuận tiện hơn khi chuyển hướng các route cụ thể. Chúng ta có thể đặt tên route bằng cách thêm name khi chúng ta định nghĩa route.

Route::get('posts', function () { 
    //code
})->name('posts');

Hoặc

Route::post('posts', '[email protected]')->name('posts.store');

5. Nhóm Route

Với những Rotue có chung hành vi thì chúng ta có thể gom vào một nhóm. Ví dụ nhóm route Admin chúng ta có một số URL như sau

http://vietlaravel.test/admin

http://vietlaravel.test/admin/post

http://vietlaravel.test/admin/category

Trong Route chúng ta sẽ viết như sau:

Route::group(['prefix' => 'admin'], function () {
    
   Route::get('/', function ()    {
        //code
    });

    Route::get('posts', function () {
        //code
    });

    Route::get('category', function () {
        //code
    });
});

6. Namespaces

Namespace trong Laravel giống như PHP namespace được chỉ định với một nhóm controller. Ví dụ khi ta đặt file controller trong thư mục Admin (app\Http\Controllers\Admin) thì ta có thể sử dụng namespace

Route::group(['namespace' => 'Admin'], function() {

    // Controllers trong namespace "App\Http\Controllers\Admin"

});

7. Prefix 

Chúng ta có thể xem lại ví dụ ở phần 5 Nhóm Route, chúng ta có thể thấy các link trong ví dụ đều bắt đầu bằng /admin, vì vậy để gom nhóm Route cho gọn thì chúng ta sử dụng Prefix

Trên đây là một số vấn đề cơ bản về Route, để tìm hiểu thêm các bạn có thể đọc tại Document của Laravel tại đây

Post Comment