📅  最后修改于: 2021-01-05 10:58:36             🧑  作者: Mango
Laravel会话是一种跨多个用户请求存储用户信息的方法。它跟踪所有访问该应用程序的用户。
让我们通过示例了解会话。
form.blade.php
File Upload
public function store(Request $request)
{
print_r($request->input('username'));
}
Route::get('/session',function()
{
return view('form');
});
输出量
当我们单击提交按钮时,将显示以下屏幕:
要将用户名存储在会话中,我们使用session的put()方法,如下所示:
$ request-> session()-> put('user',$ request-> input('username'));
要检索会话,我们使用session的get()方法,如下所示:
echo $ request-> session()-> get('user');
public function store(Request $request)
{
$request->session()->put('user', $request->input('username'));
echo $request->session()->get('user');
}
输出量
我们还可以使用全局会话函数来存储和检索会话中的值。当使用单个参数传递会话函数,它将返回键的值。如果通过键/值对数组传递会话,则值将存储在会话中。
//从会话密钥中检索数据。
$ data = session('key');
//为会话密钥提供默认值。
$ data = session('key','default');
//将值存储在会话密钥中。
session(['key'=>'value']);
让我们通过一个例子来理解。
FormController.php
public function store(Request $request) {
session(['user'=>$request->input('username')]);
$data=session('user');
echo $data;
}
输出量
如果要检索所有会话数据,则可以使用all()方法,如下所示:
$ session_data = $ request-> session()-> all();
让我们通过一个例子来理解:
FormController.php
public function store(Request $request) {
session(['user1'=>'anushka']);
session(['user2'=>'anvi']);
return $request->session()->all();
}
现在,我们在web.php文件中定义路由。
路线:: get('/ show','FormController @ store');
输出量
现在,我们将看到如何从会话中删除数据。我们可以通过使用cancel()方法删除会话。
让我们通过一个例子来理解。
FormController.php
We can also delete the session by using delete() method.
{
session(['user1'=>'anushka']);
session(['user2'=>'anvi']);
$request->session()->forget('user1');
return $request->session()->all();
}
输出量
在上面的屏幕截图中,我们可以看到未显示user1,这意味着该user1已从会话中删除。
要从会话中删除所有数据,我们将使用flush()方法。
$ request-> session()-> flush();
让我们通过一个例子来理解flush()方法。
public function store(Request $request)
{
session(['user1'=>'anushka']);
session(['user2'=>'anvi']);
$request->session()->flush();
return $request->session()->all();
}
输出量
在上面的屏幕截图中,我们观察到所有数据已从会话中删除,并且它返回一个空数组。
当我们要在当前请求的会话中存储数据时,闪存数据很有用,因为在下一个请求中将删除闪存数据。
让我们通过一个示例来了解刷新数据。
public function store(Request $request)
{
session()->flash('post', 'post has been updated');
return $request->session()->get('post');
}
输出量
当我们从代码中删除flash()函数时,代码如下所示:
public function store(Request $request)
{
return $request->session()->get('post');
}
当我们刷新页面两次时,然后在第二次刷新时,会话数据将被删除。
注意:如果要保留多个请求的闪存数据,则可以使用reflash()方法。 session()-> reflash();如果要保留几个请求的特定数据,则可以使用keep()方法。 $ request-> session()-> keep('message');