我可以通过 Laravel 5.1 中的自定义请求对象验证后恢复输入字段值吗?
Can I restore the input field values after validation through custom request objects in Laravel 5.1?
假设我有一个简单的联系表。
<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
对象,因此验证工作正常。
问题
如何恢复联系表中的旧输入值?这样用户就不必重新填写所有字段。
你可以使用"old input"方法:
$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();
通过这种方式在 blade 模板中获取旧值更容易:
{{ old('username') }}
有关 "old input" 方法的更多信息,请参见 here
如果 ContactRequest 验证失败,您将被重定向到包含错误和旧输入的表单。
所以只需在 blade 文件中使用 {{ 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>
假设我有一个简单的联系表。
<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
对象,因此验证工作正常。
问题
如何恢复联系表中的旧输入值?这样用户就不必重新填写所有字段。
你可以使用"old input"方法:
$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();
通过这种方式在 blade 模板中获取旧值更容易:
{{ old('username') }}
有关 "old input" 方法的更多信息,请参见 here
如果 ContactRequest 验证失败,您将被重定向到包含错误和旧输入的表单。
所以只需在 blade 文件中使用 {{ 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>