Laravel4、ルートのプレースフォルダー拘束を一度に指定する

タグ: Laravel4  

(追記:この方法は公式ドキュメントに乗りました。正式な方法として安心して利用できます。)

グレートTipsを見つけました。まだ、試していませんが… :D

Laravelでは、ルート定義にプレースフォルダーを使用できます。(他のフレームワークでも、たいてい出来ます。)

Route::get('posts/{id}', 'PostController@getPost')->where('id', '\d+');
...

人だけならともかく、ルート全部に付けるのは面倒です。そこで、パターンを使えるというお話。

Route::pattern('id', '\d+');
Route::get('posts/{id}', 'PostController@getPost');
...

これでルートの中のidが全部、整数で拘束されるということです。例えばidea/thinkというようなidを含んだルートでもうまく動くかどうかは、まだチェックしていません。

リソースフルルートでも、このTipは使用出来るそうです。

Route::pattern('posts', '\d+');
Route::resource('posts', 'PostController');