1. ホーム
  2. php

[解決済み] Laravel - htmlspecialchars() は、パラメータ 1 が文字列であることを期待し、オブジェクトを指定します。

2022-03-04 17:05:43

質問

このようなエラーが発生します。

htmlspecialchars() expects parameter 1 to be string, object given

コントローラで使っています。

$data = '{"pr":{"code":"1"},"ac":[[{"icon":"web","action":"link","url":"asd"}]]}'
$newData = json_decode($data);

そして、それを配列としてビューに送ります。'data' => $newData そして、ビューで$dataを使おうとすると、次のようなエラーが発生します。

すでに$data->acまたは$data['ac']を使用しようとしましたが、まだ同じです...。 何か助言をお願いします。

どうすればいいですか?

ブレードエコーを使用する場合 {{ $data }} は自動的に出力をエスケープします。エスケープできるのは文字列のみです。あなたのデータでは $data->ac は配列であり $data はオブジェクトで、どちらもそのままではエコーできない。どのようにデータを出力すべきなのか、より具体的に説明する必要があります。具体的にどのようにするかは、何を達成しようとしているかに完全に依存します。たとえば、リンクを表示するには、次のようにする必要があります。 {{ $data->ac[0][0]['url'] }} (なぜ2つのネストした配列があるのか分かりませんが、あなたのデータ構造に従っただけです)。

@foreach($data->ac['0'] as $link)
    <a href="{{ $link['url'] }}">This is a link</a>
@endforeach