Laravel体験記 | ルーティングとコントローラー
Laravel体験記 | ルーティングとコントローラー
青い書籍「Laravel入門」で学んでいく。
ルーティング
routes/web.phpをいじる。
たぶん、実際にはこんな使い方しないと思う。
実際にはコントローラーを割り当てるんじゃないかなぁと思う。
けど、コントローラーを仲介せずに直接viewを出力できるのは嫌いじゃない。(使う場面はあまりないだろうが)
Route::get('hello/{msg?}', function($msg="default message"){
$html = <<<EOF
<html>
<body>
<h1>Hello</h1>
<p>This is {$msg} page.</p>
</body></html>
EOF;
return $html;
});
コントローラーの作成
artisan(アーティザン)コマンドとやらを使ってコントローラーを作るらしい。
使わなくてもコントローラーは作れるらしい。
じゃあ使いたくないんだが、一応使ってみる。
php artisan make:controller HelloController
app/Http/Controllers/に、HelloController.phpが作られていた。
中身は、
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
//
}
こんくらいなら自分で書くわ!って純粋に思った。
なぜコマンドを用意したんだろう。
偉い人にしかわからないのかもしれない。
アクションの作成
HelloController.phpを編集してアクションを作る。
htmlを作って、returnするだけの例。
class HelloController extends Controller
{
public function index(){
$html = <<<EOF
<html>
<body>
<h1>INDEX ACTION</h1>
</body>
</html>
EOF;
return $html;
}
}
もちろんこれだけでは動かない。ルーティングの設定をしてない。
web.phpをもう一度開く。
Route::get('hello', 'HelloController@index');
これでURLとコントローラー、アクションの紐付け、ルーティングができた。
さっきまでは、ルーティングが直接htmlを返していたが、
これでコントローラー経由でhtmlを返すようになった。
URLパラメータ
アクションは指定できた。
じゃあパラメーターはどうするんだ?っていうのが次。
public function index($msg="default message"){
$html = <<<EOF
<html>
<body>
<h1>INDEX ACTION</h1>
<p>{$msg}</p>
</body>
</html>
EOF;
return $html;
}
これだけじゃやはりだめ。ルーティングもいじる。
Route::get('hello/{msg?}', 'HelloController@index');
まとめ
コントローラーとルーティングの紐付けがわかった。
けど疑問。
コントローラーごとにルーティングが必要なのはいいけど、アクションごとにもルーティングが必要なのだろうか?
もしかして、ルーティングが面倒だったらアクションの中でパラメータによって分岐しろってことなのか?
学習していくと晴れる疑問なのかもしれない。