It's me ;-)

Laravel ra mắt phiên bản 5.2

Theo như thông báo chính thức trên blog thì Laravel 5.2 đã chính thức ra mắt ngày 21/12/2015

Phiên bản 5.2 lần này bao gồm 1 số tính năng mới sau:

Hỗ trợ multiple authentication

Ở các phiên bản trước của Laravel, chỉ hỗ trợ duy nhất việc authenticate dựa trên session và bạn chỉ có thể có 1 mô hình xác thực với mỗi application.

Tuy nhiên, trong phiên bản 5.2 này, bạn có thể định nghĩa thêm các drivers xác thực cũng như các mô hình xác thực hoặc các bảng người dùng & điều khiển các tiến trình xác thực đó một cách tách biệt. Ví dụ, nếu ứng dụng của bạn có 1 bảng dành cho các người dùng “admin” và 1 bảng cho các người dùng “student”, bạn hoàn toàn có thể sử dụng phương thức Auth để xác thực dựa trên các bảng tương ứng đó thay vì chỉ 1 bảng như trước kia

Authentication scaffolding

Laravel đã hỗ trợ việc xử lý chứng thực 1 cách dễ dàng cho phía back-end; tuy nhiên, Laravel 5.2 còn cung cấp một cách nhanh chóng & thuận tiện hơn để triển khai phần xác thực cho phía front-end bằng cách chạy 1 câu lệnh đơn giản sau:

php artisan make:auth

Câu lệnh này sẽ tạo ra các file views (tương thích Bootstrap) cho các tác vụ: đăng nhập, đăng ký người dùng,  khôi phục mật khẩu. Lệnh này cũng cập nhật lại file routes của bạn với các action tương ứng.

Lưu ý: tính năng này chỉ nên dùng khi phát triển mới (từ đầu) các ứng dụng chứ không phải trong quá trình nâng cấp ứng dụng

Implicit model binding

Tính năng mới này giúp cho việc sử dụng model trong Route/Controller thuận tiện hơn rất nhiều. Hãy cùng xem ví dụ dưới đây:

Laravel 5.2 sẽ tự động thực hiện các tác vụ sau:

  • Call User::findOrFail($userId), với $userId là tham số lấy từ segment({user}). Ví dụ, /user/1 thì $userId sẽ là 1 và Laravel sẽ gọi User::findOrFail(1)
  • Inject kết quả vào biến $user

Middleware groups

Middleware groups cho phép nhóm nhiều middleware của route dưới 1 key name thuận tiện, cho phép bạn gán đồng thời nhiều middleware vào 1 route. Ví dụ hữu ích khi xây dựng 1 web UI và một API trong cùng một ứng dụng. Bạn có thể nhóm các route về session & CSRF vào nhóm có tên là web và giới hạn truy xuất vào nhóm api

Trong thực tế, cấu trúc của ứng dụng mặc định trong Laravel 5.2 cũng tiếp cận theo cách này. Ví dụ, trong file mặc định AppHttpKernel.php bạn sẽ tìm thấy đoạn sau:

Sau đó, nhóm web có thể sẽ được gán cho các route tương tự như sau:

Rate limit

Tính năng này cho phép bạn dễ dàng giới hạn số lần request từ 1 IP đến 1 route trong một khoảng thời gian cụ thể. Ví dụ, để giới hạn 1 IP chỉ có thể gửi tối đa 60 requests đến 1 route trong 1 phút bạn có thể làm như sau:

Array validation

Từ phiên bản Laravel 5.2, bạn có thể kiểm tra điều kiện cho các trường dữ liệu dạng mảng trong form 1 cách dễ dàng hơn rất nhiều. Ví dụ, để kiểm tra mỗi e-mail trong 1 mảng người dùng là duy nhất, bạn có thể làm như sau:

với input form ở file views có dạng như sau:
<input name="person[]['email']" type="text" value="">
hoặc
<input name="person[xxx]['email']" type="text" value="">

Tương tự, bạn có thể sử dụng ký tự * khi thiết lập thông điệp hiển thị cho validation tương ứng trong các file ngôn ngữ:

Cải tiến Eloquent Global Scope

Trong các phiên bản trước của Laravel, global Eloquent scope rất phức tạp và hay phát sinh lỗi khi implement. Tuy nhiên, trong phiên bản 5.2 này, global query scopes chỉ yêu cầu bạn implement duy nhất 1 phương thức đơn giản đó là apply()

Để biết thêm thông tin về việc viết các global scope, bạn có thể xem bản đầy đủ tại đây

 

Leave a Reply

Your email address will not be published. Required fields are marked *