前回はその1コントローラーを経由しない場合を書きました。
今回はその2コントローラーを経由する場合を書きます。
Laravelのルーティングの種類
使い方の違いは以下の通りです。
パターン | その1コントローラーを経由しない | その2コントローラーを経由する |
遷移 | routes->view | routes->controller->view |
用途 | LPなど静的ページで利用 | システムで生成する値をview側で使うときに利用 |
この記事ではその2コントローラーを経由する方法について説明していきます
コントローラーを経由してViewに行くやり方
3つの設定が必要
3つの設定が必要です。
- Routes
- Controller
- view
Routing設定
まずRoutesの設定からします。
routes/web.phpに追記します。
http://localhost:8000/Test に来たら
TestContoller.phpのindex()関数を読みますという指定
はじめに読み込む予定のコントローラーを使う宣言をします。
宣言→use App\Http\Controllers\TestController;
書かないとそんなクラスありません!!ってエラーが出てしまいます・・。
↓こんなやつです。これが出たときはクラスの宣言忘れがないか確認しましょう。
(フレームワークでハマりやすいのはこういう宣言、設定系です。焦らず見直しましょう。)
Illuminate\Contracts\Container\BindingResolutionException
Target class [TestController] does not exist.
続いてルーティングの設定(このアクセスが来たらどのファイルを読みにいくかの設定)
個別に書くのはめんどくさいような気もしますがべつのURLへのアクセスの時に不要なファイルを読み込まないので負荷軽減につながります。(Webは流行ってくるとアクセス負荷との戦いになりますので最初にしっかり設定しておきましょう♪)
ルーティングの設定
/Test に来たらTestContoller.phpのindex()関数を読みますという指定
Route::get(‘/Test’, [TestController::class, ‘index’]);
これで設定完了。↓にサンプル載せておきます。
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\TestController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/Test', [TestController::class, 'index']);
コントローラーの作成
続いてコントローラーの作成
これはコマンドで作成します。
PJフォルダーに移動して以下のコマンドを打ちます。
php artisan make:controller TestController
このファイルが生成されました
app/Http/Controllers/TestController.php
以下のように追記します。
viewtest2.blade.phpにmessage(コントローラーから来ました)を送るイメージです。
ファイル名app/Http/Controllers/TestController.php
↓サンプルです
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function index() { return view('viewtest2')->with([ 'message' => 'コントローラーから来ました', ]); } } ?>
Viewの作成
最後にview側の作業
新規ファイルをresources/views/viewtest2.blade.phpで作成し
コントローラーで定義した変数を表示させます。
↓resources/views/viewtest2.blade.phpに追記します
<h1>{{$message}}</h1>
これで準備完了。
/Test へブラウザからアクセスしましょう
こんな感じで表示できました。

以上です。
おわりに
Laravel8でコントローラーを経由してViewを表示する方法を説明しました。
以下3点セットを忘れずにやってみてください。
- ルーティングの設定
- コントローラーの作成
- Viewの作成
コメント