【PHP】Laravel 学習メモ / 簡易アプリで流れを掴む１（表示まで）

###〜簡易アプリで流れを掴む１（表示まで）〜

PHPのフレームワークであるLaravelの流れを掴むために簡単なアプリを開発してみます。

２回に分けて実装していきます。
次回、
[【PHP】Laravel学習メモ / 簡易アプリで流れを掴む2(受け取ったデータを計算して完成まで](https://qiita.com/kota_sho/items/e81397df99df3b884c6b)

##目標アプリ
入力した米ドルを日本円に換算する。


##開発環境：
PHP 7.1.23
Laravel Framework 5.8.35
Composer version 1.9.0

開発環境が一通り終わっているという状態からのスタートとします。

###公式ドキュメント　
https://readouble.com/laravel/


##今回の目標
以下の画面まで表示させる
<img width="1072" alt="スクリーンショット 2019-11-04 13.33.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496614/b6a97393-c14b-5492-0d49-9dc2ff2c931e.png">



#プロジェクトの開始

cal_numberというプロジェクトファイルを作ります（名前は適当につけました）

コマンド

```
$ composer create-project --prefer-dist laravel/laravel cal_number
```

ディレクトリまで移動

```
$ cd cal_number
```

サーバーを立ち上げる

```
$ php artisan serve
//Laravel development server started: <http://127.0.0.1:8000>
```

#ルーティング

ファイル： routes/web.php

Laravelトップページを表示するためにデフォルトで下記の様に書かれています。

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

それを表示するビューファイル: views / welcome.blade.php

```html:views/welcome.blade.php

//〜略〜
<div class="content">
                <div class="title m-b-md">
                    Laravel
                </div>
//〜略〜
```
サーバーを立ち上げ、トップページにアクセスしてみます。

コマンド

```
$ php artisan serve
```
トップページURL： localhost:8000
(プロジェクトを作って、サーバーを立ち上げたときの8000という数字はポート番号であり、その通り8000にアクセスします）
[ポート番号とは](http://e-words.jp/w/%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7.html)

以下の様に表示されます
<img width="1061" alt="スクリーンショット 2019-11-04 11.25.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496614/c7ed13e9-23b1-369b-4ea5-64065ae85d30.png">

試しにLaravel　→　Laravel2に変えてみます。

```html:views/welcome.blade.php

//〜略〜
<div class="content">
                <div class="title m-b-md">
                    Laravel２
                </div>
//〜略〜
```

<img width="1051" alt="スクリーンショット 2019-11-04 11.28.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496614/b9d31d22-412c-7e5c-39f5-b7377939e138.png">

では、実装していきます。

Route::getはgetアクションを示します。
'/calculate'はURLのアクセス先。
'CalculateController@getcalc'はCalculateControllerのgetcalcを指します。（順番が逆になってしまいましたが、コントローラーは後ほどこの名前で作成することにします）。

リソースコントローラーにより処理されるアクションについては下記で確認できます。
[Laravel公式ドキュメント コントローラー](https://readouble.com/laravel/5.4/ja/controllers.html)

```php:routes/web.php
Route::get('/calculate', 'CalculateController@getcalc');
```

これで、
localhost:8000/calculateにアクセスすると、CalculationControllerのgetcalcアクションに処理の指示が渡ります。

#コントローラー
ルーティングでは、CalculateControllerという名前のコントローラーにに処理してもらうことにしてましたので、そのコントローラーを作ります。

コマンド

```
php artisan make:controller CalculateController
```
これでCalculateController.phpファイルが作られました。

```php:app/Http/Controllers/calculateController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CalculateController extends Controller{
}
```

ルーティングでは
localhost:8000/calculateにアクセスするとCalculateControllerのgetcalcに何か処理をやってもらうことになってましたので、まず次項でビューを作り、その次にそのビューを表示する処理をこのコントローラーに書くことにします。


#ビュー

まず、ビューのディレクトリを作ってみます。

コマンド

```
mkdir resources/views/calculate
```

これでcalculateディレクトリが作られましたので、ビューファイルを作ります。
ビューファイルはcalculateディレクトリで右クリックしてNew Fileとかを選択すれば作れます。

```html:resources/views/calculate/num.blade.php
<html>
　　<head>
    　<title>計算アプリ</title>
　　</head>
　　<body>
   　 <h1>計算アプリです</h1>
　　</body>
</html>
```
次にこのビューをディスプレイに映してみます。
移すためにはコントローラーで処理を書く必要がありました。

#コントローラーに処理を書く

コントローラーに、「localhost:8000/calculateにアクセスしたらnum.blade.phpというビューファイルを表示させる」処理を書きます。

```php:app/Http/Controllers/calculateController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CalculateController extends Controller
{
  public function getCalc(Request $request){
    return view('calculate.num');
　　//calculateディレクトリのnum.blade.phpを表示する
  }
}
```

これでlocalhost/8000/calculateにアクセスすると
<img width="1072" alt="スクリーンショット 2019-11-04 13.33.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496614/04d7e612-f49b-a456-895d-32d8a784a18c.png">


無事表示されました。

#今回の処理の流れまとめ

・ルーティング（routes / web.php）で、「8000/calculateにアクセスするとCalculateControllerというコントローラーのgetCalcに処理をしてもらう」という設定を書く。

・コントローラーではルーティングから処理を依頼されたので、getcalc(){}の中に、処理したい内容を書く。今回は、「calculateディレクトリのnum.blade.phpを表示する」という処理。

・「8000/calculateにアクセスするとnum.blade.phpというビューファイルを表示する」準備が整ったので、表示したい内容を書く（今回は「計算アプリです」という一文のみ）。

・localhost:8000/calculateにアクセス

次回、
[【PHP】Laravel学習メモ / 簡易アプリで流れを掴む2(受け取ったデータを計算して完成まで](https://qiita.com/kota_sho/items/e81397df99df3b884c6b)