Mọi thứ về route trong laravel
Đây là bài thứ hai về laravel của mình, nếu các bạn chưa biết laravel là gì? Cài đặt nó ra sau thì hãy xem bài viết bước đầu sử dụng Laravel nhé.
Contents
1. Route là gì?
Route trong Laravel hiểu nôm na là một tuyến đường, một đường dẫn đưa đến một trang nào đó trong project của bạn, hoặc một đường dẫn thực hiện một công việc nào đó trong dự án Laravel của bạn.
Thay vì thông thường bạn sử dụng php thuần đường dẫn của bạn sẽ lấy tên trang làm đường dẫn. Ví dụ: blogcongnghe.tronghao.site/dang-nhap.php. Trong laravel không như vậy, laravel dùng route để định nghĩa đường dẫn. Ví dụ: blogcongnghe.tronghao.site/login. Bạn thấy đấy không hề có tên tệp tin trong đường dẫn.
2. Các loại route trong laravel
Laravel có nhiều loại route như: get, post, put, patch, delete, options; đây là những loại route cơ bản của laravel nó có cấu trúc như sau:
Ngoài ra còn 2 cấu trúc đặc biệt là match và any.
- Match được sử dụng khi bạn muốn sử dụng nhiều nhiều phương thức, tức là từ hai trở lên.
- Any được áp dụng cho mọi phương thức.
2 route đặc biệt trong laravel nữa là redirect và view:
- redirect dùng để chuyển đến route khác.
- còn view dùng để gọi trang giao diện ra.
Với redirect cần lưu ý là ở tham số thứ hai không sử dụng / nha.
3. Dùng route trong Laravel để gọi hàm trong Controller
Đến đây có thể các bạn khựng lại khi không hiểu Controller là gì. Mình có viết bài về Controller này các bạn xem bai viết Controller và View trong Laravel nhé.
Nếu như Class controller được nằm trong thư mục con của thư mục controller thì phải gọi cả thư mục đó nữa. Ví dụ App\Http\Controllers\Photos\AdminController thì ta gọi route như sau:
4. Sử dụng route với tham số
Đôi khi trên url chúng ta cũng cần những tham số truyền qua để lấy dữ liêu. Laravel hỗ trợ vô cùng phải gọi là tỉ mỉ un ớ, cùng xem nhé.
- Nếu có nhiều tham số thì bạn chỉ cần / tiếp là được.
- Ở route tham số có dấu ? ở cuối, điều này có nghĩa là tham số này có thể có hoặc không, khi không có tham số thì không báo lỗi, chỉ vậy thôi.
- Để ràng buộc dữ liệu truyền trên route thì mình sử dụng mệnh đề where để ràng buộc, nếu có nhiều tham số thì where sẽ như thế này
where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Với những tham số có ràng buộc giống nhau, được sử dụng nhiều trong dự án của chúng ta chẳng lẽ mỗi khi khai báo route mới chúng ta lại ràng buộc lại? Laravel không để chúng ta cực như vậy âu, Laravel có hỗ trợ file AppServiceProvider.php được lưu tại App\Providers. Việc của bạn là khai báo các ràng buộc vào function boot là ok ngay! À quên nữa còn phải khai báo sử dụng Route: use Route; nữa nha!
5. Tên của Route
Tên của route trong laravel rất hữu ích trong nhiều trường hợp, cú pháp khai báo bằng hàm name() như sau:
Khi sử dụng thì sử dụng hàm route(), kết quả trả về là url của route.
Ngoài ra còn một cách để đặt tên route đó là sử dụng từ khóa as.
//Để khai báo tên cho route, sử dụng từ khóa as : Route::get('user/profile', ['as' => 'profile', function () { // }]);
6. Những thứ hay khác của Route
- group: dùng để gom nhóm các Route giúp dễ quản lý hơn nhiều,
- middeware: dùng để ràng buộc, nó như người bảo vệ canh gác nếu có giấy phép thì được sử dụng route đó vậy,
- prefix: thêm trước route bên trong trên url để truy cập.
Như vậy, ở trên khi xài thì mình gọi như sau: http://localhost/lar6/nguoi-dung/trong lar6 là thư mục dự án của mình.
7. Fallback trong route là gì?
Fallback sẽ được gọi khi url không tồn tại, thường thì sẽ báo lỗi 404 nếu không có fallback nhưng nếu có thì sẽ gọi hàm này đấy.
8. Lấy thông tin route hiện tại đơn giản
Bạn sử dụng các lệnh sau để lấy thông tin nhé!
Kết Luận
Như vậy, mình đã hướng dẫn các bạn tất tần tật về route trong laravel như thế nào rồi, các bạn có thể tìm hiểu thêm về controller và view trong laravel như thế nào nhé.