Недопустимое смещение строки, хотя я уже декодировал массив в контроллере? - PullRequest
0 голосов
/ 23 мая 2019

Я получаю массив из формы, который может выглядеть следующим образом:

array [
  "absender" => "Maxim Ivan",
  "email" => "maximivan@example.com",
  "telefon" => "1234567890",
  "fax" => null,
  "grund" => "Gehaltserhöhung",
  "termin" => [
      0 => [
        "person" => "Some Name",
        "meeting" => "10.05"  
      ],
      1 => [
        "person" => "Another Name",
        "meeting" => "18.05"  
      ],
      2 => [
        "person" => "Again another name",
        "meeting" => null,
        "next-possible-meeting" => "1"  
      ],
      3 => [
        "person" => "And again",
        "meeting" => null,
        "next-possible-meeting" => "1"  
      ],
      4 => [
        "meeting" => null,
  ],
  "bemerkung" => "some notes by Maxim"
]

Я закодировал массив, чтобы сделать его доступным в upload -методе так:

<input type="hidden" value="{{ json_encode($arrayData) }}" name="array" />

в методе upload У меня есть класс проверки (http-запрос) в качестве параметра $ request, поэтому я получаю массив и напрямую декодирую его следующим образом:

$array = json_decode($_POST['array']);

Я даю$array к виду лезвия, но когда я пытаюсь получить доступ к нему, чтобы отобразить значения, подобные этому:

// controller
return view('view', compact('array));

// blade view
@if (isset($array) && !empty($array))
   @foreach ($array as $key => $data)
      <tr>
         @if (!empty($data) && !is_numeric($key))
           <td>{{ $key }}:</td>
           <td>{{ $data[$key] }}</td>
         @else
           <td>{{ $key }}:</td>
           <td>keine Angabe.</td>
         @endif
      </tr>
   @endforeach
@endif

Я получаю ошибку Illegal string offset 'absender', но я действительно не понимаю, почему, я ужедекодировал его в контроллере .. Или мне нужно декодировать снова в представлении?

Я в замешательстве.

1 Ответ

1 голос
/ 23 мая 2019

$ data [$ key] - проблема ..

Когда вы пересекаете петлю,

$ key = "absender",

$ data = "Максим Иван"

И в своем блейде вы пишете код как $ data [$ key], который пытается найти «Максима Ивана» как массив, в котором ключ имеет значение «отсутствующий».

Что не соответствует действительности в вашем случае!

Вы можете проверить перед этой строкой, что данные являются массивом или нет, сделав это:

is_array ($ данных);

если он возвращает true, обрабатывать регистр массива, повторяя цикл, чтобы получить требуемое значение, а если он возвращает false, печатать $ data напрямую.

Надеюсь, это решит вашу проблему!

...