Laravelのルーティングを使ってみる

ルーティングの記述でよく使いそうな機能をいくつか試してみます。

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>

ページアクセス時

try-the-routing-of-laravel01

フォーム送信後

try-the-routing-of-laravel02

 

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;
});

try-the-routing-of-laravel03

ルートパラメータが必須でない場合、後ろに?をつけます。

routes.php

Route::get('item/{id?}', function ($id = null) {
    return '商品ID: ' . $id;
});

 

【参考サイト】

 

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

関連記事

コメントを残す

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

CAPTCHA


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

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930