如何在 Laravel 中使用旧输入重定向?

Posted

技术标签:

【中文标题】如何在 Laravel 中使用旧输入重定向?【英文标题】:How can I redirect with old input in Laravel? 【发布时间】:2015-07-12 05:08:29 【问题描述】:

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

错误消息 和旧输入。


控制器

// 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 中完成这样的事情最有效的方法是什么?

【问题讨论】:

【参考方案1】:

试试这个

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

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

【讨论】:

【参考方案2】:

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

在验证返回中插入一个GET 请求以获取一些以前的数据:

   // 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
    

【讨论】:

【参考方案3】:

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

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

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

&lt;input type="text" ... value=" old('username') " ... &gt;.

如docs 中所述,在刀片视图中更方便。


控制器中有几种可能性:

而不是 -&gt;withInput(Request::except('password'))

做:

a) Input::flash();

或:

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

并使用以下命令重定向到视图:

a) -&gt;withInput(Input::except('password'));

分别。与:

b) -&gt;withInput();

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

【讨论】:

您的解决方案对我有用。我现在可以显示我的旧输入。非常感谢。 请起飞Request::flash();我不需要这样做。 很高兴我能帮上忙。是的,因为Request::except('password') 已经做到了。 old() 也是全局的,不需要使用 Request::old('username')。只需执行 value=" old('username') " Input::flash() 很酷,当您使用“请求 POST 路由后重定向到 GET 路由的名称是什么 - 再次 HTTP 模式?”啊PRG模式【参考方案4】:

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

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

【讨论】:

这行不通!我试过&lt;input type="text" class="form-control" id="username" name="username" placeholder="Enter Username" required value=" Input::get ('username', '') " &gt;,但似乎什么都没有。

以上是关于如何在 Laravel 中使用旧输入重定向?的主要内容,如果未能解决你的问题,请参考以下文章

在laravel中发布请求后如何重定向回上一页?

返回重定向()->动作('BookingController@index')laravel 8

Laravel - 以 .php 结尾的重定向捕获/重定向 URL

如何将客人重定向到登录页面,在laravel 5.2登录后重定向回来[关闭]

Laravel 模态表单重定向返回,输入不起作用

Laravel 表单请求动态字段在重定向时消失