我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?
Posted
技术标签:
【中文标题】我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?【英文标题】:Can I restore the input field values after validation through custom request objects in Laravel 5.1? 【发布时间】:2015-09-27 10:32:47 【问题描述】:假设我有一个简单的联系表。
<form action="/message" method="post">
!! csrf_field() !!
<div class="form-group">
<label>Name: </label>
<input type="text" name="name" class="form-control">
</div>
<div class="form-group">
<label>Email: </label>
<input type="email" name="email" class="form-control">
</div>
<div class="form-group">
<label>Your Message: </label>
<textarea name="message" class="form-control"></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary">Submit Message</button>
</div>
</form>
这是我处理该请求的控制器:
public function sendMessage(ContactRequest $request)
dd($request->all());
请注意,我正在注入 ContactRequest
对象,因此验证工作正常。
问题
如何恢复联系表单中的旧输入值?这样用户就不必重新填写所有字段。
【问题讨论】:
是验证正确后还是失败后 你明白了 :) @GideonAppoh! 仍然没有回答我的问题,是验证通过还是失败 【参考方案1】:如果 ContactRequest 验证失败,您将被重定向到包含错误和旧输入的表单。
所以只需在刀片文件中使用 old('field') 。
您的代码示例:
<form action="/message" method="post">
!! csrf_field() !!
<div class="form-group">
<label>Name: </label>
<input type="text" name="name" value=" old('name') " class="form-control">
</div>
<div class="form-group">
<label>Email: </label>
<input type="email" name="email" value=" old('email') " class="form-control">
</div>
<div class="form-group">
<label>Your Message: </label>
<textarea name="message" class="form-control"> old('message') "</textarea>
</div>
<div class="form-group">
<button class="btn btn-primary">Submit Message</button>
</div>
【讨论】:
完美!非常感谢:) 没问题。很高兴它有帮助。 :)【参考方案2】:您可以使用“旧输入法”:
$request->flash(); //to put the posted data to session
和
$username = $request->old('username'); //to get the values you previously stored
如果您正在执行重定向 8back 到您的表单),那么您可以通过这种方式闪烁它:
return redirect('form')->withInput();
以这种方式在刀片模板中获取旧值更加容易:
old('username')
更多关于“老输入法”的内容,请见here
【讨论】:
以上是关于我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?的主要内容,如果未能解决你的问题,请参考以下文章