Hướng Dẫn Sử Dụng Laravel session() Chi Tiết Từ A-Z | DCSoft Tech
- Home
- Hướng Dẫn Sử Dụng Laravel session() Chi Tiết Từ A-Z | DCSoft Tech
Laravel cung cấp 3 cách chính để tương tác với Session, tùy thuộc vào ngữ cảnh code của bạn:
Thường được dùng trong các Controller method:
PHP
use Illuminate\Http\Request;
public function store(Request $request)
{
$value = $request->session()->get('key');
}
SessionCó thể gọi ở bất kỳ đâu trong ứng dụng:
PHP
use Illuminate\Support\Facades\Session;
Session::put('key', 'value');
$value = Session::get('key');
session()Cách ngắn gọn và phổ biến nhất:
PHP
// Lấy hoặc gán giá trị
session(['key' => 'value']);
$value = session('key');
PHP
// Dùng helper session()
session(['user_id' => 123]);
// Dùng phương thức put
session()->put('cart.count', 5);
// Thêm phần tử mới vào một mảng trong session (push)
session()->push('user.teams', 'developers');
PHP
// Lấy giá trị thông thường kèm giá trị mặc định nếu key không tồn tại
$name = session('name', 'Guest');
// Lấy toàn bộ dữ liệu session hiện tại
$data = session()->all();
// Kiểm tra key có tồn tại không (kể cả giá trị null)
if (session()->has('user_id')) {
// ...
}
// Kiểm tra key có tồn tại và khác null hay không
if (session()->exists('user_id')) {
// ...
}
PHP
// Xóa một key cụ thể
session()->forget('user_id');
// Xóa nhiều key cùng lúc
session()->forget(['user_id', 'role']);
// Xóa toàn bộ session trong request hiện tại
session()->flush();
Flash data rất hữu ích khi bạn muốn lưu trữ dữ liệu chỉ dùng cho request tiếp theo, sau đó nó sẽ tự động bị xóa. Thường dùng cho các thông báo thành công hoặc lỗi (Flash Message).
PHP
// Lưu flash data
session()->flash('success', 'Cập nhật dữ liệu thành công!');
// Giữ flash data cho request tiếp theo nữa
session()->reflash();
// Giữ lại một vài key cụ thể cho request kế tiếp
session()->keep(['success', 'message']);
Trong Blade template, bạn hiển thị thông báo rất dễ dàng:
HTML
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
config/session.php)Laravel hỗ trợ nhiều driver lưu trữ session khác nhau được định nghĩa trong file config/session.php:
file: Lưu trong thư mục storage/framework/sessions (mặc định cho môi trường local).
database: Lưu vào bảng sessions trong cơ sở dữ liệu (tối ưu khi scale hệ thống hoặc chạy multi-server).
redis / memcached: Lưu trên bộ nhớ đệm tốc độ cao.
cookie: Lưu mã hóa trực tiếp trong cookie của trình duyệt.
Bạn có thể cấu hình nhanh thông qua file .env:
Đoạn mã
SESSION_DRIVER=database
SESSION_LIFETIME=120
Việc nắm vững cách quản lý Session trong Laravel giúp bạn xây dựng các tính năng xác thực, giỏ hàng, thông báo trạng thái người dùng một cách mượt mà và bảo mật.