コントローラー(メソッドを指定)
コントローラーとは
コントローラーを使うと、関連のあるHTTPリクエストの処理ロジックを一つのクラスへまとめてグループ分けすることができます。
コントローラーへのルーティング
ルーティングとコントローラー(5/5):初心者のためのLaravel入門 - libro の通りに進めると、http://localhost:8000/heloにアクセスしても「Attribute [controller] does not exist.」というエラー画面が表示されます。
コントローラーの説明をする前に、ルーティング情報を書き換えておきましょう。routes.phpを開き、先ほどのRoute::get('/helo',……);の処理をカットし、新たに以下の文を追記して下さい。
Route::controller('helo', 'HeloController');
※Route::controllerルーティングはLaravel 5.2で非推奨となり、Laravel 5.3で削除されたためにエラーが発生してしまいます。
コントローラーとメソッドを指定するルーティング
Route::controllerルーティングの代わりに、Route::getルーティングのアクションにコントローラーとメソッドを指定します。
下記「今日のソース」の通りにHeloController.phpとweb.phpに記述し、http://localhost:8000/heloにアクセスすると「Sample」と書かれたページが表示されます。
コントローラーの複数のメソッドへまとめてルーティングする方法は、次の記事で解説します。
今日のソース
▼ /app/Http/Controllers/HeloController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller class HeloController extends Controller { public function index(Request $request) { return view('helo', ['message' => 'Hello!']); } }
※コントローラーのindexメソッドに、「helo」というテンプレート(/resources/views/helo.blade.php)を使用して「$message」という変数に「Hello!」という文字列を渡して表示するというアクションを定義しています。
▼ /routes/web.php
Route::get('helo', 'HeloController@index');
※http://localhost:8000/heloというURIにアクセスすると「HeloController」というコントローラー(/app/Http/Controllers/HeloController.php)のindexメソッドが実行されるというルーティングです。
今日の開発環境
PHP 7.2.3, Composer 1.6.3, Laravel 5.6