Các route cơ bản nhất của Laravel chấp nhận URI và
2, cung cấp một phương pháp xác định route rất đơn giản và rõ ràng
Route::get['foo', function [] {
Tệp định tuyến mặc định
Tất cả các route của Laravel được xác định trong các tệp route của bạn, nằm trong thư mục
3. Các tệp này được tự động tải bởi khung. Tệp
4 xác định các tuyến dành cho giao diện web của bạn. Các tuyến này được chỉ định nhóm phần mềm trung gian
5, cung cấp các tính năng như trạng thái phiên và bảo vệ CSRF. Các tuyến trong
6 là không trạng thái và được chỉ định nhóm phần mềm trung gian
7
Đối với hầu hết các ứng dụng, bạn sẽ bắt đầu bằng cách xác định các tuyến đường trong tệp
4 của mình. Có thể truy cập các tuyến đường được xác định trong
4 bằng cách nhập URL của tuyến đường đã xác định vào trình duyệt của bạn. Ví dụ: bạn có thể truy cập tuyến đường sau bằng cách điều hướng đến
Route::redirect['/here', '/there', 301];
0 trong trình duyệt của mìnhCác tuyến đường được xác định trong tệp
6 được lồng trong một nhóm tuyến đường bởi
Route::redirect['/here', '/there', 301];
2. Trong nhóm này, tiền tố URI Route::redirect['/here', '/there', 301];
3 được tự động áp dụng, do đó bạn không cần phải áp dụng nó theo cách thủ công cho mọi tuyến đường trong tệp. Bạn có thể sửa đổi tiền tố và các tùy chọn nhóm tuyến đường khác bằng cách sửa đổi lớp Route::redirect['/here', '/there', 301];
2 của mìnhCác phương thức bộ định tuyến khả dụng
Bộ định tuyến cho phép bạn đăng ký các tuyến đáp ứng với bất kỳ động từ HTTP nào
Route::get['foo', function [] {
4Đôi khi bạn có thể cần phải đăng ký một tuyến đường đáp ứng nhiều động từ HTTP. Bạn có thể làm như vậy bằng cách sử dụng phương pháp
Route::redirect['/here', '/there', 301];
5. Hoặc, bạn thậm chí có thể đăng ký một tuyến đáp ứng tất cả các động từ HTTP bằng cách sử dụng phương thức Route::redirect['/here', '/there', 301];
6Route::get['foo', function [] {
7Bảo vệ CSRF
Bất kỳ biểu mẫu HTML nào trỏ đến các tuyến đường
Route::redirect['/here', '/there', 301];
7, Route::redirect['/here', '/there', 301];
8 hoặc Route::redirect['/here', '/there', 301];
9 được xác định trong tệp tuyến đường 5 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
Chuyển hướng tuyến đường
Nếu bạn đang xác định một tuyến chuyển hướng đến một URI khác, bạn có thể sử dụng phương thức
31. 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', 301];
Xem các tuyến đường
Nếu tuyến đường của bạn chỉ cần trả về một chế độ xem, bạn có thể sử dụng phương pháp
32. Giống như phương pháp
33, phương pháp này cung cấp một phím tắt đơn giản để bạn không phải xác định một tuyến đường hoặc bộ điều khiển đầy đủ. Phương thức
34 chấp nhận URI làm đối số đầu tiên và tên chế độ xem làm đối số thứ hai. Ngoài ra, bạn có thể cung cấp một mảng dữ liệu để chuyển đến dạng xem dưới dạng đối số thứ ba tùy chọn
3
Tham số tuyến đường
Thông số bắt buộc
Tất nhiên, đô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 của 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
9
Bạn có thể xác định bao nhiêu tham số tuyến đường theo yêu cầu của tuyến đường của bạn
0
Các tham số định tuyến luôn được đặt trong dấu ngoặc nhọn
35 và phải bao gồm các ký tự chữ cái và không được chứa ký tự
36. Thay vì sử dụng ký tự
36, hãy sử dụng dấu gạch dưới [
38]. Các tham số tuyến đường được đưa vào các cuộc gọi lại/bộ điều khiển tuyến đường dựa trên thứ tự của chúng - tên của các đối số cuộc gọi lại/bộ điều khiển không quan trọng
Thông số tùy chọn
Đôi khi, bạn có thể cần chỉ định tham số tuyến đường, nhưng không bắt buộc sự hiện diện của tham số tuyến đường đó. Bạn có thể làm như vậy bằng cách đánh dấu
39 sau tên tham số. Đảm bảo cung cấp giá trị mặc định cho biến tương ứng của tuyến đường
6
Ràng buộc biểu thức chính quy
Bạn có thể hạn chế định dạng của các tham số tuyến đường của mình bằng cách sử dụng phương thức
90 trên một thể hiện tuyến đường. Phương thức
90 chấp nhận tên của tham số và biểu thức chính quy xác định cách hạn chế tham số
9
Ràng buộc toàn cầu
Nếu bạn muốn một tham số định tuyến luôn bị ràng buộc bởi một biểu thức chính quy nhất định, bạn có thể sử dụng phương thức
92. Bạn nên xác định các mẫu này trong phương pháp
93 của
Route::redirect['/here', '/there', 301];
2Route::get['foo', function [] {
40Khi mẫu đã được xác định, nó sẽ tự động được áp dụng cho tất cả các tuyến sử dụng tên tham số đó
Route::get['foo', function [] {
41Tuyến đường được đặt tên
Các tuyến được đặt tên cho phép tạo URL hoặc chuyển hướng thuận tiện cho các tuyến cụ thể. Bạn có thể chỉ định tên cho một tuyến đường bằng cách xâu chuỗi phương thức
95 vào định nghĩa tuyến đường
Route::get['foo', function [] {
42Bạn cũng có thể chỉ định tên tuyến đường cho các hành động của bộ điều khiển
Tạo URL cho các tuyến đường được đặt tên
Sau khi bạn đã gán tên cho một tuyến nhất định, bạn có thể sử dụng tên của tuyến khi tạo URL hoặc chuyển hướng thông qua hàm toàn cầu
96
Route::get['foo', function [] {
43Nếu tuyến đường được đặt tên xác định tham số, bạn có thể chuyển tham số làm đối số thứ hai cho hàm
96. Các tham số đã cho sẽ tự động được chèn vào URL ở đúng vị trí của chúng
Route::get['foo', function [] {
44Kiểm tra tuyến đường hiện tại
Nếu bạn muốn xác định xem yêu cầu hiện tại có được định tuyến đến một tuyến đã đặt tên hay không, bạn có thể sử dụng phương thức
98 trên một thể hiện Tuyến. Ví dụ: bạn có thể kiểm tra tên tuyến đường hiện tại từ phần mềm trung gian tuyến đường
Route::get['foo', function [] {
45Nhóm tuyến đường
Các nhóm tuyến đường cho phép bạn chia sẻ các thuộc tính tuyến đường, chẳng hạn như phần mềm trung gian hoặc không gian tên, trên một số lượng lớn các tuyến đường mà không cần xác định các thuộc tính đó trên từng tuyến đường riêng lẻ. Các thuộc tính dùng chung được chỉ định ở định dạng mảng làm tham số đầu tiên cho phương thức
99
Phần mềm trung gian
Để gán phần mềm trung gian cho tất cả các tuyến trong một nhóm, bạn có thể sử dụng phương pháp
00 trước khi xác định nhóm. Phần mềm trung gian được thực thi theo thứ tự chúng được liệt kê trong mảng
Route::get['foo', function [] {
46không gian tên
Một trường hợp sử dụng phổ biến khác cho các nhóm tuyến đường là gán cùng một không gian tên PHP cho một nhóm bộ điều khiển bằng phương thức
01
Route::get['foo', function [] {
47Hãy nhớ rằng, theo mặc định,
Route::redirect['/here', '/there', 301];
2 bao gồm các tệp tuyến đường của bạn trong một nhóm không gian tên, cho phép bạn đăng ký các tuyến điều khiển mà không chỉ định tiền tố không gian tên 03 đầy đủ. Vì vậy, bạn chỉ cần chỉ định phần không gian tên xuất hiện sau không gian tên cơ sở
03
Định tuyến tên miền phụ
Các nhóm định tuyến cũng có thể được sử dụng để xử lý định tuyến tên miền phụ. Các miền phụ có thể được chỉ định tham số tuyến đường giống như URI tuyến đường, cho phép bạn nắm bắt một phần miền phụ để sử dụng trong tuyến đường hoặc bộ điều khiển của mình. Tên miền phụ có thể được chỉ định bằng cách gọi phương thức
05 trước khi xác định nhóm
Route::get['foo', function [] {
48Tiền tố tuyến đường
Phương pháp
06 có thể được sử dụng để thêm tiền tố vào mỗi tuyến đường trong nhóm với một URI nhất định. Ví dụ: bạn có thể muốn thêm tiền tố vào tất cả các URI tuyến đường trong nhóm bằng
07
Route::get['foo', function [] {
49Tiền tố tên tuyến đường
Phương thức
95 có thể được sử dụng để thêm tiền tố vào mỗi tên tuyến đường trong nhóm bằng một chuỗi đã cho. Ví dụ: bạn có thể muốn đặt tiền tố cho tất cả các tên của tuyến đường được nhóm bằng
07. Chuỗi đã cho được thêm tiền tố vào tên tuyến đường chính xác như được chỉ định, vì vậy chúng tôi sẽ đảm bảo cung cấp ký tự
60 ở cuối trong tiền tố
Route::get['foo', function [] {
70Ràng buộc mô hình tuyến đường
Khi thêm ID mô hình vào hành động của tuyến đường hoặc bộ điều khiển, bạn sẽ thường truy vấn để truy xuất mô hình tương ứng với ID đó. Liên kết mô hình định tuyến Laravel cung cấp một cách thuận tiện để tự động đưa các phiên bản mô hình trực tiếp vào các tuyến đường của bạn. Ví dụ: thay vì thêm ID của người dùng, bạn có thể thêm toàn bộ phiên bản mô hình
61 khớp với ID đã cho
Ràng buộc ngầm định
Laravel tự động giải quyết các mô hình Eloquent được xác định trong các route hoặc hành động của bộ điều khiển có tên biến được gợi ý kiểu khớp với tên đoạn route. Ví dụ
Route::get['foo', function [] {
71Vì biến
62 được gợi ý kiểu là mô hình
63 Eloquent và tên biến khớp với phân đoạn URI
64, nên Laravel sẽ tự động thêm đối tượng mô hình có ID khớp với giá trị tương ứng từ URI yêu cầu. Nếu không tìm thấy phiên bản mô hình phù hợp trong cơ sở dữ liệu, phản hồi HTTP 404 sẽ tự động được tạo
Tùy chỉnh tên khóa
Nếu bạn muốn liên kết mô hình sử dụng cột cơ sở dữ liệu khác với
65 khi truy xuất một lớp mô hình nhất định, bạn có thể ghi đè phương thức
66 trên mô hình Eloquent
Route::get['foo', function [] {
72Ràng buộc rõ ràng
Để đăng ký một ràng buộc rõ ràng, hãy sử dụng phương thức
67 của bộ định tuyến để chỉ định lớp cho một tham số nhất định. Bạn nên xác định các ràng buộc mô hình rõ ràng của mình trong phương thức
93 của lớp
Route::redirect['/here', '/there', 301];
2Route::get['foo', function [] {
73Tiếp theo, xác định tuyến đường có chứa tham số
64
Route::get['foo', function [] {
74Vì chúng tôi đã ràng buộc tất cả các tham số
64 với mô hình
63, nên một phiên bản
61 sẽ được đưa vào tuyến đường. Vì vậy, ví dụ, một yêu cầu tới
94 sẽ đưa thể hiện
61 từ cơ sở dữ liệu có ID là
96
Nếu không tìm thấy phiên bản mô hình phù hợp trong cơ sở dữ liệu, phản hồi HTTP 404 sẽ được tạo tự động
Tùy chỉnh logic độ phân giải
Nếu bạn muốn sử dụng logic giải quyết của riêng mình, bạn có thể sử dụng phương pháp
97.
2 mà bạn chuyển đến phương thức
99 sẽ nhận giá trị của phân đoạn URI và sẽ trả về thể hiện của lớp sẽ được đưa vào tuyến đường
Route::get['foo', function [] {
75Tuyến dự phòng
Sử dụng phương pháp
Route::get['foo', function [] {
400, bạn có thể xác định một tuyến đường sẽ được thực hiện khi không có tuyến đường nào khác phù hợp với yêu cầu đến. Thông thường, các yêu cầu chưa được xử lý sẽ tự động hiển thị trang "404" thông qua trình xử lý ngoại lệ của ứng dụng của bạn. Tuy nhiên, vì bạn có thể xác định tuyến đường Route::get['foo', function [] {
401 trong tệp 4 của mình, tất cả phần mềm trung gian trong nhóm phần mềm trung gian
5 sẽ áp dụng cho tuyến đường. Tất nhiên, bạn có thể thêm phần mềm trung gian bổ sung vào tuyến đường này nếu cần
Route::get['foo', function [] {
76Giới hạn tỷ lệ
Laravel bao gồm một phần mềm trung gian để xếp hạng quyền truy cập giới hạn vào các tuyến trong ứng dụng của bạn. Để bắt đầu, hãy gán phần mềm trung gian
Route::get['foo', function [] {
404 cho một tuyến hoặc một nhóm tuyến. Phần mềm trung gian Route::get['foo', function [] {
404 chấp nhận hai tham số xác định số lượng yêu cầu tối đa có thể được thực hiện trong một số phút nhất định. Ví dụ: hãy xác định rằng người dùng được xác thực có thể truy cập nhóm tuyến sau 60 lần mỗi phútRoute::get['foo', function [] {
77Giới hạn tốc độ động
Bạn có thể chỉ định tối đa yêu cầu động dựa trên một thuộc tính của mô hình
61 đã xác thực. Ví dụ: nếu mô hình
61 của bạn chứa thuộc tính
Route::get['foo', function [] {
408, bạn có thể chuyển tên của thuộc tính cho phần mềm trung gian Route::get['foo', function [] {
404 để nó được sử dụng để tính số lượng yêu cầu tối đaRoute::get['foo', function [] {
78Giả mạo phương thức biểu mẫu
Biểu mẫu HTML không hỗ trợ các hành động
Route::redirect['/here', '/there', 301];
8, Route::get['foo', function [] {
411 hoặc Route::redirect['/here', '/there', 301];
9. Vì vậy, khi xác định các tuyến đường Route::redirect['/here', '/there', 301];
8, Route::get['foo', function [] {
411 hoặc Route::redirect['/here', '/there', 301];
9 được gọi từ biểu mẫu HTML, bạn sẽ cần thêm trường Route::get['foo', function [] {
416 ẩn vào biểu mẫu. Giá trị được gửi với trường Route::get['foo', function [] {
416 sẽ được sử dụng làm phương thức yêu cầu HTTPRoute::get['foo', function [] {
79Bạn có thể sử dụng chỉ thị
Route::get['foo', function [] {
418 Blade để tạo đầu vào Route::get['foo', function [] {
4160
Truy cập tuyến đường hiện tại
Bạn có thể sử dụng các phương thức
Route::get['foo', function [] {
420, Route::get['foo', function [] {
421 và Route::get['foo', function [] {
422 trên mặt tiền Route::get['foo', function [] {
423 để truy cập thông tin về tuyến đường xử lý yêu cầu đến1
Tham khảo tài liệu API cho cả lớp cơ bản của Route facade và Route instance để xem xét tất cả các phương pháp có thể truy cập