Laravel Middlewareについて
Q&A
1. 【必須】やりたい・やりたかったこと
Middlewareを使い、データを表示させたい
2. 【必須】起きている問題やエラーメッセージ ※できるだけ詳細に書いてください
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