Cơ bản về Routing trong Laravel

Chào các bạn, chắc hẳn mỗi khi bắt đầu tìm hiểu về Laravel thì các kiến thức cơ bản như Routing, Middleware, Controllers, Requests, Responses, Views là những khái niệm đầu tiên bạn cần phải biết để có thể sử dụng và làm quen với Laravel.

Trong bài viết này, mình sẽ giới thiệu một số các khái niệm cơ bản về Routing.

Đầu tiên, mục đích của Routing là để định tuyến đến các Controller cụ thể nào đó từ một request của người dùng. Ở trong Laravel ta có thể hoàn toàn xử lý các dữ liệu đó trong phần Router.

Vị trí mặc định của các file Route

Các định tuyến được định nghĩa trong app/routes.php.

Ở bản Laravel 5.3 thì phần Routing được tách hẳn ra một thư mục riêng là routes với 2 file là routes/web.php để định nghĩa các route cho web và routes/api.php để định nghĩa các route cho api.

Các phương thức trong Router

Các method mà Router hỗ trợ gồm có:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Ngoài ra, laravel cũng hỗ trợ ta định nghĩa một route mà có thể xử lý nhiều loại method với chung một response bằng cách sử dụng phương thức matchany.

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('foo', function () {
    //
});

Route Parameters

  • Với các parameter bắt buộc:

Ví dụ để lấy một Id của User trong URL ta sẽ định nghĩa route như sau:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

Ngoài ra ta cũng có thể có nhiều parameter ví dụ như:

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});
  • Với các parameter không bắt buộc:

Ta chỉ cần thêm ? sau tên của parameter. Ví dụ như:

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

Đặt tên cho các Route

Việc đặt tên cho các route rất có ý nghĩa và hữu dụng khi bạn muốn thay đổi URI mà không phải thay đổi quá nhiều code.

Để đặt tên một route ta sử dụng phương thức name

Route::get('user/profile', '[email protected]')->name('profile');

Một khi route đã được đặt tên, ta có thể sử dụng tên này qua phương thức route:

// Generating URLs...
$url = route('profile');

// Generating Redirects...
return redirect()->route('profile');

Vậy là mình đã giới thiệu một số các khái niệm cơ bản về Routing trong Laravel, hi vọng nó sẽ có ích cho các bạn!

Tham khảo: