ルーティングの記述でよく使いそうな機能をいくつか試してみます。
Route::get() / Route::post()
route.phpで行っているルーティングは、Routeクラスを使って行います。
getメソッドはGETアクセスされた場合、postメソッドはPOSTアクセスされた場合になります。
PHP
Route::get(URL, 処理); Route::post(URL, 処理);
例えば、/sample/のURLにフォームを設置して、POSTした内容を同じページに表示するようにしてみます。
routes.php
/sample/にアクセスしたときに、SampleControllerの処理を行うようにします。
Route::get('/sample', 'SampleController@sampleGet');
Route::post('/sample', 'SampleController@samplePost');
SampleController.php
ページアクセス時(GET)は「名無し」を、POSTした後は送信されたnameをviewに渡します。
<?php
namespace App\Http\Controllers;
use Request;
class SampleController extends Controller
{
public function sampleGet()
{
$name = '名無し';
return view('sample.index', compact('name'));
}
public function samplePost()
{
$name = Request::input('name');
return view('sample.index', compact('name'));
}
}
sample\index.blade.php
フォームではnameを送信するようにして、コントローラーから受け取った値(name)が$nameに表示されます。
<p>{{$name}}さん こんにちは</p>
<form method="POST" action="./">
<input type="text" name="name">
<input type="submit" value="送信">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
ページアクセス時

フォーム送信後

Route::controller()
controllerメソッドはgetやpostなどをroute.phpで指定するのではなく、まとめてコントローラー内で割り当てることができます。
例えば、GETアクセスでindexにアクセスがあった場合、getIndex()というメソッドが呼び出されます。
PHP
Route::controller(URL, コントローラー名);
先ほどの例をcontrollerメソッドに変更してみます。
routes.php
Route::controller('/sample', 'SampleController');
SampleController.php
sampleGetとsamplePostをそれぞれgetIndexとpostIndexに変更しました。
<?php
namespace App\Http\Controllers;
use Request;
class SampleController extends Controller
{
public function getIndex()
{
$name = '名無し';
return view('sample.index', compact('name'));
}
public function postIndex()
{
$name = Request::input('name');
return view('sample.index', compact('name'));
}
}
ルートパラメータ
URLから何らかの情報を取得したい場合、ルートパラメータを使用します。
例えば、URL内に含まれる商品IDを取り出して使いたい場合などは以下のようにします。
routes.php
Route::get('item/{id}', function ($id) {
return '商品ID: ' . $id;
});
![]()
ルートパラメータが必須でない場合、後ろに?をつけます。
routes.php
Route::get('item/{id?}', function ($id = null) {
return '商品ID: ' . $id;
});
【参考サイト】
コメントが承認されるまで時間がかかります。