前 チュートリアル RestコントローラとHybridコントローラ

次 チュートリアル モジュールとは

 

おはようございます。ゆう☆きんです。

今回はルーティングについて説明したいと思います。

FuelPHPでは fuel/app/config/routes.php を編集することでルーティング設定が行えます。

では、どのように編集すればいいのか見て行きましょう。

※ルーティングについての説明はURLを多用し、非常にめんどいので http://localhost/fuelphp ではなく http://example/ とします。

 

基本的なルーティング

この場合、 http://example/user/login ではなく http://example/login でアクセスできるようになります。

 

予約済みのルート

fuel/app/config/routes.php を見て下さい。

_root_ と _404_ が設定されていますが、これはFuelPHPであらかじめ定義されている特殊なルートです。

_root_ は http://example/ にアクセスしたときにルートです。

つまりサイトのトップページです。

_404_ は コントローラやメソッドがなかったときのルートです。つまり 404 Not Found 用のルートです。

 

正規表現によるルーティング

ルーティング設定では正規表現も使えます。正規表現の説明は省きます。

また正規表現以外にも、以下のようなものが使えます。

文字列 意味 実際の正規表現
:any URIの任意の部分にマッチ .+
:segment URIの1つのセグメントにマッチ [^/]*
:num 数字にマッチ [[:digit:]]+
:alpha 文字にマッチ [[:alpha:]]+
:alnum 文字と数字にマッチ [[:alnum:]]+

これだけ書くとちょっと意味わかんないんでサンプル。

この場合、 http://example/yugi/hitode で(1)にルーティングされます。

ルーティング処理は上から順に実行されます。

なので、 http://example/yugi/judai でも(2)ではなく(1)にルーティングされるので注意です。

http://example/haou/judai の場合は(2)に、 http;//example/123/yusei の場合は(3)にそれぞれルーティングされます。

 

ここからは高度なルーティングについて説明します。

名前付きパラメータ

名前付きパラメータとは、URIのセグメントに名前を付けるものです。

パラメータは : (コロン)を付けることで表せます。また、パラメータ名に数字を使うことができません。

というわけでサンプル。

例えば、 http://example/cal/1988/12/26 で(1)にルーティングされます。

この際、コントローラでは $this->param(‘year’); $this->param(‘month’); $this->param(‘day’); を使って各パラメータの数値を取得できます。

http://example/cal/2013 の場合は(4)になり、 $this->param(‘year’); のみ使用可能になるという感じです。

ここで注意ですが、セグメントの多い順から設定しないと http://example/2013/01/18 で cal/year にマッチしてしまう場合があるので、注意してください。

あ、ちなみに最初の日付は私の誕生日です。祝ってくれてもいいんですよ?

 

HTTPメソッドの使用

サンプル。

http://example/sample/abc にGETでアクセスすれば http://example/data/get/abc にルーティングされ、

http://example/sample/abc にPOSTでアクセスすれば http://example/data/post/abc にルーティングされます。

つまりそういうことです。

名前付きルート

サンプル。

この場合、 http://example/yukin/index にアクセスすると http://example/yukin/index にルートされます。

そして、そのルートに対して yukin という名前を付けていることになります。

これで何が出来るかというと、 Router::get(‘ルート名’); でURLを生成できるようになるので、下記のようなことが可能です。

Html::anchor とはリンクを生成するメソッドです。

第1引数でURLを指定し、第2引数でリンク名を指定します。

この場合、 Router::get(‘yukin’) で生成したURLを渡してるわけです。

このようにすることが可能ですので、例えば rasta/yukin から rasta/member/yukin にしたいなぁとなったとき、

ルーティング設定だけ更新すればいいので、ビューを弄る必要がありません。

同じURLを複数のビューでリンクするとき、複数のビューを直す手間が省けます。

名前付きルートを使用するときの注意ですが、正規表現や名前付きパラメータが使用出来ません。※現在 FuelPHP 1.2

 

以上でルーティング設定の説明を終わります。

コントローラ名/メソッド名で生成されるURLだけでは限界があるので、是非活用して下さい。

では、おやすみなさい。