LaravelのFormで確認画面にRedirectしたときに、入力した値を引き継ぐ方法をメモ。
サンプルコード
入力画面(/form)と確認画面(/form/confirm)を作成します。
app\Http\routes.php
// 入力画面
Route::get('/form', 'FormController@getIndex');
Route::post('/form', 'FormController@postIndex');
// 確認画面
Route::get('/form/confirm', 'FormController@getConfirm');
app\Http\Controllers\FormController.php
確認画面へのリダイレクトにwithInput()を付けて、確認画面でSession::get(‘_old_input’)でpostした内容を取得します。
<?php
namespace App\Http\Controllers;
use Request;
use Redirect;
use Session;
class FormController extends Controller
{
// 入力画面
public function getIndex()
{
return view('form.index');
}
// 入力画面post時
public function postIndex()
{
// postデータ取得
$data = Request::all();
// エラーチェックなどの処理
// 確認画面へリダイレクト
return redirect('/form/confirm')->withInput();
}
// 確認画面
public function getConfirm()
{
// post内容を取得
$postdata = Session::get('_old_input');
return view('form.confirm', compact('postdata'));
}
}
resources\views\form\index.blade.php
{!! Form::open() !!}
<div class="form-group">
<div class="form-key">
{!! Form::label('name', '名前:') !!}
</div>
<div class="form-value">
{!! Form::text('name', null) !!}
</div>
</div>
<div class="form-group">
<div class="form-key">
{!! Form::label('birthday', '誕生日:') !!}
</div>
<div class="form-value">
{!! Form::text('birthday', null) !!}
</div>
</div>
<div class="form-group">
<div class="form-key">
{!! Form::label('age', '年齢:') !!}
</div>
<div class="form-value">
{!! Form::text('age', null) !!}
</div>
</div>
<div>
{!! Form::submit('送信') !!}
</div>
{!! Form::close() !!}
resources\views\form\confirm.blade.php
postした内容は$postdataに入っています。
<div class="form-group">
<div class="form-key">名前</div>
<div class="form-value">
{{$postdata['name']}}
</div>
</div>
<div class="form-group">
<div class="form-key">誕生日</div>
<div class="form-value">
{{$postdata['birthday']}}
</div>
</div>
<div class="form-group">
<div class="form-key">年齢</div>
<div class="form-value">
{{$postdata['age']}}
</div>
</div>
入力画面で以下のように入力後、送信してみます。

確認画面で以下のように表示できました。

注意点としては、postしたデータではなく一時的なセッションデータを使用しているだけなので、リロードをするとデータは消えます。

【参考サイト】
コメントが承認されるまで時間がかかります。