Như đã nói ở bài trước Laravel Jetstream là bộ công cụ mạnh mẽ hơn Laravel Breeze với nhiều tính năng hơn bởi vậy trong bài viết này chúng ta sẽ tìm hiểu về Laravel Jetstream cũng như cách cài đặt Laravel Jetstream Laravel 8 các bạn nhé.
I. Laravel Jetstream là gì?
Laravel Jetstream là một bộ khung được xây dựng sẵn cho Laravel 8 nhằm cung cấp công cụ khởi đầu cho dự án của bạn. Jetstream bao gồm các chức năng đăng nhập, đăng ký, xác thực địa chỉ email, xác thực 2 lớp (two-factor authentication), quản lý session, hỗ trợ API thông qua Laravel Sanctum, và tuỳ chọn quản lý team. Laravel Jetstream dựa trên authentication UI nhưng có sự cải tiến vượt bậc về tốc độ cũng như giao diện so với thế hệ cũ.
Laravel Jetstream được thiết kế bằng Tailwind CSS và cung cấp lựa chọn sử dụng Livewire hoặc Inertia.
II. Cài đặt Laravel Jetstream trong Laravel 8
1. Tạo mới project của bạn
Vì là bộ công cụ khởi đầu dự án thế nên bạn nên cài Laravel Jetstream ngay từ khi mới tạo dự án. Ví dụ dưới đây mình tạo mới project có tên Jetstream để minh họa luôn.
Trong htdoc của xampp bật cmder và chạy lệnh tạo project laravel 8
laravel new Jetstream
Chờ cho project được tạo
Tạo thành công chúng ta nhận được thông báo như sau:
2. Kết nối database
Vì mình sử dụng xampp nên sẽ tạo mới 1 database với tên jetstream trên phpMyadmin nhé các bạn
Sau đó chúng ta mở file .env ra tìm các dòng sau để config database cho laravel 8
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=jetstream DB_USERNAME=root DB_PASSWORD=
Ở đây chúng ta điền tên datase, username và password đúng theo cơ sở dữ liệu là được.
Chú ý chúng ta cần cấu hình lại bảng mã trong file config/database.php
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
Cấu hình charset và collation cho đúng với cơ sở dữ liệu mới tạo. Ví dụ ở đây mình cấu hình là utf8 và utf8_general_ci
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
3. Migration
Chạy lệnh sau để khởi tạo các bảng cơ bản cho cơ sở dữ liệu
php artisan migrate
Kết quả như sau là thành công
4. Cài đặt Jetstream
Chạy câu lệnh dưới đây để cài đặt
composer require laravel/jetstream
5. Cài livewire
Do Jetstram hỗ trợ Liveware hoặc Inertia nên chúng ta chỉ cần chọn 1 trong 2 để cài đặt. Ở đây chúng tôi chọn cài livewire
php artisan jetstream:install livewire
6. Build Laravel Mix
Chạy lần lượt các câu lệnh sau để tạo Laravel Mix.
npm install
Lưu ý trước đó bạn phải cài node.js thì mới chạy các lệnh này được.
Chạy thành công hiển thị như sau:
Chạy tiếp
npm run dev
Nhận được thông báo sau là đã thành công tạo Laravel Mix
Bước cuối cùng là migrate các migration mới
php artisan migrate
7. Khởi động serve và test thành quả
Chạy lệnh khởi động serve
php artisan serve
Truy cập vào đường dẫn mặc định để test thành quả
Có thể thấy các đường dẫn Login, Register đã được tạo. Click vào trải nghiệm thôi nào
Có Validating xịn sò luôn :D
III. Lời kết
Trên đây là cách cài đặt Laravel Jetstream Laravel 8 cực kỳ đơn giản. Mặc dù với Laravel 8 chúng ta có thể tự làm mọi thứ từ đầu thế nhưng Laravel Jetstream là tính năng nổi bật của Laravel 8 tại sao bạn lại không dùng nó chứ?