Fippiyのプログラム学習内容アウトプットBlog

日々の学習内容をアウトプットして振り返りを実施する。

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のネストでも便利だとおもってましたが、ここまでカスタマイズできるのはいいですねぇと思ったので、感動を忘れないうちにテキスト化しました。