LaravelのFormでRedirectしたときに値を引き継ぐ

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>

入力画面で以下のように入力後、送信してみます。

take-over-the-value-when-you-redirect-in-laravel-of-form01

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

take-over-the-value-when-you-redirect-in-laravel-of-form02

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

take-over-the-value-when-you-redirect-in-laravel-of-form03

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31