这是简单的sigin方法:
LoginController:
public function signin(Request $r)
{
$data['email'] = $r->email;
$data['password'] = md5($r->password);
if ($data['email'] == '' || $data['password'] == '') {
echo 'Please enter email or password.';
} else {
$userInfo = DB::table('users')->where('email', $data['email'])->get()->first();
if ($data['email'] == $userInfo->email && $data['password'] == $userInfo->password) {
$r->session()->put('userData', $data['email']);
$userData = $r->session()->get('userData');
return redirect('/userpanel')->with('status', $userData);
} else {
return redirect('/login');
}
}
}
HomeController:
public function user_index()
{
$data = DB::table('personals')
->join('companies', 'personals.companyId', 'companies.id')
->get();
return view('userDashboard')->with(['data' => $data]);
}
登录后,此方法将重定向到用户面板,此处显示会话信息。但是,如果我在此处重新加载,则不会显示任何会话信息。在我的刀片中,我通过以下代码打印会话:
<div class="alert alert-success" class="d-block">
<div id="userEmail" >{{ session('status') }}</div>
</div>
我在HomeController和LoginController中使用它。但是问题没有解决。
答案 0 :(得分:0)
使用with
基本上是将数据闪烁到会话,而该会话将仅在下一个请求时保留在会话中,这就是为什么在重新加载时不会再次得到该信息。
https://laravel.com/docs/5.8/session#flash-data
这是with()
的实现,其中它使用flash()
刷新数据,这些数据将保留用于下一个请求。
public function with($key, $value = null)
{
$key = is_array($key) ? $key : [$key => $value];
foreach ($key as $k => $v) {
$this->session->flash($k, $v);
}
return $this;
}
更改此代码
public function user_index()
{
$data = DB::table('personals')
->join('companies', 'personals.companyId', 'companies.id')
->get();
session(['data' => $data]);
return view('userDashboard');
}
答案 1 :(得分:0)
将此添加到刀片文件中。
@if(\Session::has('status'))
<span>{{\Session::get('status')}}</span>
@endif