質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

解決済

1回答

5195閲覧

Laravel ミドルウェアのサンプルコードでエラー(argument must be of type array|object, null given)が出るので解決したいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2021/11/21 17:08

編集2021/11/21 17:53

前提・実現したいこと

Laravel ミドルウェアのサンプルコードでエラー(argument must be of type array|object, null given)がでるので解決したいです。

###環境

  • Laravel8
  • PHP8.0
  • PhpStorm

発生している問題・エラーメッセージ

ErrorException foreach() argument must be of type array|object, null given ( View: /Users/...(略).../resources/views/hello/index.blade.php)

該当のソースコード

php

1// Http/Middleware/HelloMiddleware.php 2namespace App\Http\Middleware; 3use Closure; 4use Illuminate\Http\Request; 5use Illuminate\Support\Facades\Log; 6 7public function handle(Request $request, Closure $next): mixed 8 { 9 $data = [ 10 ['name' => 'taro', 'mail' => 'taro@yamada'], 11 ['name' => 'hanako', 'mail' => 'hanako@flower'], 12 ['name' => 'sachiko', 'mail' => 'sachiko@happy'], 13 ]; 14 15 $request->merge(['data' => $data]); 16 17 return $next($request); 18 }

php

1// resources/views/hello/index.blade.php 2 <table> 3 @foreach($data as $item) 4 <tr><th>{{$item['name']}}</th><td>{{$item['mail']}}</td></tr> 5 @endforeach 6 </table>

php

1// web.php 2use Illuminate\Support\Facades\Route; 3use App\Http\Middleware\HelloMiddleware; 4use App\Http\Controllers\HelloController; 5 6Route::get('hello', 'HelloController@index')->middleware(HelloMiddleware::class);

php

1// Http/Controllers/HelloController.php 2namespace App\Http\Controllers; 3use Illuminate\Http\Request; 4 5class HelloController extends Controller{ 6 public function index(Request $request){ 7 return view('hello.index', ['data' => $request->data]); 8 } 9}

php

1// Kernel.php 2 protected $routeMiddleware = [ 3 'hello' => \App\Http\Middleware\HelloMiddleware::class, 4 ];

試したこと

  1. null になる原因はHelloMiddleware.phpが機能していないことにあると考え、Laravel8 で変更されたルーティングの書き方を試行錯誤しましたが、解決できませんでした。

参考記事
2. artisan コマンドで route, config, view, cache のキャッシュをクリアしましたが結果は変わりませんでした。

自己解決

web.php を下記のように訂正

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問本文に解決方法を追加

投稿2021/11/21 17:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問