Route trong Laravel (Phần 1)

Tram Ho

1. Cấu trúc thư mục ‘routes’ trong Laravel

Tất cả các tuyển đường đi truy cập vào trang web của chúng ta đều được định nghĩa trong thư mục routes .Các file trong thư mục này được tải tự động bởi Laravel.

  • File routes/web.php định nghĩa các tuyến đường dùng cho giao diện web. Những tuyến đường này được đăng gán cho nhóm web middleware, các nhóm này cung cấp các đặc điểm như trạng thái session và bảo vệ CSRF.
  • File routes/api.php định nghĩa những tuyến đường tĩnh(bên phía Server không có trạng thái của Client giữa các requests) và được gán cho nhóm api middleware.
  • FIle channels.php là nơi bạn có thể đăng ký tất cả các kênh event broadcasting hỗ trợ ứng dụng của bạn (nâng cao).
  • File console.php bạn có thể định nghĩa các lệnh console đơn giản thông qua Closure trong file này

Trong hầu hết các ứng dụng, bạn sẽ bắt đầu với việc định nghĩa các route trong file web.php ,ví dụ như sau:

Điều này có nghĩa là khi bạn bắt đầu vào 1 trang web, hàm index() trong ClientController sẽ được gọi và bạn sẽ xử lý dữ liệu load trang trong hàm này.

Hàm name(‘home’) sẽ gán tên cho route này ,khi gọi route naỳ chúng ta chỉ cần nhớ tên và đặc biệt khi thay đổi đường dẫn route ta chỉ cần thay đổi 1 lần trong route.

Ví dụ với route name:

2. Các phương thức Laravel Route hỗ trợ:

Đôi khi bạn cần đăng ký một route mà phản hôì cho nhiều phương thức của route, lúc đấy ta sử dụng thương thức match() . Hoặc bạn có thể gộp lại phản hồi chung cho bất kỳ phương thức nào cho 1 route bằng cách sử dụng any :

Lưu ý: Tất các các HTML forms trỏ đến các route sử dụng POST, PUT, PATCH, DELETE được định nghĩa trong route/web.php đều phải được đính kèm trường CSRF token. Nếu không request sẽ bị từ chối và trả về trang 404.

Bạn có thể đọc thêm về CSRF Protection tại đây

3. Các route chuyển hướng

Nếu bạn đang xác định một tuyến đường chuyển hướng đến một URI khác, bạn có thể sử dụng Route::redirect() :

4. View routes

Nếu route của bạn chỉ cần trả về 1 view, bạn nên sử dụng Route::view() :

5. Tham số trong Route

– Tham số bắt buộc :

Tham số bắt buộc trong route phải được đặt trong đấu ngoặc kép ‘{ parameter }’, bạn có thể có bao nhiêu tham số tùy theo yêu cầu sử dụng :

Khi nhận tham số xử lý trong route , các tham số được lấy lần lượt the thứ tự và tên có thể không giống tên truyền vào trong route .Trong ví dụ trên thì biến post tương ứng với postId và comment tương ứng với commentId

– Tham số tùy chọn

Biến tùy chọn được định nghĩa như sau:

6. Ràng buộc về biểu thức chính quy

Bạn có thể ràng buộc các tham số truyền vào bằng cách dùng hàm where() và kết hợp với biểu thức chính quy để chặn các request không mong muốn. Nhưng thường mình sẽ viết 1 FormRequest để xử lý các tham số trong request .Cái này tùy mục đích các bạn sử dụng nhé :

7. Nhóm middleware

Laravel có cung cấp cho chúng ta phương thức group() để nhóm lại các tuyến đương có thể đi chung qua các middleware, có cùng không gian tên (namespace) , tên miền phụ , tiền tố route, có cùng 1 đoạn tên trong route name . Điều này làm cho code chúng ta dễ đọc và dễ quản lý hơn.

– Các route đi qua chung middleware

– Các route có chung không gian tên (namespace)

Khi sử dụng Route này, các Controller hoặc tài nguyên trong cùng 1 namespace có thể gọi trực tiếp đến tên của từng thành phần mà không cần khai báo đến đường dẫn đầy đủ của nó. Nếu chưa biết, bạn có thể tìm hiểu thêm về namespace để hiểu rõ hơn.

– Các route có cùng tên miều phụ

– Các route có chung tiền tố đường dẫn

– Các routes có chung tiền tố khi đặt tên với hàm route name()

Trên đây mình đã chia sẻ cho các bạn về Routing trong Laravel phần 1 , hẹn gặp lại mọi người trong các bài viết tiếp theo.

Tham khảo :https://laravel.com/docs/7.x/routing

Chia sẻ bài viết ngay