Trong Laravel, session là một cơ chế truyền tham số, nó cho phép chúng ta lưu trữ dữ liệu thông qua các request. Session cho phép chúng ta lưu vết người dùng thông qua ứng dụng. Laravel sử dụng hệ thống dựa trên trình điều khiển cho quản lý session, mỗi trình điều khiển được sử dụng để định nghĩa nơi dữ liệu session được lưu trữ. Framework Laravel có các trình điều khiển session như sau:
php artisan make:migration creat_sessions_table
Lệnh này sẽ tạo filexxxx_creat_sessions_table.php (xxxx là ngày tháng tạo) trong thư mục database/migrations. Các bạn sửa lại function up() thành như sau:
Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->unsignedInteger('user_id')->nullable();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->text('payload');
$table->integer('last_activity');
});
Sau đó chạy lệnh:
php artisan migrate
Lưu trữ dữ liệu trong session
Sử dụng phương thức put của thể hiện Request chúng ta có thể lưu trữ dữ liệu trong session. Nó chấp nhận cả hai đối số “key” và “value”.
$request->session()->put('key', 'value');
Lấy giá trị trong session
Sử dụng phương thức get chúng ta có thể lấy giá trị đơn từ session. Nó chấp nhận cả hai đối sô “key_name” và “default_value”.
$value = $request->session()->get('key_name');
Hoặc:
$value = $request->session()->get('key_name', 'default_name');
Sử dụng phương thức all chúng ta có thể lấy tất cả dữ liệu sẵn có trong session.
$all_data = $request->session()->all();
Kiểm tra sự tồn tại của session
Sử dụng phương thức has bạn có thể kiểm tra một giá trị có tồn tại trong session hay không. Nó trả về true nếu có tồn tại, ngược lại trả về null. Với cú pháp:
if($request->session()->has('key_name')){
//
}
Xóa dữ liệu từ session
$request->session->forget('key');
$value = $request->session->pull('key', 'default');
Hoặc xoá tất cả item trong session:
$request->session->flush();
Flash session
Dữ liệu được lưu trữ trong Flash Session chỉ tồn tại trong một truy cập duy nhất diễn ra ngay sau lượt truy cập mà việc gán dữ liệu được thực hiện. Nó sẽ bị xóa ngay sau khi bạn F5 trình duyệt. Dữ liệu flash chủ yếu hữu ích cho việc sử dụng tạo các câu thông báo.
Ví dụ: Khi bạn sửa bài viết. Sau khi bấm nút update bạn muốn in ra câu thông báo thành công hay thất bại thì bạn có thể dùng Flash Session.
$request->session()->flash('key', 'value');
// Hoặc
\Session::flash('key', 'value')
Session ID
Nếu bạn muốn sinh ra session ID, bạn có thể sử dụng phương thức regenerate:
$request->session()->regenerate();
Qua bài vừa rồi hi vọng có thể giúp bạn hiểu hơn về session trong Laravel. Nhớ đừng quên theo dõi hoclaravel.vn để xem được những bài viết bổ ích hơn nữa nhé.
Các bạn cũng có thể để lại câu hỏi nếu có bất cứ thắc mắc nào ở phần bình luận phía dưới.
Huu ich
Cảm ơn Admin. Bài viết khá hay !
OK bạn, mình sẽ sắp xếp viết một bài về Extend Validation. Cảm ơn bạn đã quan tâm nhé.
Đúng rồi bạn, cái hàm này mình định nghĩa ở model User nhé.
Nhân tiện, Ad có thể giới thiệu thêm Extend Validation.