Laravel開発、ルーティング汎用性を体感してカスタマイズ性に驚いたお話
Rubyの学習を主にしていた私ですが、他の言語も体感すべきとPHPを始めました。
(環境設定完了後の実質学習初日です)
Railsに相当するフレームワークもいろいろあるようですが、カスタマイズ性に優れるという話をみてLaravelを扱うことにしてみました。
そこでルーティング設定のしやすさがすばらしいと思ったお話。
Railsルーティングの記述
ルーティング
Railsでルーティング設定といえばコレ
get 'tweets' => 'tweets#index'
resources :tweets
こんな感じの記述。
で、ツイートに紐付くコメントというようなルートをセットしようと思うと。
resources :tweets do
resources :comment
end
こんな感じでネストさせると、ルーティングが
/tweets/id/comment/id
といった具合のルートに変化してくれる。
Laravelの記述
まず学んだこと
ルーティング・コントローラー・アクションの繋がりをまず学習しました。
コントローラー
public function index() {
処理記述
}
ルーティング
Route::get('hello', 'HelloController@index');
さらにここにビューファイルを作成することで、'localhost:8000/hello'にアクセスしてサイトが表示されると。
ここで、アドレスのhello以下にもたせるステータスの変化が気に入りました。
ルーティングカスタマイズ
ルーティングに任意パラメータを持たせることができる。
ルーティング
Route::get('hello/{id?}/{pass?}', 'HelloController@index');
{id?}とか{pass?}がその任意パラメータなくても動作する。
そして、パラメータを受け取る側の処理
コントローラー
public function index($id='noname', $pass='unknown') {
<html>
<body>
<ul>
<li>ID: {$id}</li>
<li>PASS: {$pass}</li>
</ul>
</body>
</html>
}
public function index()がindexアクションとなります。
$id,$passを指定することで、ルーティングに記載されたデータが受け取れる。
'localhost:8000/1/aaa'としてやると、HTMLのIDに1,PASSにaaaが反映される。
値がなかったら、index()に入ってるデフォルト文字がでると。
railsのネストでも便利だとおもってましたが、ここまでカスタマイズできるのはいいですねぇと思ったので、感動を忘れないうちにテキスト化しました。