Laravel 7.x có gì mới ?

Tram Ho

Chỉ còn vài tuần nữa là bản phát hành Laravel 7 ra mắt, vì vậy mình đã tập hợp một danh sách một số tính năng và thay đổi mới quan trọng. Tất nhiên đây không phải là tất cả nhưng nó là một tổng quan ngắn gọn về một số nội dung mới.

Thêm “subquery value” trong câu lệnh where

Giả sử bạn có một ứng dụng olympics theo dõi tất cả các vận động viên và huy chương của họ. Giả sử bạn muốn tìm tất cả các vận động viên có huy chương mới nhất là huy chương vàng. Đây là cách bạn có thể làm điều đó bằng tính năng mới này:

Trước đây method where với tham số thứ nhất là 1 cột trong table, thì giờ đây nó có thể là 1 subquery (1 column của bảng khác liên kết)

Thêm Collection::sortDesc()

Laravel hiện tại chỉ có sort mà k có sortDesc nên đây là method mới, cách hoạt động giống với sort() chỉ là nghịch đảo.

Thêm HandleCors middleware

Sẽ có 1 middleware mặc định mới tên là HandleCors sử dụng package mặc định luôn https://github.com/fruitcake/laravel-cors dùng để cho phép bạn gửi Cross-Origin Resource Sharing headers

Cho phép Collection::push nhận nhiều giá trị đầu vào

Hiện tại collection push chỉ nhận 1 giá trị đầu vào, phiên bản 7x sẽ nhận nhiều hơn là 1

Tùy chỉnh Cast Types

Hiện tại với $casts thì chỉ dùng được các loại đã được định sẵn, phiên bản 7x bạn có thể tùy chỉnh nó theo ý mình. Object cast phải implements IlluminateContractsDatabaseEloquentCastsAttributes là contract của CastsInboundAttributes

Không còn hỗ trợ Monolog v1

Đơn giản là có Monolog v2 rồi nên k support nữa

Tuỳ chỉnh RouteKeyName trong Route Model Binding dễ dàng hơn

Nếu các bạn biết đến tính năng Route Model Binding trong Laravel thì model sẽ tự động Binding vào controller dựa vào tham số

Khi bạn muốn bind theo id, khi thì bind theo slug thì bạn phải custom trong model bằng

Ở phiên bản 7x này sẽ dễ dàng hơn

Ra mắt gói Laravel Airlock

Laravel Airlock một official package mới do Laravel phát triển.

Laravel Airlock cung cấp một hệ thống xác thực (authentication system) cực kì nhẹ cho website SPA và simple API.

Lí do ra đời Airlock:

  1. Các giải pháp cho SPA Authentication hiện nay đều cố lưu trữ token của người dùng ở dưới local, điều đó đồng nghĩa với việc lỗ hổng XSS sẵn sàng chờ chực và đọc lấy chúng.

  2. Nếu sử dụng Passport và bạn chỉ dùng để chứng thực thì k khác gì dùng dao mổ trâu đi giết gà.

  3. Nếu ở trên Passport quá nặng, người ta sẽ nghĩ đến 1 gói nhỏ hơn để giải quyết vấn đề này đó là JWT, bằng cách đơn giản cung cấp 1 token cho bên thứ ba, và nó hoàn toàn riêng biệt và không có gì để làm với OAuth cả.

Nếu đang xây dựng website SPA Laravel bạn cân nhắc dùng gói này nhé. Thời điểm đăng vẫn còn quá sớm để công khai, nhưng ad giới thiệu trước để các bạn tìm hiểu.

https://github.com/laravel/airlock

Multiple Mailers

Hiện tại Laravel có multi database, multi log, multi session, multi broadcast,… chỉ chưa có multi mailers.

Mailer nó là dạng singleton trong container nên dù bạn có change config mailer cũng k thay đổi gì cả, phải custom rất mệt.. nên có thể nói tính năng này rất hữu ích

Cấu hình multi mailers sẽ có trong file config mail.php trong phiên bản 7x

Auth mặc định sẽ return API style khi nhận XHR Requests

Điều này cập nhật xác thực build sẵn để trả về response 2xx khi bình thường (hoặc 4xx khi xác thực) trên các yêu cầu XHR thay vì trả lại chuyển hướng và thao tác phiên, v.v.

Nâng cấp lên Symfony 5

Laravel xài đồ mới thôi nên k có gì để bàn.

Tài liệu tham khảo

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo