前回はビューを作成しましたが、今回はコントローラの作成を詳しく見ていきます。
シナリオ
- about ページを新設する。
- 静的なページの表示を取りまとめる、PagesController を作成する。
- about ページは、PagesController で表示する。
Routing
まずは、about ページのルーティング設定を行います。
// routes/web.php // ... Route::get('/', 'WelcomeController@index'); Route::get('contact', 'WelcomeController@contact'); Route::get('about', 'PagesController@about'); // 追加 // ...
Controller の作成
新規にコントローラを作成するには artisanコマンドを使用します。
artisan は Laravel に含まれているユーティリティーコマンドです。
どの様な事が出来るかは list オプションで確認できます。
php artisan list
それでは、コントローラを作成してみます。
php artisan make:controller PagesController
app/Http/Controllers/PagesController.php ファイルが作成されました。
中身を確認してみます。
<?php // app/Http/Controllers/PagesController.php namespace App\Http\Controllers; use Illuminate\Http\Request; class PagesController extends Controller { // }
では、PagesControllerに aboutメソッドを追加し、viewの表示を行います。
今回は、resouces/viewsディレクトリの下に pagesディレクトリを作り、そこに about.blade.phpを格納します。
// ... class PagesController extends Controller { public function about() { return view('pages.about'); } }
view 関数の引数に注目してください。ピリオドで区切って ‘pages.about’ としています。resources/views ディレクトリにサブディレクトリがある場合、’サブディレクトリ.ビュー’ とピリオドで区切って指定します。
View の作成
resouces/views ディレクトリ以下に pages ディレクトリを作成し、テキストエディタで about.blade.php を作成します。
blog └── resources └── views └── pages └── about.blade.php
<!-- about.blade.php --> <!DOCTYPE HTML> <html> <head> <title>About</title> </head> <body> <h1>About Me</h1> </body> </html>
動作確認
ブラウザで http://localhost:8000/about へアクセスします。
ページに “About Me” が表示されれば成功です。
新しく作成した PagesController 経由で View を表示することができました。
演習
前回に作成した contact ビューを PagesController から表示するよう修正してください。
まとめ
以下のことが出来るようになりました。
- Controller の作成
- artisan コマンドの使用
- View ファイルのサブディレクトリへの格納