Tất cả các tuyến và bộ điều khiển sẽ trả về phản hồi để gửi lại cho trình duyệt của người dùng. Laravel cung cấp một số cách khác nhau để trả về phản hồi. Phản hồi cơ bản nhất là trả về một chuỗi từ tuyến đường hoặc bộ điều khiển. Khung sẽ tự động chuyển đổi chuỗi thành phản hồi HTTP đầy đủ
Route::get['/', function [] {
Ngoài việc trả về các chuỗi từ các tuyến và bộ điều khiển của bạn, bạn cũng có thể trả về các mảng. Khung sẽ tự động chuyển đổi mảng thành phản hồi JSON
Route::get['/', function [] {
Lưu ý
Bạn có biết rằng bạn cũng có thể trả về các bộ sưu tập Eloquent từ các tuyến đường hoặc bộ điều khiển của mình không? . Cung cấp cho nó một shot.
Đối tượng phản hồi
Thông thường, bạn sẽ không chỉ trả về các chuỗi hoặc mảng đơn giản từ các hành động định tuyến của mình. Thay vào đó, bạn sẽ trả lại đầy đủ
Route::get['/user/{user}', function [User $user] {
2 phiên bản hoặc chế độ xemViệc trả về một phiên bản đầy đủ của
Route::get['/user/{user}', function [User $user] {
3 cho phép bạn tùy chỉnh tiêu đề và mã trạng thái HTTP của phản hồi. Một phiên bản Route::get['/user/{user}', function [User $user] {
3 kế thừa từ lớp Route::get['/user/{user}', function [User $user] {
5, lớp này cung cấp nhiều phương thức khác nhau để xây dựng các phản hồi HTTPRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
Bộ sưu tập & Mô hình Eloquent
Bạn cũng có thể trả về các bộ sưu tập và mô hình ORM Eloquent trực tiếp từ các tuyến đường và bộ điều khiển của mình. Khi bạn làm như vậy, Laravel sẽ tự động chuyển đổi các mô hình và bộ sưu tập thành các phản hồi JSON trong khi tôn trọng các thuộc tính ẩn của mô hình
Route::get['/user/{user}', function [User $user] {
Đính kèm tiêu đề vào phản hồi
Hãy nhớ rằng hầu hết các phương thức phản hồi đều có thể kết nối được, cho phép xây dựng các trường hợp phản hồi trôi chảy. Ví dụ: bạn có thể sử dụng phương pháp
Route::get['/user/{user}', function [User $user] {
6 để thêm một loạt tiêu đề vào phản hồi trước khi gửi lại cho người dùng ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
Hoặc, bạn có thể sử dụng phương thức
Route::get['/user/{user}', function [User $user] {
7 để chỉ định một mảng tiêu đề sẽ được thêm vào phản hồiRoute::get['/', function [] {
1Phần mềm trung gian kiểm soát bộ đệm
Laravel bao gồm một phần mềm trung gian
Route::get['/user/{user}', function [User $user] {
8, có thể được sử dụng để nhanh chóng đặt tiêu đề Route::get['/user/{user}', function [User $user] {
9 cho một nhóm các tuyến đường. Các chỉ thị phải được cung cấp bằng cách sử dụng "trường hợp rắn" tương đương với chỉ thị kiểm soát bộ đệm tương ứng và phải được phân tách bằng dấu chấm phẩy. Nếu ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
0 được chỉ định trong danh sách các lệnh, hàm băm MD5 của nội dung phản hồi sẽ tự động được đặt làm mã định danh ETagRoute::get['/', function [] {
5Đính kèm cookie vào phản hồi
Bạn có thể đính kèm cookie vào phiên bản
Route::get['/user/{user}', function [User $user] {
2 đang gửi đi bằng cách sử dụng phương pháp ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
2. Bạn nên chuyển tên, giá trị và số phút cookie sẽ được coi là hợp lệ cho phương thức nàyRoute::get['/', function [] {
8Phương thức
->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
2 cũng chấp nhận thêm một vài đối số ít được sử dụng hơn. Nói chung, các đối số này có cùng mục đích và ý nghĩa như các đối số sẽ được cung cấp cho phương thức setcookie gốc của PHPRoute::get['/user/{user}', function [User $user] {
0Nếu bạn muốn đảm bảo rằng cookie được gửi cùng với phản hồi gửi đi nhưng bạn chưa có phiên bản của phản hồi đó, bạn có thể sử dụng mặt tiền
->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
4 để "xếp hàng" cookie để đính kèm vào phản hồi khi nó được gửi. Phương thức ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
5 chấp nhận các đối số cần thiết để tạo một phiên bản cookie. Những cookie này sẽ được đính kèm vào phản hồi gửi đi trước khi nó được gửi tới trình duyệtRoute::get['/user/{user}', function [User $user] {
3Tạo phiên bản cookie
Nếu bạn muốn tạo một phiên bản
->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
6 có thể được đính kèm với một phiên bản phản hồi sau đó, bạn có thể sử dụng trình trợ giúp ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
2 toàn cầu. Cookie này sẽ không được gửi lại cho máy khách trừ khi nó được đính kèm với một phiên bản phản hồiRoute::get['/', function [] {
0Hết hạn cookie sớm
Bạn có thể xóa cookie bằng cách hết hạn cookie thông qua phương pháp
->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
8 của phản hồi gửi điRoute::get['/', function [] {
1Nếu bạn chưa có phiên bản phản hồi gửi đi, bạn có thể sử dụng phương thức
Route::get['/', function [] {
10 của mặt tiền ->header['Content-Type', $type]
->header['X-Header-One', 'Header Value']
->header['X-Header-Two', 'Header Value'];
4 để hết hạn cookieCookie & Mã hóa
Theo mặc định, tất cả các cookie được tạo bởi Laravel đều được mã hóa và ký để máy khách không thể sửa đổi hoặc đọc chúng. Nếu bạn muốn tắt mã hóa cho một tập hợp con cookie do ứng dụng của mình tạo ra, bạn có thể sử dụng thuộc tính
Route::get['/', function [] {
11 của phần mềm trung gian Route::get['/', function [] {
12, nằm trong thư mục Route::get['/', function [] {
13Route::get['/', function [] {
2Chuyển hướng
Phản hồi chuyển hướng là các phiên bản của lớp
Route::get['/', function [] {
14 và chứa các tiêu đề thích hợp cần thiết để chuyển hướng người dùng đến một URL khác. Có một số cách để tạo một phiên bản Route::get['/', function [] {
15. Phương pháp đơn giản nhất là sử dụng trình trợ giúp toàn cầu Route::get['/', function [] {
16Route::get['/', function [] {
3Đôi khi, bạn có thể muốn chuyển hướng người dùng đến vị trí trước đó của họ, chẳng hạn như khi biểu mẫu đã gửi không hợp lệ. Bạn có thể làm như vậy bằng cách sử dụng hàm trợ giúp toàn cầu
Route::get['/', function [] {
17. Vì tính năng này sử dụng phiên, hãy đảm bảo tuyến đường gọi hàm Route::get['/', function [] {
17 đang sử dụng nhóm phần mềm trung gian Route::get['/', function [] {
19Route::get['/', function [] {
4Chuyển hướng đến các tuyến đường được đặt tên
Khi bạn gọi trình trợ giúp
Route::get['/', function [] {
16 mà không có tham số, một phiên bản của Route::get['/', function [] {
51 được trả về, cho phép bạn gọi bất kỳ phương thức nào trên phiên bản Route::get['/', function [] {
52. Ví dụ: để tạo một Route::get['/', function [] {
15 cho một tuyến đường đã đặt tên, bạn có thể sử dụng phương thức Route::get['/', function [] {
54Route::get['/', function [] {
5Nếu tuyến đường của bạn có tham số, bạn có thể chuyển chúng làm đối số thứ hai cho phương thức
Route::get['/', function [] {
54Route::get['/', function [] {
6Điền tham số thông qua các mô hình Eloquent
Nếu bạn đang chuyển hướng đến một tuyến đường có tham số "ID" đang được điền từ một mô hình Eloquent, thì bạn có thể chuyển chính mô hình đó. ID sẽ được trích xuất tự động
Route::get['/', function [] {
7Nếu bạn muốn tùy chỉnh giá trị được đặt trong tham số định tuyến, bạn có thể chỉ định cột trong định nghĩa tham số định tuyến [
Route::get['/', function [] {
56] hoặc bạn có thể ghi đè phương thức Route::get['/', function [] {
57 trên mô hình Eloquent của mìnhRoute::get['/', function [] {
8Chuyển hướng đến các hành động của bộ điều khiển
Bạn cũng có thể tạo chuyển hướng đến các hành động của bộ điều khiển. Để làm như vậy, hãy chuyển bộ điều khiển và tên hành động cho phương thức
Route::get['/', function [] {
58Route::get['/', function [] {
9Nếu tuyến điều khiển của bạn yêu cầu tham số, bạn có thể chuyển chúng làm đối số thứ hai cho phương thức
Route::get['/', function [] {
58Route::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
0Chuyển hướng đến miền bên ngoài
Đôi khi bạn có thể cần chuyển hướng đến một miền bên ngoài ứng dụng của mình. Bạn có thể làm như vậy bằng cách gọi phương thức
Route::get['/', function [] {
80, phương thức này tạo ra một Route::get['/', function [] {
15 mà không cần bất kỳ mã hóa, xác thực hoặc xác minh URL bổ sung nàoRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
1Chuyển hướng với dữ liệu phiên flash
Chuyển hướng đến một URL mới và flash dữ liệu vào phiên thường được thực hiện cùng một lúc. Thông thường, điều này được thực hiện sau khi thực hiện thành công một hành động khi bạn flash thông báo thành công cho phiên. Để thuận tiện, bạn có thể tạo một phiên bản
Route::get['/', function [] {
15 và flash dữ liệu vào phiên theo một chuỗi phương thức thông thạo duy nhấtRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
2Sau khi người dùng được chuyển hướng, bạn có thể hiển thị thông báo nhấp nháy từ phiên. Ví dụ: sử dụng cú pháp Blade
Route::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
3Chuyển hướng với đầu vào
Bạn có thể sử dụng phương thức
Route::get['/', function [] {
83 do phiên bản Route::get['/', function [] {
15 cung cấp để flash dữ liệu đầu vào của yêu cầu hiện tại vào phiên trước khi chuyển hướng người dùng đến một vị trí mới. Điều này thường được thực hiện nếu người dùng gặp phải lỗi xác thực. Sau khi đầu vào đã được đưa vào phiên, bạn có thể dễ dàng truy xuất nó trong lần yêu cầu tiếp theo để điền lại biểu mẫuRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
4Các loại phản hồi khác
Trình trợ giúp
Route::get['/', function [] {
85 có thể được sử dụng để tạo các loại trường hợp phản hồi khác. Khi trình trợ giúp Route::get['/', function [] {
85 được gọi mà không có đối số, việc triển khai hợp đồng Route::get['/', function [] {
87 được trả về. Hợp đồng này cung cấp một số phương pháp hữu ích để tạo phản hồiXem phản hồi
Nếu bạn cần kiểm soát trạng thái và tiêu đề của phản hồi nhưng cũng cần trả về dạng xem dưới dạng nội dung của phản hồi, bạn nên sử dụng phương thức
Route::get['/', function [] {
88Route::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
5Tất nhiên, nếu bạn không cần chuyển mã trạng thái HTTP tùy chỉnh hoặc tiêu đề tùy chỉnh, bạn có thể sử dụng hàm trợ giúp toàn cầu
Route::get['/', function [] {
88Phản hồi JSON
Phương thức
Route::get['/user/{user}', function [User $user] {
00 sẽ tự động đặt tiêu đề Route::get['/user/{user}', function [User $user] {
01 thành Route::get['/user/{user}', function [User $user] {
02, cũng như chuyển đổi mảng đã cho thành JSON bằng cách sử dụng hàm PHP Route::get['/user/{user}', function [User $user] {
03Nếu bạn muốn tạo phản hồi JSONP, bạn có thể sử dụng phương thức
Route::get['/user/{user}', function [User $user] {
00 kết hợp với phương thức Route::get['/user/{user}', function [User $user] {
05Route::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
6Tệp tải xuống
Phương pháp
Route::get['/user/{user}', function [User $user] {
06 có thể được sử dụng để tạo phản hồi buộc trình duyệt của người dùng tải xuống tệp tại đường dẫn đã cho. Phương thức Route::get['/user/{user}', function [User $user] {
06 chấp nhận tên tệp làm đối số thứ hai cho phương thức, sẽ xác định tên tệp mà người dùng tải xuống tệp nhìn thấy. Cuối cùng, bạn có thể chuyển một mảng các tiêu đề HTTP làm đối số thứ ba cho phương thứcRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
7Cảnh báo
Symfony HttpFoundation, quản lý tệp tải xuống, yêu cầu tệp được tải xuống phải có tên tệp ASCII.
Tải xuống trực tuyến
Đôi khi, bạn có thể muốn biến phản hồi chuỗi của một thao tác nhất định thành phản hồi có thể tải xuống mà không phải ghi nội dung của thao tác vào đĩa. Bạn có thể sử dụng phương pháp
Route::get['/user/{user}', function [User $user] {
08 trong trường hợp này. Phương thức này chấp nhận một cuộc gọi lại, tên tệp và một mảng tiêu đề tùy chọn làm đối số của nóRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
8Phản hồi tệp
Phương pháp
Route::get['/user/{user}', function [User $user] {
09 có thể được sử dụng để hiển thị tệp, chẳng hạn như hình ảnh hoặc PDF, trực tiếp trong trình duyệt của người dùng thay vì bắt đầu tải xuống. Phương thức này chấp nhận đường dẫn đến tệp làm đối số đầu tiên và một mảng tiêu đề làm đối số thứ haiRoute::get['/home', function [] {
return response['Hello World', 200]
->header['Content-Type', 'text/plain'];
9Macro phản hồi
Nếu bạn muốn xác định một phản hồi tùy chỉnh mà bạn có thể sử dụng lại trong nhiều route và bộ điều khiển khác nhau, bạn có thể sử dụng phương thức
Route::get['/user/{user}', function [User $user] {
30 trên mặt tiền Route::get['/user/{user}', function [User $user] {
3. Thông thường, bạn nên gọi phương thức này từ phương thức Route::get['/user/{user}', function [User $user] {
32 của một trong các nhà cung cấp dịch vụ của ứng dụng, chẳng hạn như nhà cung cấp dịch vụ Route::get['/user/{user}', function [User $user] {
33Route::get['/user/{user}', function [User $user] {
0Hàm
Route::get['/user/{user}', function [User $user] {
30 chấp nhận tên làm đối số đầu tiên và đóng làm đối số thứ hai. Việc đóng macro sẽ được thực thi khi gọi tên macro từ triển khai Route::get['/user/{user}', function [User $user] {
35 hoặc trình trợ giúp Route::get['/', function [] {
85