2017-02-10 9 views
0

Я пытаюсь передать ассоциативный массив, содержащий массив ассоциативных массивов к частичной в Laravel 5.2:Laravel - передавая массив ассоциативных массивов к частичному

 @include('admin.partials.context-menu', [ 
      'items' => [ 
       ['test' => 'test'] 
      ], 
      'icon' => 'more_vert' 
     ]) 

и пытается получить доступ к элементам массива внутри массив:

<ul class="context-menu"> 
    @foreach($items as $item) 
     <li class="context-menu-item"> 
      {{ $item['test'] }} 
     </li> 
    @endforeach 
</ul> 

Тем не менее, я получаю сообщение об ошибке незаконного строкового смещения 'test', поскольку я пытаюсь это сделать.

То, что я пытался до сих пор: Использование индексированного массива «элементов» - работает, но очень неинтуитивными развиваться с Passing объекта вместо ассоциативного массива - неожиданное поведение, говорит, что это объект, когда TYPEOF, но при доступе значение, говорит, что это не объект.

я могу var_dump вещи парциальное и все значения, как и ожидалось, но проблема возникает только тогда, когда я пытаюсь получить доступ к их значения с помощью лезвия как в

{{ $item['test'] }} 

Спасибо за вашу помощь :)

+0

Это весь код. например существует ли ключ 'test' для каждого' $ item'? – Luke

ответ

0

Все, что я могу думать, это то, что вам не хватает ключа на одном из предметов.

Например, я могу вызвать ту же ошибку со следующим кодом.

<?php 

$array = [ 
    'items' => [ 
     ['test' => 'test'], 
     ['key' => 'test2'] 
    ] 
]; 

foreach ($array['items'] as $item) { 
    var_dump($item['test']); 
} 

Попробуйте сделать

@foreach ($items as $key => $value) // yes this works in blade 
    {{ $item[$key] }} 
@endforeach