【问题标题】:Laravel 8 - back()->withInput() is emptyLaravel 8 - back()->withInput() 为空
【发布时间】:2021-09-27 17:36:44
【问题描述】:

如果我在控制器中执行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(路由)

Route::get('/login', [App\Http\Controllers\LoginController::class, 'login'])->name('login')->middleware('guest');
Route::post('/login', [App\Http\Controllers\LoginController::class, 'loginPost'])->name('login')->middleware('guest');

故障原因是什么?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这件事不久前发生在我身上。尝试将web 中间件添加到您的路由中,如果我没记错的话,没有此中间件的路由不适用于会话,并且您从控制器发送的错误和其他数据与会话一起传递.

    Route::get('/login', [App\Http\Controllers\LoginController::class, 'login'])->name('login')->middleware(['guest', 'web']);
    Route::post('/login', [App\Http\Controllers\LoginController::class, 'loginPost'])->name('login')->middleware(['guest', 'web']);
    

    【讨论】:

    • 不幸的是它没有区别..
    猜你喜欢
    • 2016-10-25
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2016-08-31
    • 2015-10-29
    • 2014-12-22
    相关资源
    最近更新 更多