17. Các loại response khác Streamed download (Other response types)(ok)
https://viblo.asia/p/tap-17-response-laravel-aWj534RGK6m
Last updated
https://viblo.asia/p/tap-17-response-laravel-aWj534RGK6m
Last updated
Nếu bạn muốn trả về response của các image, pdf... để hiển thị trên trình duyệt người dùng thay vì tải về, bạn có thể sử dụng method file
. Method này chấp nhận tham số thứ nhất là path file cần hiển thị, tham số thứ hai tùy chọn chứa mảng thiết lập header response.
Lưu ý: Base path của đường dẫn file trong method
file
cũng làpublic
giống như methoddownload
.
Chẳng hạn mình sẽ thêm một ảnh trong folder public
.
Sau đó mình đăng ký một route như sau:
Và đây là kết quả:
Trước khi nói phần này thì chúng ta cùng tìm hiểu chút về thuật ngữ "Macro", vì xuyên suốt series có thể ta sẽ gặp rất nhiều. Hiểu nôm na thì "Macro" định nghĩa một lệnh riêng lẽ, trong đó sẽ thực hiện các chuỗi lệnh nào đó để trả về kết quả, đại loại là khá giống với function.
Nếu bạn thích tự định nghĩa một loại response tùy chỉnh để sử dụng trong nhiều route và controller, bạn có thể sử dụng phương thức macro
của Response
facade. Bạn có thể tạo một service provider với tên ResponseMacroServiceProvider
chẳng hạn, tại method boot
bạn sẽ thực hiện việc định nghĩa các custom response.
Chẳng hạn mình muốn tạo một response để có thể trả về chuỗi in hoa, mình sẽ đăng ký với macro
như sau:
Như bạn thấy chúng ta sẽ sử dụng hai method Response::macro
và Response::make
.
Với method Response::macro
: dùng để định nghĩa một custom response
Tham số thứ nhất sẽ là tên của custom response.
Tham số thứ hai sẽ là một Closure, nhận dữ liệu truyền về qua $value
.
Với method Response::make
: dùng để tạo response, nó sẽ nhận tham số là các chuỗi xử lý $value
trước khi được trả về.
Ok, vậy ta đã có thể sử dụng response caps
như những các loại response khác.
Nhớ đừng quên liệt kệ service provider vừa tạo trong config/app.php
nhé.
Cảm ơn các bạn đã quan tâm theo dõi. Cùng đồng hành với mình qua những tập tiếp theo tại series "Hành trình chinh phục Laravel Framework" nhé! Chúc may mắn và hẹn gặp lại.