
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
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
Các bạn copy bài viết sang website khác, vui lòng ghi nguồn VietLaravel.com. Xin cảm ơn.
Post Comment