0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[初心者向け] laravel ルーティング

Posted at

#ルーティング
アクセスしたアドレスを元に処理を割り振ること。

phpのときはwebappっていうフォルダの中にhello.phpファイルを用意すれば、http:〇〇_webapp/hello.phpでアクセスできましたが、
laravelでは特定のアドレスにアクセスすると、そのアドレスに割り当てられたプログラムが実行されます。
このように「〇〇というアドレスにアクセスしたら、✖️✖️という処理を呼び出す」
という関連付けを行っている機能。

routesフォルダにあるweb.phpを開きます。

web.php
<?php
Route::get('/', function () {
    return view('welcome');
});

これは、laravelのあの白いページを表示させる処理です。

###ルートの情報の基本(GETアクセス)
Route::get(アドレス, 関数など);
getメソッドでアドレスと処理を割り当てる
第一引数:アドレス
第二引数:アドレスによって呼び出される処理(関数、コントローラーなど)

では、web.phpをみていきましょう。
第一引数は'/'でトップページを表していて、
第二引数は関数を指定しています。
内部では、returnで返り値を指定。返される値が、そのアドレスにアクセスした時に表示される内容。
view関数を使うことで「views」フォルダのテンプレートファイルを使用できる。
(viewsファイルはresourcesフォルダにあります)

では、welcome.blade.phpをみていきましょう。

スクリーンショット 2020-03-28 13.15.18.png

laravelのところなどを書き換えてみるとブラウザに反映されているのが分かります。
@で始まる文はHTMLでもPHPでもなく、Bladeというlaravelのソースコードです。
「view」フォルダの中にテンプレートファイルが用意されそれをview関数で読み込んでいます。

##HTMLを出力する
次は実際に動かしてみましょう
routesフォルダのweb.phpを開いて以下を追加してください

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にアクセスをすると
スクリーンショット 2020-03-30 14.24.57.png
となれば成功です。

returnでHTMLのコードを直接渡すことで、そのソースコードがWebブラウザへと送られているのが分かります。

##ルートパラメータ
Route::get('〇〇/{パラメータ}', function($受け取る引数){・・・});
getの第一引数に{パラメータ}とパラメータを指定し、関数に引数を用意することで、アクセスしたアドレスからパラメータを取り出せる。

web.php
<?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;
});
スクリーンショット 2020-03-30 15.17.10.png

今回はlocalhost:8000/hello/の後にaaaaaと入力しました。
そうすると$msgにパラメータが代入され、表示されています。

先ほどのは必須パラメータといいパラメータを指定しないとエラーになります。
パラメーターをつけなくてもアクセスできるようにするには、任意パラメータを使いましょう。

web.php
<?php
Route::get('hello/{msg?}',function($msg='no massage.'){ ・・・・

とパラメータに「?」を付け、$msgに初期値を与えるとパラメータがなくてもアクセスできます。
スクリーンショット 2020-03-30 15.24.59.png

となれば成功です。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?