Laravel cung cấp một số trình trợ giúp để hỗ trợ bạn tạo URL cho ứng dụng của mình. Những người trợ giúp này chủ yếu hữu ích khi xây dựng liên kết trong các mẫu và phản hồi API của bạn hoặc khi tạo phản hồi chuyển hướng đến một phần khác trong ứng dụng của bạn
Những thứ cơ bản
Tạo URL
Trình trợ giúp
use Illuminate\Support\Facades\URL;
0 có thể được sử dụng để tạo các URL tùy ý cho ứng dụng của bạn. URL được tạo sẽ tự động sử dụng lược đồ [HTTP hoặc HTTPS] và lưu trữ từ yêu cầu hiện tại đang được ứng dụng xử lý$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
Truy cập URL hiện tại
Nếu không có đường dẫn nào được cung cấp cho trình trợ giúp
use Illuminate\Support\Facades\URL;
0, thì phiên bản use Illuminate\Support\Facades\URL;
2 được trả về, cho phép bạn truy cập thông tin về URL hiện tại// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
Mỗi phương pháp này cũng có thể được truy cập thông qua mặt tiền
use Illuminate\Support\Facades\URL;
3use Illuminate\Support\Facades\URL;
URL cho các tuyến đường được đặt tên
Trình trợ giúp
use Illuminate\Support\Facades\URL;
4 có thể được sử dụng để tạo URL cho các tuyến đường được đặt tên. Các tuyến được đặt tên cho phép bạn tạo các URL mà không cần ghép nối với URL thực được xác định trên tuyến. Do đó, nếu URL của tuyến đường thay đổi, thì không cần thực hiện thay đổi nào đối với các lệnh gọi hàm use Illuminate\Support\Facades\URL;
4 của bạn. Ví dụ: hãy tưởng tượng ứng dụng của bạn chứa một tuyến đường được xác định như sauRoute::get['/post/{post}', function [Post $post] {
Để tạo URL cho tuyến đường này, bạn có thể sử dụng trình trợ giúp
use Illuminate\Support\Facades\URL;
4 như vậy$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
1Tất nhiên, trình trợ giúp
use Illuminate\Support\Facades\URL;
4 cũng có thể được sử dụng để tạo URL cho các tuyến có nhiều tham số$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
3Bất kỳ phần tử mảng bổ sung nào không tương ứng với các tham số định nghĩa của tuyến đường sẽ được thêm vào chuỗi truy vấn của URL
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
4người mẫu hùng hồn
Bạn sẽ thường tạo các URL bằng cách sử dụng khóa định tuyến [thường là khóa chính] của các mô hình Eloquent. Vì lý do này, bạn có thể chuyển các mô hình Eloquent làm giá trị tham số. Trình trợ giúp
use Illuminate\Support\Facades\URL;
4 sẽ tự động trích xuất khóa định tuyến của mô hình$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
6URL đã ký
Laravel cho phép bạn dễ dàng tạo các URL "đã ký" cho các tuyến được đặt tên. Các URL này có hàm băm "chữ ký" được thêm vào chuỗi truy vấn cho phép Laravel xác minh rằng URL chưa bị sửa đổi kể từ khi nó được tạo. Các URL đã ký đặc biệt hữu ích cho các tuyến có thể truy cập công khai nhưng vẫn cần một lớp bảo vệ chống thao túng URL
Ví dụ: bạn có thể sử dụng các URL đã ký để triển khai liên kết "hủy đăng ký" công khai được gửi qua email cho khách hàng của bạn. Để tạo một URL đã ký cho một tuyến đường đã đặt tên, hãy sử dụng phương pháp
use Illuminate\Support\Facades\URL;
9 của mặt tiền use Illuminate\Support\Facades\URL;
3$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
9Nếu bạn muốn tạo một URL tuyến đường đã ký tạm thời sẽ hết hạn sau một khoảng thời gian nhất định, bạn có thể sử dụng phương pháp
Route::get['/post/{post}', function [Post $post] {
1. Khi Laravel xác thực một URL định tuyến đã ký tạm thời, nó sẽ đảm bảo rằng dấu thời gian hết hạn được mã hóa vào URL đã ký chưa trôi quause Illuminate\Support\Facades\URL;
1Xác thực các yêu cầu định tuyến đã ký
Để xác minh rằng một yêu cầu gửi đến có chữ ký hợp lệ, bạn nên gọi phương thức
Route::get['/post/{post}', function [Post $post] {
2 trên phiên bản Route::get['/post/{post}', function [Post $post] {
3 gửi đến// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
0Đôi khi, bạn có thể cần cho phép giao diện người dùng của ứng dụng nối thêm dữ liệu vào một URL đã ký, chẳng hạn như khi thực hiện phân trang phía máy khách. Do đó, bạn có thể chỉ định các tham số truy vấn yêu cầu sẽ bị bỏ qua khi xác thực URL đã ký bằng phương pháp
Route::get['/post/{post}', function [Post $post] {
4. Hãy nhớ rằng, việc bỏ qua các tham số cho phép mọi người sửa đổi các tham số đó theo yêu cầu// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
1Thay vì xác thực các URL đã ký bằng cách sử dụng phiên bản yêu cầu đến, bạn có thể chỉ định phần mềm trung gian
Route::get['/post/{post}', function [Post $post] {
5 cho tuyến đường. Nếu nó chưa có, bạn nên gán cho phần mềm trung gian này một khóa trong mảng Route::get['/post/{post}', function [Post $post] {
6 của nhân HTTP của bạn// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
2Khi bạn đã đăng ký phần mềm trung gian trong nhân của mình, bạn có thể đính kèm nó vào một tuyến đường. Nếu yêu cầu đến không có chữ ký hợp lệ, phần mềm trung gian sẽ tự động trả về phản hồi HTTP
Route::get['/post/{post}', function [Post $post] {
7// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
3Trả lời các tuyến đường đã ký không hợp lệ
Khi ai đó truy cập một URL đã ký đã hết hạn, họ sẽ nhận được một trang lỗi chung cho mã trạng thái HTTP
Route::get['/post/{post}', function [Post $post] {
7. Tuy nhiên, bạn có thể tùy chỉnh hành vi này bằng cách xác định bao đóng "có thể kết xuất" tùy chỉnh cho ngoại lệ Route::get['/post/{post}', function [Post $post] {
9 trong trình xử lý ngoại lệ của bạn. Việc đóng này sẽ trả về một phản hồi HTTP// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
4URL cho hành động điều khiển
Hàm
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
10 tạo URL cho hành động của bộ điều khiển đã cho// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
5Nếu phương thức của bộ điều khiển chấp nhận tham số tuyến đường, bạn có thể chuyển một mảng kết hợp gồm các tham số tuyến đường làm đối số thứ hai cho hàm
// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
6Giá trị mặc định
Đối với một số ứng dụng, bạn có thể muốn chỉ định các giá trị mặc định cho toàn bộ yêu cầu cho các tham số URL nhất định. Ví dụ: hãy tưởng tượng nhiều tuyến đường của bạn xác định tham số
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
11// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
7Thật là rườm rà khi luôn vượt qua
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
12 mỗi khi bạn gọi người trợ giúp use Illuminate\Support\Facades\URL;
4. Vì vậy, bạn có thể sử dụng phương thức $post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
14 để xác định giá trị mặc định cho tham số này sẽ luôn được áp dụng trong yêu cầu hiện tại. Bạn có thể muốn gọi phương thức này từ phần mềm trung gian định tuyến để bạn có quyền truy cập vào yêu cầu hiện tại// Get the current URL without the query string...
// Get the current URL including the query string...
// Get the full URL for the previous request...
8Khi giá trị mặc định cho tham số
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
12 đã được đặt, bạn không còn cần phải chuyển giá trị của nó khi tạo URL thông qua trình trợ giúp use Illuminate\Support\Facades\URL;
4Mặc định URL & Ưu tiên phần mềm trung gian
Đặt các giá trị mặc định của URL có thể ảnh hưởng đến việc Laravel xử lý các liên kết mô hình ẩn. Do đó, bạn nên ưu tiên phần mềm trung gian đặt mặc định URL được thực thi trước phần mềm trung gian
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
17 của chính Laravel. Bạn có thể thực hiện việc này bằng cách đảm bảo rằng phần mềm trung gian của bạn xuất hiện trước phần mềm trung gian $post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
17 trong thuộc tính $post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
19 của nhân HTTP của ứng dụng của bạnThuộc tính
$post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
19 được định nghĩa trong lớp cơ sở $post = App\Models\Post::find[1];
echo url["/posts/{$post->id}"];
// //example.com/posts/1
31. Bạn có thể sao chép định nghĩa của nó từ lớp đó và ghi đè lên nhân HTTP của ứng dụng để sửa đổi nó