Trong phần này mình sẽ nói về phần Routing, mình thấy nó khá quan trọng của Laravel. Các bạn có thể tham khảo phần hướng dẫn từ Doc Laravel 11.
Tóm tắt một số phần chính trước nhé:
- Định tuyến cơ bản : Một số phương thức Router
- Các tham số cho router
- Đặt tên router
- Nhóm router
- Ràng buộc
- Và còn nhiều nữa mình sẽ nói ở phần khác
- Định tuyến cơ bản
Các bạn truy cập vào thư mục: routes/web.php:

Tất cả các định tuyến trong trang web Laravel sẽ được xác định trong thư mục Router. Ở đây bạn có thể dễ dàng tìm kiếm và phân luồng các URL cho trang web của bạn.
Đối với hầu hết các ứng dụng, bạn sẽ bắt đầu bằng việc xác định các url trong routes/web.php
Trong ví dụ trên bạn có thể truy cập trang ‘welcome’ .
Một số phương thức của Router:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Hãy nhớ rằng mọi biểu mẫu HTML trỏ đến POST
, PUT
, PATCH
hoặc DELETE
url được xác định trong web
tệp php phải bao gồm trường mã thông báo CSRF. Nếu không, yêu cầu sẽ bị từ chối. Bạn có thể đọc thêm về bảo vệ CSRF trong tài liệu CSRF :
<form method=”POST” action=”/profile”>
@csrf …
/form>
Nếu bạn đang xác định tuyến đường chuyển hướng đến một URI khác, bạn có thể sử dụng Route::redirect
phương thức này. Phương pháp này cung cấp một lối tắt thuận tiện để bạn không phải xác định tuyến đường hoặc bộ điều khiển đầy đủ để thực hiện chuyển hướng đơn giản:
Route::redirect('/here', '/there');
Theo mặc định, Route::redirect
trả về 302
mã trạng thái. Bạn có thể tùy chỉnh mã trạng thái bằng tham số thứ ba tùy chọn:
Route::redirect('/here', '/there', 301);
Hoặc, bạn có thể sử dụng Route::permanentRedirect
phương thức này để trả về 301
mã trạng thái:
Route::permanentRedirect('/here', '/there');
Ngoài ra, bạn có thẻ list các router trong trang web của mình bằng các lênh artisan sau:
php artisan route:list
php artisan route:list -v
# Expand middleware groups...
php artisan route:list -vv
php artisan route:list --path=api
php artisan route:list --except-vendor
php artisan route:list --only-vendor
2. Các tham số cho Router
Đôi khi bạn sẽ cần nắm bắt các phân đoạn của URI trong tuyến đường của mình. Ví dụ: bạn có thể cần lấy ID người dùng từ URL. Bạn có thể làm như vậy bằng cách xác định các tham số tuyến đường:
Route::get('/user/{id}', function (string $id) {
return 'User '.$id;
});
Hoặc có thể có nhiều tham số tùy thích:
Route::get('/posts/{post}/comments/{comment}', function (string $postId, string $commentId) {
// ...
});
Tham số tùy chọn. Đôi khi bạn không thể xác định tham số khi truyền vào là gì vì vậy bạn chỉ cần thêm dấu ? sau tham số:
Route::get('/user/{name?}', function (?string $name = null) {
return $name;
});
Route::get('/user/{name?}', function (?string $name = 'John') {
return $name;
});
Thêm các ràng buộc cho tham số: hương thức này where
chấp nhận tên của tham số và một biểu thức chính quy xác định cách ràng buộc tham số: Nếu yêu cầu đến không khớp với các ràng buộc về mẫu tuyến đường, phản hồi HTTP 404 sẽ được trả về.
oute::get('/user/{id}/{name}', function (string $id, string $name) {
// ...
})->whereNumber('id')->whereAlpha('name');
Route::get('/user/{name}', function (string $name) {
// ...
})->whereAlphaNumeric('name');
Route::get('/user/{id}', function (string $id) {
// ...
})->whereUuid('id');
Route::get('/user/{id}', function (string $id) {
// ...
})->whereUlid('id');
Route::get('/category/{category}', function (string $category) {
// ...
})->whereIn('category', ['movie', 'song', 'painting']);
Route::get('/category/{category}', function (string $category) {
// ...
})->whereIn('category', CategoryEnum::cases());
Phần này hơi dài rồi. Các bạn theo dỏi phần tiếp theo nhé!