簡単な連絡フォームがあるとしましょう。
<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
オブジェクトを挿入しているので、検証は完全に機能していることに注意してください。
お問い合わせフォームの古い入力値を復元するにはどうすればよいですか?そのため、ユーザーはすべてのフィールドに入力する必要がありません。
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>
「古い入力」方式を使用できます。
$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') }}
「古い入力」方法の詳細については、こちらをご覧ください ここ