###### 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`でコントローラーが動作する設定をしていませんよね? このように、ルーティングではユーザーのアクセスに対して、どのコントローラーのどのメソッドを動かすかを記述しなければなりません。