猿问

使用会话在登录表单上显示错误的问题

我在 Laravel 中有登录表单,但在电子邮件和密码字段上显示错误时遇到问题。我制作了验证器,其中包含该错误消息,并将其放入会话中并在 GET /login 上重定向它。我需要有关如何从会话中读取这些值并将它们作为参数返回到 Blade 中的帮助,然后能够显示电子邮件和密码的这些错误消息。目前验证有效,但不显示任何消息,仅重定向回登录页面。任何帮助表示赞赏。这是我的代码。


网页.php


Route::post('/login', 'Auth\LoginController@login')->name('login');

登录控制器


public function showLoginForm(Request $request)

{

    $session = $request->session()->get('data');


    return view('auth.login', compact('session'));

}


public function login(Request $request)

{

    $rules = array(

        'email'    => 'required|email', 

        'password' => 'required|alphaNum|min:3'

    );


    $validator = Validator::make($request->all(), $rules);


    if ($validator->fails()) {

        $request->session()->put('data', $request->input());

        return redirect()->intended('login')

            ->withErrors($validator)

            ->withInput($request->session()->put('data', $request->input()));

    } else {

        $userData = array(

            'email'     => $request->get('email'),

            'password'  => $request->get('password')

        );

    }

    

    if (Auth::attempt($userData)) {

        return redirect()->intended('dashboard');

    } else {        

        redirect()->intended('login');

    }

}

隔江千里
浏览 144回答 1
1回答

慕的地8271018

你必须打电话->withErrors($validator->errors())。这将返回正确的MessageBag. 否则你将返回一个Validator实例。之后您可以根据需要使用$errors变量或标签。@error@edit 插入inteded()使用route()或back().
随时随地看视频慕课网APP
我要回答