#はじめに
現在Laravelについて学習しています。
その学習の履歴として今回はルーティングについてまとめました。
ざっくりとまとめているので、大枠を掴むためや復習のために見ていただけると幸いです。
#ルーティングについて
今回はHTTPメソッドgetについてまとめます。
全部で9種類です。
ルーティングは下記の形式です。
Route::get('URL', '処理');
処理がクロージャとアクションの場合に分けて説明します
クロージャとはfunction(引数)
のことで無名関数という意味です。
アクションとはMVCのコントローラに含まれるものです。
クロージャの場合は6種類で、アクションの場合は3種類です。
#クロージャーの場合
処理がクロージャの場合について解説します
##1. URLからテンプレートをレンダリング
URLからテンプレートにレンダリングする場合について解説します。
Route::get('/', function () {
return view('welcome');
});
/
にアクセスすると
view関数によりresources/views/welcome.blade.php
をレンダリングする
##2. URLからHTMLを直書き
レンダリングするだけでなくHTMLのソースコードを直書きすることもできます。
Route::get('hello', function () {
return '<html><body><h1>Hello</h1></body></html>';
});
/hello
にアクセスすると
<html><body><h1>Hello</h1></body></html>
を表示します
##3. 返すHTMLを変数として扱う(ヒアドキュメント)
上記の直書きの場合、HTMLが長くなるとソースが見にくくなります。
変数に代入して、見やすくしましょう
$html = <<<EOF
<html><body><h1>Hello</h1></body></html>
EOF;
Route::get(‘hello‘, function () use ($html){
return $html;
});
/hello
にアクセスすると、
$html
を表示します。
<<<EOF
~~
EOF;
~~
の部分を変数に代入できるようにするために、EOFで挟みます。
##4. URLにパラメータを挿入する
URLにルートパラメータを記載する方法を説明します。
Route::get('hello/{msg}', function ($msg) {
$html = <<<EOF
<html>
<body>
<h1>Hello</h1>
<p>{$msg}</p>
</body>
</html>
EOF;
return $html;
});
ルートパラメータに$msg
を指定します。
##5. ルートパラメータを2種類にする場合
ルートパラメータを2種類にする場合について説明します。
Route::get('hello/{msg}/{pass}', function ($msg,$pass) {
});
URLの部分にパラメータを記述し、処理の部分に引数にルートパラメータを設定しましょう。
##6. パラメタの入力を任意にする場合
上記の記述方法だとルートパラメータが必須とになります。
そのため、任意のパラメータにする方法を説明します。
Route::get('hello/{msg?}', function ($msg='no_message') {
});
注意する部分は二つです。
- URL部分のルートパラメータに?をつける。
- 処理の引数の部分に初期値を設定する。
#コントローラの場合
まず、コントローラを作成
php artisan make::controller HelloController
次に、コントローラにアクションを追加する
public function index(){
Return <<<EOF
<html>
<body>
<h1>Hello</h1>
if (count($msg)>0){
<p>{$msg}</p>
}
</body>
</html>
EOF;
}
##1. ルーティングでアクションを指定する
処理をアクションに指定しましょう
Route::get(‘hello’, ‘HelloController@index’);
/hello
にアクセスするとHelloController
のindex
アクションに飛びます
##2. ルートパラメータの利用
ルートパラメータを設定します。
設定のやり方は上で説明したものと同じです。
入力を任意にするために?
をつけています。
Route::get(‘hello/{msg?}’, ‘HelloController@index’);
public function index($id= ‘noname’, $pass=‘unknown’){}
##3. シングルアクションコントローラ
シングルアクションコントローラ(1つのアクションしかないコントローラ)の場合について説明します。
Route::get{'hello', 'HelloController'}
上記の場合はアクション名の指定はいりません。
public function __invoke() {}
コントローラが少しだけ特殊です。
__invoke()
が必要です。
以上で基本的なルーティングの説明は終わります。
疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!