14

假设我有一个简单的联系表格。

<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对象,因此验证工作正常。

问题

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

4

2 回答 2

22

如果 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>

于 2015-07-09T07:54:04.473 回答
5

您可以使用“旧输入法”:

$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') }}

有关“旧输入”方式的更多信息,请参见此处

于 2015-07-09T07:41:48.857 回答