Laravel 8 - back()->withInput() 为空



如果我在控制器中执行redirect () -> back () -> withInput (),我不会在模板中获得old ()值。比;With()错误也不传递。

原因是什么?我的代码:

LoginController.php

class LoginController extends Controller
{
public function login()
{
return view("auth.login");
}
public function loginPost(Request $request)
{
$User = User::where("email", $request->get("mail"))->first();
if($User == null)
{
return redirect()->back()->with('emailError', 'No account with this email.')->withInput();
}
if(!Hash::check($request->get("password"), $User->password))
{
return redirect()->back()->with('passwordError', 'Wrong password')->withInput();
}
if($User->activated == 0)
{
return redirect()->back()->with('emailError', 'Your account is blocked.')->withInput();
}
Auth::login($User, true);
return redirect()->route("user.home");
}
}

login.blade.php

<form method="POST" action="{{ route("login") }}">
@csrf
<div class="form-group">
<label for="inputEmail">Mail adress:</label>
<input type="email" name="mail" class="form-control" id="inputEmail" aria-describedby="emailHelp" placeholder="Your mail" value="{{ old("mail") }}">
@if (Session::has('emailError'))
<div id="phoneError" class="formError row fg-align-items-center" style="margin-top:5px;">
<i class="fas fa-exclamation-triangle"></i>
<span class="errorText">{{ Session::get("emailError") }}</span>
</div>
@endif
</div>
<div class="form-group">
<label for="inputNumber" style="margin-top:15px;">Password:</label>
<input type="password" name="password" class="form-control" id="inlineFormInputGroupUsername" placeholder="*****">
@if (Session::has('passwordError'))
<div id="phoneError" class="formError row fg-align-items-center" style="margin-top:5px;">
<i class="fas fa-exclamation-triangle"></i>
<span class="errorText">{{ Session::get("passwordError") }}</span>
</div>
@endif
</div>
<div class="row form-group fg-justify-content-center">
<button type="submit" class="btn btn-primary" style="margin-top:15px;width:120px;">Log in</button>
<a href="{{ route("register") }}"><button type="button" class="btn btn-primary" style="margin-top:15px;width:120px;margin-left:20px;">New here?</button></a>
</div>
</form>

web.php(Routes)

Route::get('/login', [AppHttpControllersLoginController::class, 'login'])->name('login')->middleware('guest');
Route::post('/login', [AppHttpControllersLoginController::class, 'loginPost'])->name('login')->middleware('guest');

故障的原因是什么?

前段时间发生在我身上。尝试将web中间件添加到您的路由,如果我没有错,没有此中间件的路由不能与会话一起工作,并且您从控制器发送的错误和其他数据将与会话一起传递。

Route::get('/login', [AppHttpControllersLoginController::class, 'login'])->name('login')->middleware(['guest', 'web']);
Route::post('/login', [AppHttpControllersLoginController::class, 'loginPost'])->name('login')->middleware(['guest', 'web']);

最新更新