LoginSignup
NTR893
@NTR893 (NoTry89 Ris3)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravel Middlewareについて

1. 【必須】やりたい・やりたかったこと

Middlewareを使い、データを表示させたい

2. 【必須】起きている問題やエラーメッセージ ※できるだけ詳細に書いてください

タイトルなし.png

3. 【必須】ご自身で試されたこと ※できるだけ詳細に書いてください

教科書でHelloMiddlewareというMiddlewareを作って、正常に動いたので、今度は、HelloMiddleware2を作って、自分で試そうと思ったらエラーになってしまいました。

主な変更点として、教科書のコードをまねて正常に動いたコードをコピペして、、middlewareの、HelloMiddlewareファイルと同じ場所に、HelloMiddleware2という名前のファイルを作り
、その情報をkernel.phpに追加しただけなので、controllerと、viewはいじっておらず、どうしてエラーになっているのかわかりません。

どうしたら、正常に動くのかを教えていただきたく、質問いたしました。

4. 関連するソースコードやスクリーンショット

Routeの情報

Route::get('hello3', [HelloController::class, 'index'] )->middleware(HelloMiddleware2::class);

Middlewareの情報

<?php

namespace App\Http\Middleware;

use Closure;

class HelloMiddleware2
{
   public function handle($request, Closure $next)
   {
       $data = [
           ['name'=>'taro2', 'mail'=>'taro@yamada2'],
           ['name'=>'hanako2', 'mail'=>'hanako@flower2'],
           ['name'=>'sachiko2', 'mail'=>'sachico@happy2'],
       ];
       $request->merge(['data'=>$data]);
       return $next($request);
   }
}

controllerの情報

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;


class HelloController extends Controller
{
  
   public function index(Request $request)
   {
      return view('hello.index', ['data'=>$request->data]);
   }
   
}

index.php(view)の情報

<html>
<head>
   <title>Hello/Index</title>
   <style>
   body {font-size:16pt; color:#999; }
   h1 { font-size:50pt; text-align:right; color:#f6f6f6;
       margin:-20px 0px -30px 0px; letter-spacing:-4pt; }
   </style>
</head>
<body>
    @extends('layouts.helloapp')

    @section('title', 'Index')
    
    @section('menubar')
       @parent
       インデックスページ
    @endsection
    
    @section('content')
    <p>ここが本文のコンテンツです。</p>
    <table>
    @foreach($data as $item)
    <tr><th>{{$item['name']}}</th><td>{{$item['mail']}}</td></tr>
    @endforeach
    </table>
 @endsection
 
   

 

    @section('footer')
    copyright 2020 tuyano.
    @endsection




 </body>
 
</html>

kernel.phpに追加した情報

'hello3' =>\App\Http\Middleware\HelloMiddleware2::class,

5.

6. 使用言語・ライブラリのバージョン ※できるだけ詳細に書いてください

Laravel.8.83

0

1Answer

クラスの特定ができていないので下記を追加することで解消できるのではないでしょうか?

route.php
+ use App\Http\Middleware\HelloMiddleware2;
0

Your answer might help someone💌