HomeLập trình

Phiên bản laravel 5.7 nâng cấp có gì mới?

Like Tweet Pin it Share Share Email

Phiên bản PHP framework laravel 5.7 yêu cầu PHP >= 7.1.3.

Sau khi phát hành Laravel 5.7, Laravel 5.6 sẽ tiếp tục fix bug cho đến ngày 7/8/2018 và sửa các lỗi bảo mật cho đến ngày 7/2/2019.

Tương tự, Laravel 5.7 sẽ nhận hỗ trợ fix bug và các lỗi bảo mật cho đến tháng 2/2019 và tháng 8/2019.

Laravel đã liên tục bổ sung các tính năng hữu ích kể từ lần phát hành đầu tiên. Phiên bản 5.7 sắp tới cũng sẽ có rất nhiều tính năng thú vị.

Các tính năng chính được nâng cấp ở phiên bản này: Laravel Nova, tùy chọn xác minh email cho thành viên đã đăng nhập, hỗ trợ cho guest (người dùng chưa đăng nhập) trong gates và policies, tích hợp Symfony dump-server, đa ngôn ngữ khi thông báo.

Laravel Nova

Laravel Nova là một package mới trong Laravel tạo ra một trang quản trị admin. Giúp tiết kiệm thời gian để tạo một trang quản trị admin. Có thể cài đặt trong project mới của bạn, cả project hiện tại thông qua composer.

Laravel Nova hỗ trợ cho cả laravel 5.6, sử dụng Vuejs, Vue Router và Tailwind (một framework CSS rất tiện ích) làm giao diện.

Laravel Nova xây dựng sẵn CRUD cơ bản đến tìm kiếm phức tạp, bộ lọc filters, số liệu, thống kê, video…

Bạn có thể tìm hiểm thêm về Package này trên link chính thức https://nova.laravel.com/

Email Verification

Nếu bạn đã quá quen thuộc với hệ thống authentication mặc định của laravel. Thì hiện nay, Laravel đã có tùy chọn xác minh email cho người dùng.

Một cột mới email_verified_at đã được thêm vào bảng users. Bạn không cần phải tự thêm bằng tay vào, nó đã đi kèm trong migrations rồi. Bạn chỉ cần chạy câu lệnh: php artisan migrate là ok

User Model cần implement MustVerifyEmail interface để đề xuất user mới xác minh địa chỉ email của họ. Vì vậy, User Model của bạn sẽ như dưới đây:

<?php 
// App/User.php namespace App; 
use Illuminate\Notifications\Notifiable; 
use Illuminate\Contracts\Auth\MustVerifyEmail; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
 
class User extends Authenticatable implements MustVerifyEmail 
{ 
    // ... 
} 

Sau khi implement MustVerifyEmail interface, user mới đăng ký nhận được email có

chứa liên kết xác minh để kích hoạt tài khoản. Vì vậy, khi người dùng nhấn vào liên kết, tài khoản sẽ được kích hoạt.

Cùng với việc xác minh email, Laravel 5.7 cũng cung cấp middleware giới hạn cho các email được xác minh. Vì vậy, điều này rất hữu ích và hữu ích cho các function trong backend.

'email_verified'=> \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

Để các routes của bạn chỉ cho các email được xác minh, hãy gắn middleware trong các routes.

Route::get('info', function () {
    //
})->middleware('email_verified');


Guest User Gates / Policies

 Guest User Gates là một tính năng hữu ích khác có trong Laravel 5.7. Hiện tại, Laravel trả về false khi người dùng cố gắng truy cập các route mà chưa được xác thực. Nhưng trong laravel 5.7, bạn có thể ép kiểu về mode hoặc bất cứ thứ gì hoặc đơn giản là trả về null trong các mục đích phù hợp.

Gate::define('update-page', function (?Admin $admin, Page $page) {
    // ...
});

Symfony Dump Server

Bạn đã bao giờ nghĩ đến việc dump data ra một file HTML bên ngoài? Sắp tới, Laravel 5.7 sẽ có một tính năng tích hợp cho việc này. Bạn có thể chỉ cần làm 1 việc đơn giản là đổ dữ liệu của bạn vào file html.

Lệnh này rất tiện dụng và rất hữu ích cho việc debug mà không làm gián đoạn thời gian chạy ứng dụng.

php artisan dump-server
 
# Or send the output to an HTML file
php artisan dump-server --format=html > dump-server-test.html

Lệnh này chạy ngầm trên server. Nó nhận dữ liệu được gửi từ ứng dụng và hiển thị thông qua bảng điều khiển (console). Bạn không bao giờ phải lo lắng khi chạy lệnh này, vì khi lệnh này không chạy thì dump() hoạt động như mặc định.

Bạn có thể tìm thêm thông tin về package này trên github.

Notification Localization

Trong laravel 5.7, bạn có thể gửi thông báo khác với ngôn ngữ hiện tại. Để làm điều này, bạn cần phải chỉ định ngôn ngữ mà bạn sẽ sử dụng trong thông báo trong phương thức locale(). Ví dụ:

$user->notify((new CreatePost($admin))->locale('jp')); 

Hoặc cũng có thể thông qua Notification facade:

Notification::locale('jp')->send($admin, new CreatePost($user));

Cải thiện thông báo lỗi

Bạn có thể theo dõi các thông báo lỗi dễ dàng hơn trong laravel 5.7. Lý do là vì Laravel 5.7 sử dụng package mới được phát triển bởi Joseph Silber. Nó sẽ hiển thị thông báo lỗi trên dynamic calls và Eloquent models.

URL Generator and Callable Syntax

Trong Laravel 5.7, chúng ta có thể lấy url theo cú pháp mới. Lợi ích chính của cú pháp mới này là bạn có thể điều hướng trực tiếp đến controller của nó.

<?php
// PagesController is a controller
// index is a method name inside controller
 
$url = action([PagesController::class, 'show']);

Thay đổi đường dẫn resources

Sẽ có một chút thay đổi trong thư mục resources ở Laravel 5.7. Thư mục assets sẽ bị xóa và thư mục js sass sẽ không có trong resources.

“Khi bạn nâng cấp phiên bản Laravel, bạn không cần phải tạo lại thư mục resources/assets theo cấu trúc thư mục mới. Nó sẽ hoạt động theo cấu trúc cũ.” – Taylor Ottwell.

Paginator Links

Tính năng nhỏ bé này trong laravel 5.7 có thể hữu ích trong nhiều trường hợp. Tính năng này sẽ giúp kiểm soát số lượng liên kết trang được hiển thị ở mỗi bên của dấu phân cách.

Nếu bạn đã sử dụng paginations trước đó thì bạn có thể nhận thấy sẽ có link của 3 trang theo mặc định. Nhưng, bạn có thể xác định rõ ràng trong laravel 5.7.

{{ $paginator->onEachSide(4)->links() }}

Filesystem Read / Write Streams

Flysystem của Laravel sẽ cung cấp các phương thức readStream và writeStream:

Storage::disk('s3')->writeStream(
    'remote-file-test.zip',
    Storage::disk('local')->readStream('local-file-test.zip')
);

Đó là những gì mình đã cóp nhặt được từ: viblo và trang chủ của laravel.

Comments (0)

Leave a Reply

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