如何在 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 所指出的,您可以简单地这样做
<input type="text" ... value=" old('username') " ... >
.
如docs 中所述,在刀片视图中更方便。
控制器中有几种可能性:
而不是
->withInput(Request::except('password'))
做:
a) Input::flash();
或:
b) Input::flashExcept('password');
并使用以下命令重定向到视图:
a) ->withInput(Input::except('password'));
分别。与:
b) ->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', '') "
【讨论】:
这行不通!我试过<input type="text" class="form-control" id="username" name="username" placeholder="Enter Username" required value=" Input::get ('username', '') " >
,但似乎什么都没有。以上是关于如何在 Laravel 中使用旧输入重定向?的主要内容,如果未能解决你的问题,请参考以下文章
返回重定向()->动作('BookingController@index')laravel 8
Laravel - 以 .php 结尾的重定向捕获/重定向 URL