Laravel初心者の備忘録

WEBアプリケーションフレームワークとは何かすら曖昧なWEB担当者が、Laravelを使ってみながら分かったことを残していきます。

コントローラー(メソッドを指定)

コントローラーとは

コントローラーを使うと、関連のあるHTTPリクエストの処理ロジックを一つのクラスへまとめてグループ分けすることができます。

コントローラーへのルーティング

ルーティングとコントローラー(5/5):初心者のためのLaravel入門 - libro の通りに進めると、http://localhost:8000/heloにアクセスしても「Attribute [controller] does not exist.」というエラー画面が表示されます。
f:id:webe01:20180511145048p:plain

コントローラーの説明をする前に、ルーティング情報を書き換えておきましょう。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」と書かれたページが表示されます。
f:id:webe01:20180510154535p:plain
コントローラーの複数のメソッドへまとめてルーティングする方法は、次の記事で解説します。

今日のソース

▼ /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