Nhảy tới nội dung
Phiên bản: 7.0.0

Session

Tương tác với Session

Lấy Session

Có hai cách chính để làm việc với dữ liệu session trong Skilldo: sử dụng helper session hoặc thông qua request.

Trước tiên, hãy xem xét việc truy cập session thông qua request

$value = request()->session()->get('key');

#[NoReturn]
function demoMethod(SkillDo\Http\Request $request, $model): void
{
$request->session()->get('key')
}

Khi bạn truy xuất một mục từ session, bạn cũng có thể chuyển giá trị mặc định làm đối số thứ hai cho phương thức get. Giá trị mặc định này sẽ được trả về nếu khóa được chỉ định không tồn tại trong session. Nếu bạn chuyển một closure làm giá trị mặc định cho phương thức get và key được yêu cầu không tồn tại, thì closure sẽ được thực thi và kết quả của nó được trả về:

$value = request()->session()->get('key', 'default');

$value = request()->session()->get('key', function () {
return 'default';
});

Bạn cũng có thể sử dụng session để truy xuất và lưu trữ dữ liệu trong session. Khi session helper được gọi với một đối số kiểu string, nó sẽ trả về giá trị của key session đó. Khi helper được gọi với một array có cặp key/value, các giá trị đó sẽ được lưu trữ trong session:

$value = session('key');

// Specifying a default value...
$value = session('key', 'default');

// Store a piece of data in the session...
session(['key' => 'value']);

Lấy Toàn Bộ Session

Nếu bạn muốn lấy tất cả dữ liệu trong session, bạn có thể sử dụng phương thức all:

$data = session()->all();

Kiểm Tra Session

Để xác định xem một mục có mặt trong session hay không, bạn có thể sử dụng phương thức has. Phương thức has trả về true nếu mục này có tồn tại và không phải là null:

if (session()->has('users')) {
// ...
}

Để xác định xem một mục có hiện diện trong phiên hay không, ngay cả khi giá trị của nó là null, bạn có thể sử dụng phương thức exists:

if (session()->exists('users')) {
// ...
}

Lưu Session

Để lưu trữ dữ liệu trong session, Bạn sẽ sử dụng method put:

// Via a request instance...
session()->put('key', 'value');

// Via the global "session" helper...
session(['key' => 'value']);

Thay đổi một giá trị session

Phương thức push có thể được sử dụng để push một giá trị mới lên giá trị phiên là một mảng

// Example data session
/*
[
user => [
teams => 'ceo',
old => 25
]
]
*/
session()->push('user.teams', 'developers');

Lấy và xóa một mục

Phương thức pull sẽ lấy data và xóa mục đó khỏi session trong một câu lệnh:

$value = session()->pull('key', 'default');

Dữ liệu Flash

Đôi khi bạn có thể muốn lưu trữ các mục trong session cho request tiếp theo. Bạn có thể làm như vậy bằng cách sử dụng phương pháp flash. Dữ liệu được lưu trữ trong session sử dụng phương pháp này sẽ có sẵn ngay lập tức và trong yêu cầu HTTP tiếp theo. Sau yêu cầu HTTP tiếp theo, dữ liệu được flash sẽ bị xóa. Dữ liệu flash chủ yếu hữu ích cho các thông báo trạng thái có thời gian tồn tại ngắn:

session()->flash('status', 'Task was successful!');

Xóa Data Session

Phương thức forget sẽ xóa dữ liệu một mục có key được chỉ định khỏi session

session()->forget('name');

Phương thức flush xóa tất cả dữ liệu khỏi session

session()->flush();