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']);