# I. Laravel Sail
Laravel Sail là một bộ công cụ giúp bạn cấu hình và chạy một môi trường phát triển Laravel với Docker. Để cài đặt Laravel với Laravel Sail, bạn có thể thực hiện các bước sau:
### Bước 1: Tạo Một Project Laravel Mới
Chạy lệnh sau để tạo một project Laravel mới:
```bash
composer create-project --prefer-dist laravel/laravel your-project-name
```
### Bước 2: Di Chuyển vào Thư Mục Project
```bash
cd your-project-name
```
### Bước 3: Cài Đặt Laravel Sail
Chạy lệnh sau để cài đặt Laravel Sail:
```bash
composer require laravel/sail --dev
```
### Bước 4: Khởi Tạo Sail
Sử dụng lệnh sau để khởi tạo Sail và tạo file `docker-compose.yml`:
```bash
php artisan sail:install
```
### Bước 5: Cấu Hình Database và Môi Trường
Mở file `.env` và cấu hình database connection. Sử dụng các biến môi trường của Sail:
```env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=sail
DB_USERNAME=sail
DB_PASSWORD=password
```
### Bước 6: Khởi Động Docker Containers
Sử dụng lệnh sau để khởi động Docker containers:
```bash
./vendor/bin/sail up
```
### Bước 7: Chạy Migrate và Seed
```bash
./vendor/bin/sail artisan migrate --seed
```
### Bước 8: Truy Cập Ứng Dụng
Mở trình duyệt và truy cập http://localhost.
### Bước 9: Dừng Docker Containers
Khi bạn đã hoàn tất công việc, bạn có thể dừng Docker containers bằng cách sử dụng lệnh:
```bash
./vendor/bin/sail down
```
Lưu ý: Các lệnh `sail` có thể được thay thế bằng `docker-compose exec` trong môi trường Docker thông thường.
Đây chỉ là một hướng dẫn cơ bản để bắt đầu với Laravel Sail. Bạn có thể tìm hiểu thêm về Laravel Sail trong [tài liệu chính thức](https://laravel.com/docs/sail).
---
# II. Laravel Authentication
Laravel cung cấp một hệ thống xác thực (authentication) mạnh mẽ và linh hoạt. Hệ thống này giúp bạn dễ dàng xây dựng các chức năng đăng nhập, đăng ký, và quản lý người dùng trong ứng dụng Laravel của bạn. Dưới đây là một hướng dẫn tổng quan về cách sử dụng hệ thống xác thực trong Laravel.
### Bước 1: Cài Đặt Laravel Authentication
Chạy lệnh sau để cài đặt Laravel Authentication:
```bash
composer require laravel/ui
```
Sau đó, chọn một trong những lựa chọn sau để cài đặt các tệp cần thiết:
- Cài đặt Bootstrap và jQuery:
```bash
php artisan ui bootstrap --auth
```
- Cài đặt Vue và Axios:
```bash
php artisan ui vue --auth
```
### Bước 2: Chạy Migrate
Chạy migrate để tạo bảng người dùng:
```bash
php artisan migrate
```
### Bước 3: Bảo vệ Tuyến
Mặc định, các tuyến trong `routes/web.php` đã được bảo vệ bởi middleware `auth`. Điều này đảm bảo rằng chỉ có người dùng đã đăng nhập mới có thể truy cập các tuyến đó.
### Bước 4: Sử Dụng Middleware trong Controller (Nếu Cần Thiết)
Nếu bạn muốn bảo vệ một phương thức cụ thể trong một controller, bạn có thể sử dụng middleware `auth` bằng cách thêm nó vào hàm constructor hoặc trực tiếp trong hàm.
```php
public function __construct()
{
$this->middleware('auth');
}
```
### Các Chức Năng Cơ Bản
#### Đăng Nhập
Tạo một form đăng nhập trong view và sử dụng `auth` facade để xử lý đăng nhập:
```php
use Illuminate\Support\Facades\Auth;
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// Đăng nhập thành công
return redirect()->intended('/dashboard');
}
// Đăng nhập thất bại
return back()->withErrors(['email' => 'Thông tin đăng nhập không đúng']);
}
```
#### Đăng Ký
Tạo một form đăng ký và sử dụng `User` model để tạo mới người dùng:
```php
use App\Models\User;
public function register(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
]);
// Đăng ký thành công
return redirect('/login');
}
```
#### Đăng Xuất
Sử dụng `auth` facade để đăng xuất người dùng:
```php
use Illuminate\Support\Facades\Auth;
public function logout()
{
Auth::logout();
return redirect('/');
}
```
### Tùy Chỉnh và Mở Rộng
Laravel Authentication cung cấp nhiều tính năng như xác nhận email, đặt lại mật khẩu, và nhiều hơn nữa. Bạn có thể tìm hiểu chi tiết trong [tài liệu chính thức Laravel Authentication](https://laravel.com/docs/8.x/authentication).
### Kết Luận
Hệ thống xác thực Laravel giúp bạn quản lý người dùng một cách dễ dàng và bảo mật. Bạn có thể tùy chỉnh và mở rộng chúng theo nhu cầu cụ thể của ứng dụng của mình.
---
# III. Laravel Mix
Laravel Mix là một công cụ tích hợp sẵn trong Laravel giúp quản lý và tối ưu hóa quy trình biên dịch và đóng gói tài nguyên web như CSS, JavaScript, và hình ảnh. Mix sử dụng Webpack dưới nền và cung cấp một cách dễ sử dụng để định nghĩa và quản lý các tác vụ biên dịch.
Dưới đây là một số tính năng và cách sử dụng Laravel Mix:
### Các Tính Năng Chính của Laravel Mix:
1. **Đơn Giản và Dễ Sử Dụng:** Laravel Mix cung cấp một cú pháp đơn giản và dễ sử dụng để định nghĩa các tác vụ biên dịch.
2. **Hỗ Trợ Nhiều Loại Tài Nguyên:** Mix hỗ trợ biên dịch và đóng gói nhiều loại tài nguyên như Sass, Less, Stylus, ECMAScript 6, TypeScript, và nhiều hơn nữa.
3. **Tự Động Tạo Hash cho Tệp Tin:** Mix tự động thêm mã hash vào tên tệp tin để tránh việc lưu trữ cache khi có thay đổi.
4. **Tối Ưu Hóa và Tự Động Chuyển Nhượng:** Mix cung cấp chức năng tối ưu hóa tự động cho các tệp tin CSS và JavaScript, cũng như chức năng chuyển nhượng hình ảnh.
5. **Tích Hợp Nhanh Chóng với Laravel và Blade:** Mix tích hợp tốt với Laravel và cung cấp cú pháp Blade cho việc chèn các tệp tin đã biên dịch vào trong view.
### Cách Sử Dụng Laravel Mix:
1. **Cài Đặt Laravel Mix:**
Chạy lệnh sau để cài đặt Laravel Mix:
```bash
npm install
```
2. **Định Nghĩa Các Tác Vụ Biên Dịch trong `webpack.mix.js`:**
Mở tệp `webpack.mix.js` và định nghĩa các tác vụ biên dịch của bạn. Ví dụ:
```js
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.version();
```
Trong ví dụ này, Mix sẽ biên dịch tệp `resources/js/app.js` và `resources/sass/app.scss`, sau đó đặt kết quả vào `public/js` và `public/css`. Hàm `.version()` thêm mã hash vào các tệp tin đã biên dịch.
3. **Chạy Tác Vụ Biên Dịch:**
Sử dụng lệnh sau để chạy tác vụ biên dịch:
```bash
npm run dev
```
Hoặc sử dụng lệnh sau để chạy biên dịch và theo dõi sự thay đổi:
```bash
npm run watch
```
Nếu bạn đang ở trong môi trường sản xuất, bạn có thể sử dụng:
```bash
npm run production
```
### Kết Luận:
Laravel Mix là một công cụ mạnh mẽ giúp đơn giản hóa quy trình biên dịch tài nguyên web trong Laravel. Nó cung cấp một cách dễ sử dụng và mạnh mẽ để quản lý tệp tin CSS, JavaScript, và hình ảnh trong ứng dụng Laravel của bạn.