12/08/2018, 15:58

[Phần 1] Tìm hiểu các tính năng mới trong Laravel 5.5

Chào các bạn, Như các bạn đã biết, Laravel vừa released version 5.5 (LTS), do đó trong bài viết hôm nay mình xin giới thiệu một vài tính năng mới trong Laravel 5.5. 1. Whoops Package Link: https://packagist.org/packages/filp/whoops Nếu bạn nào đã làm việc với Laravel từ version 4.x thì hẳn đã ...

Chào các bạn, Như các bạn đã biết, Laravel vừa released version 5.5 (LTS), do đó trong bài viết hôm nay mình xin giới thiệu một vài tính năng mới trong Laravel 5.5.

1. Whoops Package

Link: https://packagist.org/packages/filp/whoops Nếu bạn nào đã làm việc với Laravel từ version 4.x thì hẳn đã quen với package này. Đây là tính năng thông báo lỗi, debug lỗi, do đó Laravel đã đưa tính năng này quay lại trong version này. Hình ảnh mình họa:

2. Các tính năng liên quan tới Validate Request

2.1 Validate Request

  • Trong các version trước đó. Nếu chúng ta muốn validate một request ta phải truyền một instance của request vào method valide() trong controller. Minh họa:
	$thisvalidate(request(), [
        'a' => 'rule_a',
        'b' => 'rule_b',
        ....
    ]);
  • Trong version mới này, Laravel giới thiệu một cách code ngắn gọn hơn, nhưng hiệu quả không hề thua kém cách cũ Minh họa
$data = request()validate([
	‘title’ => ‘required’,
	‘description’ => ‘required’,
	...
]);

Với cách viết như trên, ta còn có thể nhận được các giá trị (tương tự khi ta dùng method Request::only()) ứng với các key (hoặc fields) ta đang validate.

Giải thích: Ở đây, ta đang validate hai key (hoặc fields) là: title và description. => Vậy khi debug biết $data thì ta nhận được giá trị của title và description.

2.2 Customize Rule

  • Một feature tuyệt vời nữa của Laravel 5.5 đem đến là khả năng tạo rule tuyệt vời.
  • Nếu như các version trước, muốn viết rule cho riêng mình thì chúng ta sử dụng method:
	validator::extend()

(Lưu ý: version Laravel 5.5 vẫn sử dụng được method này)

  • Trong version mới này, Lar 5.5 đã tung ra một cách viết mới, clear hơn, dễ sử dụng hơn.

Minh họa viết rule mơi:

namespace AppRules;

use IlluminateContractsValidationRule;

class UsernameValidationRule implement Rule 
{
	public function passes($attribute, $value) 
	{
		return $value > 10;
	}

	public function message() 
	{
		return:attribute must be less than 10;
	}
}

Minh họa dùng rule

$requestvalidate([
	‘username’ => [
        'required',
        new UsernameValidationRule,
        ...
    ]
]);

Hoặc không cần tạo class Rule. Ta cũng có thể handle được vấn đề rule như sau:

$requestvalidate([
	‘username’ => [
        'required',
        function ($attribute, $value, $fail) {
                    if (strlen($value) < 10) {
                        $fail('username length errors');
                    }
                },
        ...
    ]
]);
  • Để tạo một rule mới ta có thể dùng lệnh Artisan sau: $ php artisan make:rule MyCustomRule

3. The migrate:fresh Migration Command

  • Trong version này, Laravel cũng vừa giới thiệu lệnh migrate:fresh. Lệnh này có vai trò gì?
  • Lệnh này sẽ drop tất cả các table hiện có và chạy lại migrations.
  • Nghe có vẻ giống lệnh migrate:refresh nhỉ             </div>
            
            <div class=
0