#ルーティング
アクセスしたアドレスを元に処理を割り振ること。
phpのときはwebappっていうフォルダの中にhello.phpファイルを用意すれば、http:〇〇_webapp/hello.phpでアクセスできましたが、
laravelでは特定のアドレスにアクセスすると、そのアドレスに割り当てられたプログラムが実行されます。
このように「〇〇というアドレスにアクセスしたら、✖️✖️という処理を呼び出す」
という関連付けを行っている機能。
routesフォルダにあるweb.phpを開きます。
<?php
Route::get('/', function () {
return view('welcome');
});
これは、laravelのあの白いページを表示させる処理です。
###ルートの情報の基本(GETアクセス)
Route::get(アドレス, 関数など);
getメソッドでアドレスと処理を割り当てる
第一引数:アドレス
第二引数:アドレスによって呼び出される処理(関数、コントローラーなど)
では、web.phpをみていきましょう。
第一引数は'/'でトップページを表していて、
第二引数は関数を指定しています。
内部では、returnで返り値を指定。返される値が、そのアドレスにアクセスした時に表示される内容。
view関数を使うことで「views」フォルダのテンプレートファイルを使用できる。
(viewsファイルはresourcesフォルダにあります)
では、welcome.blade.phpをみていきましょう。
laravelのところなどを書き換えてみるとブラウザに反映されているのが分かります。
@で始まる文はHTMLでもPHPでもなく、Bladeというlaravelのソースコードです。
「view」フォルダの中にテンプレートファイルが用意されそれをview関数で読み込んでいます。
##HTMLを出力する
次は実際に動かしてみましょう
routesフォルダのweb.phpを開いて以下を追加してください
<?php
Route::get('hello', function () {
return '<html><body><h1>Hello</h1><p>This is sample page.
</p></body></html>';
});
書いたら、htpp://localhost:8000/helloにアクセスをすると
となれば成功です。
returnでHTMLのコードを直接渡すことで、そのソースコードがWebブラウザへと送られているのが分かります。
##ルートパラメータ
Route::get('〇〇/{パラメータ}', function($受け取る引数){・・・});
getの第一引数に{パラメータ}とパラメータを指定し、関数に引数を用意することで、アクセスしたアドレスからパラメータを取り出せる。
<?php
Route::get('hello/{msg}',function($msg){
$html = <<<EOF
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello</h1>
<p>{$msg}</p>
<p>これはサンプルページで作ったページです。</p>
</body>
</html>
EOF;
return $html;
});
今回はlocalhost:8000/hello/の後にaaaaaと入力しました。
そうすると$msgにパラメータが代入され、表示されています。
先ほどのは必須パラメータといいパラメータを指定しないとエラーになります。
パラメーターをつけなくてもアクセスできるようにするには、任意パラメータを使いましょう。
<?php
Route::get('hello/{msg?}',function($msg='no massage.'){ ・・・・
とパラメータに「?」を付け、$msgに初期値を与えるとパラメータがなくてもアクセスできます。
となれば成功です。