我可以通过Laravel 5.1中的自定义请求对象验证后恢复输入字段值吗?

Hom*_*ien 13 php validation laravel 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>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器来处理该请求:

public function sendMessage(ContactRequest $request)
{
    dd($request->all());
}
Run Code Online (Sandbox Code Playgroud)

请注意,我正在注入ContactRequest对象,因此验证工作正常.

问题

如何在联系表单中恢复旧的输入值?这样用户就不必重新填充所有字段.

igs*_*013 19

如果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>
Run Code Online (Sandbox Code Playgroud)


MaG*_*tas 5

你可以使用"旧输入"方法:

$request->flash(); //to put the posted data to session
Run Code Online (Sandbox Code Playgroud)

和

$username = $request->old('username'); //to get the values you previously stored
Run Code Online (Sandbox Code Playgroud)

如果您正在重定向8back到您的表单),那么您可以这样闪烁:

return redirect('form')->withInput();
Run Code Online (Sandbox Code Playgroud)

通过这种方式获取刀片模板中的旧值更加容易:

{{ old('username') }}
Run Code Online (Sandbox Code Playgroud)

有关"旧输入"方式的更多信息,请点击此处