Chào mọi người hôm nay chúng ta sẽ nói về route trong laravel. Trước khi nói về route chúng ta phải biết khi chúng ta gõ địa chỉ trên trình duyệt. VD : thaygiaoquocdan.vn . Thì DNS( Domain Name System ) sẽ chuyển tên mền thành địa chỉ ip và gửi yêu cầu đến server . Phía server sẽ nhận đường dẫn đó và thực thi 1 function( hành động) để render lại 1 trang html tương ứng .
Route là gì?
Đúng như tên gọi của nó. Route thực hiện chức năng định tuyến cho những đường dẫn(URL) tới 1 function() hành động giúp server đưa ra những thông tin mà người dùng cần
Ví dụ bạn có 1 trang web thể hiện danh sách “Sinh Viên” sống tại “Hà Nội”:
http://thaygiaoquocdan.vn/Sinhvien.php?address=Hanoi
Thay vì 1 đường dẫn khá rườm rà ta có thể dùng route trong laravel để giúp đường dẫn Đẹp hơn.
http://thaygiaoquocdan.vn/Sinhvien/Hanoi
Đương nhiên đường dẫn đẹp thì có lợi cho người dùng, rất hiệu quả về mặt marketing cũng như SEO.
Cấu trúc thư mục
Khi muốn tạo các Route trong Laravel thì chúng ta sẽ viết trong routes/web.php – định nghĩa các route cho web.
Còn routes/api.php – để định nghĩa route cho api.
Các phương thức laravel hỗ trợ
1
2
3
4
5
6
|
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
|
Ở đây $uri là đường dẫn , $callback là hành động (function) Cần thực hiện tương ứng với đường dẫn đó.
Nhưng ở đây chúng ta sẽ đề cập đến những phương thức thường xuyên sử dụng đó là get,post
Cơ bản về route
Bây Giờ chúng ta có thể mở routes/web.php và thử tạo 1 url là ‘xin-chao’
Bây giờ chúng ta Bật Xampp sau đó mở trình duyệt gõ http://localhost/Thaygiaoquocdan/public/xin-chao
Trong đó http://localhost/Thaygiaoquocdan/public/ đóng voi trò là tên miền mà chúng ta mua. Ở buổi cuối mình sẽ hướng dẫn các bạn upload web lên hosting
VD: tên miền của bạn là thaygiaoquocdan.vn
lúc đó thay vì gõ :http://localhost/Thaygiaoquocdan/public/xin-chao các bạn chỉ cần gõ : thaygiaoquocdan.vn/xin-chao thui nhé!
Truyền tham số trên Route
Nhiều khi chúng ta sẽ cần truyền tham số trên đường dẫn, chúng ta cũng có thể truyền trong route
Ví dụ,chúng ta cần lấy giá trị của biến ‘ten’ được truyền trên URL, chúng ta có thể viết route như sau:
Và đương nhiên nó cũng hỗ trợ truyền nhiều tham số trên route:
Đôi khi bạn muốn tạo tham số mặc định cho route .khi trên đường dẫn không truyền giá trị của biến bằng cách thêm dấu ‘?’ phía sau ‘Tên biến’ trên đường dẫn (‘Tên biến’ không có $ nhé! – Rất nhiều bạn hay bị nhầm ).
Ở đây chúng ta sẽ không truyền biến ‘namsinh’
Nhiều bạn sẽ hỏi là thế giờ tôi chỉ truyền giá trị cho biến ‘namsinh’, còn biến ‘ten’ em bỏ trống được không?
Do đường dẫn có 2 dấu // lên trình duyệt sẽ không hiểu được.
Kiểu như này:
Nhưng nếu chúng ta truyền cả 2 tham số mặt định trên route thì được nha
Ràng buộc biểu thức chính quy
Trong trường hợp bạn muốn tham số phải thoả mãn điều kiện nào đó . Mới được phép thực thi function . Bạn có thể cân nhắc đến tạo rằng buộc cho tham số truyền vào:
1
2
3
|
Route::get( ‘xin-chao/{ten}’ , function($ten){
return ‘Chào bạn : ‘ . $ten;
} )->where(‘ten’, ‘[A-Za-z]+’);
|
Trong đó ‘[A-Za-z]+’ là Regular Expression (Biểu thức chính quy) https://regexr.com/
Ý nghĩa ‘[A-Za-z]+’ : tham số truyền vào phải là chuỗi thuộc A->Z và a->z
‘[0-9]+’ : tham số truyền vào chỉ được phép chứa số tư 0->9
Còn với nhiều tham số:
Trên đây là kiến thức căn bản về route trong laravel. Chúc mọi người học tập tốt!