Laravelでフォームで送信した値を取得する方法をいくつか試してみます。
Request::input()
送信した値を取得する場合、Request::input()を使用します。
routes.php
Route::controller('/contact', 'ContactController');
ContactController.php
ページアクセス時はindexを、フォーム送信時はconfirmを表示するようにします。
<?php
namespace App\Http\Controllers;
use Request;
class ContactController extends Controller
{
public function getIndex()
{
return view('contact.index');
}
public function postIndex()
{
// nameの値があるとき
if (Request::has('name')) {
$name = Request::input('name');
} else {
$name = '名無し';
}
$age = Request::input('age');
$gender = Request::input('gender');
$favorite = Request::input('favorite');
$body = Request::input('body');
// job自体がないときは第2引数が返される
$job = Request::input('job', '学生');
return view('contact.confirm', compact('name', 'age', 'gender', 'favorite', 'body', 'job'));
}
}
値があるかどうかを調べる場合はRequest::has()を使用します。
Request::input()に第2引数を指定すると、第1引数に指定したnameがない場合にその値を返します。
contact\index.blade.php
ページアクセス時に表示するビューです。
<form method="POST" action="/contact">
<dl>
<dt>名前</dt>
<dd><input type="text" name="name"></dd>
</dl>
<dl>
<dt>年齢</dt>
<dd>
<select name="age">
<option value="">-----</option>
<option value="15才">15才</option>
<option value="16才">16才</option>
<option value="17才">17才</option>
<option value="18才">18才</option>
</select>
</dd>
</dl>
<dl>
<dt>性別</dt>
<dd>
<input type="radio" name="gender" value="男性">男性
<input type="radio" name="gender" value="女性">女性
</dd>
</dl>
<dl>
<dt>好み</dt>
<dd>
<input type="checkbox" name="favorite[]" value="食べること">食べること
<input type="checkbox" name="favorite[]" value="猫">猫
<input type="checkbox" name="favorite[]" value="マヨネーズ">マヨネーズ
</dd>
</dl>
<dl>
<dt>内容</dt>
<dd><textarea name="body"></textarea></dd>
</dl>
<input type="submit" value="送信">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
以下のようなフォームになります。

contact\confirm.blade.php
フォーム送信後に表示するビューです。
<dl>
<dt>名前</dt>
<dd>{{$name}}</dd>
</dl>
<dl>
<dt>年齢</dt>
<dd>{{$age}}</dd>
</dl>
<dl>
<dt>性別</dt>
<dd>{{$gender}}</dd>
</dl>
<dl>
<dt>好み</dt>
<dd>
@for ($i = 0; $i < count($favorite); $i++)
{{$favorite[$i]}}
@endfor
</dd>
</dl>
<dl>
<dt>職業</dt>
<dd>{{$job}}</dd>
</dl>
<dl>
<dt>内容</dt>
<dd>{{$body}}</dd>
</dl>
$favoriteだけcheckboxで値が配列になっているので、for文で回します。
送信テストすると以下のように取得ができました。

Request::all()
Request::all()はPOSTした内容をすべて取得できます。
ContactController.php
コントローラーを以下のように書き換えます。
フォーム送信時にallを表示するように変更しました。
<?php
namespace App\Http\Controllers;
use Request;
class ContactController extends Controller
{
public function getIndex()
{
return view('contact.index');
}
public function postIndex()
{
$all = Request::all();
return view('contact.all', compact('all'));
}
}
all.blade.php
フォーム送信後に表示するビューです。
配列で返ってくるのでvar_dump()で表示するようにしています。
var_dump($all);
以下のような値が表示されました。
array(6) { ["name"]=> string(13) "西川 葉子" ["age"]=> string(5) "16才" ["gender"]=> string(6) "女性" ["favorite"]=> array(1) { [0]=> string(15) "マヨネーズ" } ["body"]=> string(21) "パンの耳ですわ" ["_token"]=> string(40) "xo9RN8yG4V1wtxce8g7FClDAszrYH8uQm05zAKwh" }
Request::only()
Request::only()はPOSTした内容の一部を取得したいときに使用します。
PHP
コントローラーを以下のように書き換えます。
今回はname,age,bodyを取得するようにしました。
<?php
namespace App\Http\Controllers;
use Request;
class ContactController extends Controller
{
public function getIndex()
{
return view('contact.index');
}
public function postIndex()
{
$only = Request::only('name', 'age', 'body');
return view('contact.only', compact('only'));
}
}
フォーム送信時にonlyを表示するように変更しています。
contact\only.blade.php
配列で返ってくるのでforeachで回しています。
@foreach ($only as $key => $value)
<div>{{$key}}; {{$value}}</div>
@endforeach
以下のように表示されました。

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