htmlspecialchars ожидает, что параметр 1 будет строкой, задан массив - PullRequest
0 голосов
/ 23 июня 2018

Я получаю следующую ошибку при печати содержимого модели в моем представлении blade.php:

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

Эта модель "содержимого" представляет собой столбец (тип json) в таблице и выглядит так же, какэто:

[{"Item":2}]

И вот как я пытаюсь использовать его на мой взгляд:

@foreach ($post->loot->content as $name => $amount)
     <div class="item">
          <i class="fab fa-cuttlefish"></i>
          <div class="text">{{ $name }} <b>x{{ $amount }}</b></div>
     </div>
@endforeach

По какой-то причине, если я печатаю только $ name, он показывает число(2) это должно быть напечатано при использовании переменной $ amount.

Есть ли способ решить мою проблему?

1 Ответ

0 голосов
/ 23 июня 2018

Если содержимое $ post-> loot-> содержит [{"Item": 2}]

Это массив объектов, поэтому ваша сумма $ равна целому {"Item": 2},не 2.

, поэтому цикл может выглядеть примерно так:

@foreach ($post->loot->content as $id=>$json)
    @php
        $obj =json_decode($json, true)
    @endphp
    @foreach ($obj as $key=>$val)
     <div class="item">
          <i class="fab fa-cuttlefish"></i>
          <div class="text">{{ $key }} <b>x{{ $val }}</b></div>
     </div>
     @endforeach
@endforeach

Не уверен, что вам нужно, но, возможно, вы можете поменять

 <div class="text">{{ $key }} <b>x{{ $val }}</b></div>

на

   <div class="text">{{ $id }} <b>x{{ $val }}</b></div>

Если вам нужен индекс всего объекта в списке вместо ключа obj атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...