迷い人

日々勉強。勉強の先に何か見つかるといいなぁ

ルート→コントローラ→ビューの理解

Laravelの青本を進めてます。

 

ひとまずルート→コントローラ→ビューの理解を確認するために

 

http://localhost:8000/clcu/5

 

って入力すると画面に「25」が表示される簡単なWebアプリを作ってみました。

 

ルートの記述

Route::get('/calc/{num?}', 'HelloController@calc');

 

{num?}の部分が任意でパラメータを受け取れるようにしています。任意なので、http://localhost/calcuでもエラーとならずに動きます。

 

HelloController@calcの部分はHelloコントローラーのcalcアクションに記述してあることを実行するという意味です。

 

コントローラー名がHelloなのは、青本で作ったコントローラーを流用しているから。

 

コントローラの記述

  public function calc($num='zero')
  {
    if (is_numeric($num)){
      $data = [ 'kekka' => $num*$num];
    } else {
      $data = [ 'kekka' => '数値にしてね'];
    }

    return view('hello.calculation', $data);
    
  }

 

calcアクションの記述です。

 

$num='zero'の部分は、URLでパラメータが指定されなかった時は文字列のzeroを入力するようにしています。

 

is_numericでパラメータに数値が入っているか評価しています。

例えばhttp://localhost/calc/sevenだと、$numにはsevenという文字列が入るので、elseの命令が実行されることになります。

 

view関数で、viewフォルダの中のhelloフォルダに格納されているcalculation.blade.phpを読み込んで、その内容を返します。

 

ちなみにview関数の戻り値は正確にはResponseインスタンスなんですが、詳細は割愛。

 

ビューの記述

<html>
    <head>
        <title>計算</title>
    </head>
    <body>
        <p>計算結果</p>
        {{$kekka}}
    </body>
</html>

 

計算結果を画面に表示させます。

計算結果は{{$kekka}}の部分です。

 

まとめ

・ルートでWebブラウザに入力するURLからコントローラとアクションを特定

・URLの中のパラメータもアクションに渡す

・アクションは渡されたパラメータから計算処理を実施し、ビューに渡す

・ビューは結果を表示する

 

参考

ルート→コントローラ→ビューの流れについては別記事でも書いているので参考にしてください。

 

oyaoya1123.hatenablog.com