Laravel点击链接后如何在请求中保留登录表单数据?

时间:2017-04-14 02:21:58

标签: php laravel laravel-5 http-post

我在Laravel的登录表单中有这种情况,我会检查用户帐户是否处于活动状态。如果用户未处于活动状态('active' = false)我会退出该用户(我不允许他登录)并显示一条消息,其中包含重新发送激活链接的链接,所以此链接通过在请求中查找表单的电子邮件来获取处理重新发送的控制器,但是我收到此错误的电子邮件未找到,因为在请求中,电子邮件未被包含在内!

然后生成的查询是:

"select * from用户where发送电子邮件is null",因为电子邮件未保留在请求中。

知道我做错了什么?

如果我dd($request)正好在登录页面中,我确实看到了email属性。但是,当点击重新发送链接时,为什么它不包含在请求中?

LoginController.php

protected function authenticated(Request $request, $user)
    {
        if(!$user->active){
            Auth::logout();

            dd($request->email); /*Here I do see the email*/

           /*But here comes the problem, the email is not being kept in the request. Why???????????*/
          return redirect('/login')->with('error','Please activate your account. <a href="'.route('auth.activate.resend').'"><strong>Resend</strong></a>');
        }
    }
登录后

dd($ request)并active = 0

+request: ParameterBag {#39 ▼ #parameters: array:3 [▼ "_token" => "o8t6GYwMmW6SfjfX732weghwejSBzOdWpcMf8HOL" "email" => "me@somewhere.com" "password" => "secreto" ] }

此时,我会显示重新发送链接,然后显示

点击resend按钮后

dd($ request)

+request: ParameterBag {#46 ▼ #parameters: [] }

我看到参数部分现在是空的:(

我也尝试过,在LoginController.php中$request->request->add(['email' => $user->email]);,但它也不起作用。

然后如何将电子邮件数据保存在请求中,以便我可以从另一个控制器中的单击链接中使用它?还有其他解决方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用withInput的{​​{1}}方法,如下所示:

Request

您可以查看以下内容: https://laravel.com/docs/4.2/requests#old-input