如何使用 Laravel 中的旧输入进行重定向?

How can I redirect with old input in Laravel?

我有一个登录模式。当用户登录未通过身份验证时,我想重定向回此模式:


控制器

// if Auth Fail 
return Redirect::to('/')
                ->with('error','Username/Password Wrong')
                ->withInput(Request::except('password'))
                ->withErrors($validator);

表格

{!! Form::open(array('url' => '/', 'class' => 'login-form')) !!}

  <div class="form-group">
    <label for="username">Username</label>
    <input type="text" class="form-control"  id="username" name="username" placeholder="Enter Username" required>
  </div>
  <div class="form-group">
    <label for="password">Password</label>
    <input type="password" class="form-control" id="password" name="password" placeholder="Enter Password" required>
  </div>
  <button type="submit" class="btn btn-primary">Login</button>

{!! Form::close() !!}

正如您在我的图片中看到的那样,似乎显示了错误消息,但似乎没有填充用户名的旧输入。

有人可以纠正我吗? 我忘记做任何事了吗? 在 Laravel 中完成这样的事情最有效的方法是什么?

您缺少输入元素上的值...

value="{{ Input::get ('username', '') }}"

您可以像这样访问最后的输入:

$username = Request::old('username');

正如 @Arian Acosta 所指出的,你可以简单地做

<input type="text" ... value="{{ old('username') }}" ... >.

docs 中所述,在 blade 视图中更方便。


控制器有几种可能性:

而不是 ->withInput(Request::except('password'))

做:

a) Input::flash();

或:

b) Input::flashExcept('password');

并重定向到视图:

a) ->withInput(Input::except('password'));

分别。有:

b) ->withInput();

进一步阅读 docs about Old Input...

对于我的项目,我需要另一种方式:

在验证中推送 GET 请求 return 以获取一些以前的数据:

   // if the validator fails, redirect back to the form
    if ($validator->fails()) {
        //let's send some data back (Orlando,Florida):
        return Redirect::to('auth/register?city=Orlando&State=Florida')
            ->withErrors($validator)


    }else{
     //validation success
    }

试试这个

 return redirect()->back()
       ->with('error','username is invalid')
       ->withInput();

确保您的输入元素中有 value="{{ old('username') }}"