---
# System prepended metadata

title: ビューを表示できるようにしよう
tags: [WIP]

---

###### tags: `WIP`

# ビューを表示できるようにしよう
前章でアプリの基本的な設定を行いました。
本章ではコントローラとビューを作成し、ビューを表示できるようにするところまで解説します！
まずは、ビューの確認方法から順に学んでいきましょう！

## ローカルサーバー
開発環境でビューを確認するにはローカルサーバーを起動する必要があります。
ローカルサーバーは自分のPCをサーバーにすることをいいます。
何やら難しそうですが、ローカルサーバー野起動は非常に簡単で、ターミナル上で以下のコマンドを実行するだけです(blogディレクトリに移動してから実行してください)。
```
php artisan serve --8080
```
起動できたら以下の方法でローカルサーバーにアクセスしましょう！
![preview](https://i.imgur.com/N0d8mXy.gif)

ローカルサーバーを終了するときはターミナルウインドを選択した状態（ターミナルウィンドウ上でクリック）で「Ctrl + C」を押してください。
ターミナルウィンドウ自体を消してしまうと、次回からローカルサーバーが正常に立ち上がらなくなる恐れがあります。
![exit](https://i.imgur.com/v4AK6CG.gif)

## コントローラーを作成しよう
作成すると聞くとどうしてもファイルを手動で作成するイメージがあるかと思います。
Laravelでは基本的に手動でファイルを作成することはなく、コマンドでファイルを生成します。
```
php artisan make:controller コントローラー名
```

今回はBlogsコントローラーを作成したいので以下のコマンドを実行してください。
```
php artisan make:controller BlogsController
```

正常にコマンドが実行できたらblog/app/Http内にBlogsController.phpが作成されているか確認しましょう！

## ビューを作成しよう
コントローラーはコマンドで作成しましたが、ビューは手動で作成します。
blog/resources/views内にblogsというフォルダを作成してください。
Blogsコントローラーから呼び出されるビューは先ほど作成したフォルダ内に格納していくようにしましょう。
blog/resources/views/blogs内にindex.blade.phpを作成し、以下の内容を記述してください。
```htmlembedded=
<h1>Hello World</h1>
```
これでビューが準備できたので今度は表示できるようにしていきます！

## コントローラーからビューを呼び出せるようにしよう
これまでの工程でコントローラーとビューを作成することができました。
しかし、今のままではファイルをそれぞれ作成しただけで、
コントローラーを動かしてもビューを呼び出すことはできません。
なぜここでコントローラーとビューが関連するのかイメージができない人は、一度MVCの章に戻って復習しておきましょう。
それではBlogsController.phpを編集していきます。
```php=
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BlogsController extends Controller
{
    public function index(){
        return view("blogs.index");
    }
}
```
順に解説していきます。

`return view("blogs.index")`がビューを呼び出す処理です。

`public function index(){}`はBlogsコントローラー外から呼び出せるようにする記述です。

これでBlogsコントローラーからindex.blade.phpを呼び出せるようになりました！
しかし、まだこれだけではビューは表示されません。
次はルーティングでBlogsコントローラーの`public function index(){...}`を呼び出せるようにします。

## ルーティングを設定しよう
ルーティングでBlogsコントローラーのindexメソッドを呼び出せるようにするには、以下の定型文が必要です。
```php=
<?php
Route::get("末尾のアドレス", "コントローラー@メソッド名");
```
今回はURLの末尾が`/blogs`になった時にBlogsコントローラーのindexメソッドを実行するようにしたいので、
このような形になります。
```php=
<?php
Route::get("/blogs", "BlogsController@index");
```
blog/routes/web.phpの記述を全て削除し、上記の内容をweb.phpに書き写しましょう。

ローカルサーバーを起動してURLの末尾に`/blogs`を追加してみてください。
Hello Worldが表示されれば成功です！

今度は、URLの末尾を`/hello`に変更してみましょう。
すると、先ほどまで表示されていたHello Worldが表示されなくなりました。
もう一度、web.phpを見てみましょう。
末尾のアドレスが`/hello`でコントローラーが動作する設定をしていませんよね？
このように、ルーティングではユーザーのアクセスに対して、どのコントローラーのどのメソッドを動かすかを記述しなければなりません。




