[Laravel8] View(blade)の使い方 その2コントローラーを経由する場合

前回はその1コントローラーを経由しない場合を書きました。
今回はその2コントローラーを経由する場合を書きます。

使い方の違いは以下の通りです。

パターンその1コントローラーを経由しないその2コントローラーを経由する
遷移routes->viewroutes->controller->view
用途LPなど静的ページで利用システムで生成する値をview側で使うときに利用


この記事ではその2コントローラーを経由する方法について説明していきます

3つの設定が必要です。

  • Routes
  • Controller
  • view

まず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側の作業
新規ファイルをresources/viewsviewtest2.blade.phpで作成し
コントローラーで定義した変数を表示させます。

resources/viewsviewtest2.blade.phpに追記します
<h1>{{$message}}</h1>

これで準備完了。

/Test へブラウザからアクセスしましょう



こんな感じで表示できました。

以上です。

Posted by karaagelovers