現在Laravelで参考書を見ながらプログラムを組んでいるのですが、下記のエラーが表示されます。
「htmlspecialchars() expects parameter 1 to be string, array given (View: /Applications/MAMP/htdocs/laravelapp/resources/views/hello/index.blade.php)」
プログラムの全体は以下のようになっています。
web.php
php
1Route::get('hello', 'HelloController@index');
HelloController.php
php
1class HelloController extends Controller 2{ 3 public function index() { 4 $data = [ 5 ['name'=>'山田たろう', 'mail'=>'taro@yamada'], 6 ['name'=>'田中はなこ', 'mail'=>'hanako@flower'], 7 ['name'=>'鈴木さちこ', 'mail'=>'sachiko@happy'] 8 ]; 9 return view('hello.index', ['data'=>$data]); 10 } 11}
hello/index.blade.php
php
1@extends('layouts.helloapp') 2 3@section('title', 'Index') 4 5@section('menubar') 6 @parent 7 インデックスページ 8@endsection 9 10@section('content') 11 <p>ここが本文のコンテンツです。</p> 12 13 @each('components.item', $data, 'item') 14 15@endsection 16 17@section('footer') 18copyright 2017 tuyano. 19@endsection
components/item.blade.php
php
1<li>{{$item['name']}} [{{$item['mail']}}]</li>
helloapp.blade.php
php
1<html> 2<head> 3 <title>@yield('title')</title> 4 <style> 5 body { font-size: 16pt; color: #999; margin: 5px; } 6 h1 { font-size: 50pt; text-align: right; color: #f6f6f6; 7 margin: -20px 0px -30px 0px; letter-spacing: -4pt; } 8 ul {font-size: 12pt } 9 hr { margin: 25px 100px; border-top: 1px dashed #ddd; } 10 .menutitle { font-size: 14pt; font-weight: bold; margin: 0px; } 11 .content { margin:10px; } 12 .footer { text-align: right; font-size: 10pt; margin: 10px; 13 border-bottom: solid 1px #ccc; color: #ccc; } 14 </style> 15 <head> 16 <body> 17 <h1>@yield('title')</h1> 18 @section('menubar') 19 <ul> 20 <p class="menutitle">※メニュー</p> 21 <li>@show</li> 22 </ul> 23 <hr size="1"> 24 <div class="content"> 25 @yield('content') 26 </div> 27 <div class="footer"> 28 @yield('footer') 29 </div> 30 </body> 31 </html>
HelloController.phpの$dataの中身を消すとエラーが消えることから、この配列がおかしなことになっていると思うのですが、どこが間違っているでしょうか?
試しに
php
1return view('hello.index', ['data'=>htmlspecialchars($data,ENT_QUOTES,'UTF-8')]);
としてもうまくいきませんでした。
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。