Добрый день.
Из контроллера в представление необходимо передать данные из массива.
Код контроллера:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ProductController extends Controller
{
private $product;
public function getCategories()
{
return [
1 => [
'name' => 'Категория 1',
'products' => [
1 => [
'name' => 'Продукт 1',
'cost' => '300',
'inStock' => true,
'desc' => 'Описание продукта 1'
],
2 => [
'name' => 'Продукт 2',
'cost' => '400',
'inStock' => true,
'desc' => 'Описание продукта 2'
],
3 => [
'name' => 'Продукт 3',
'cost' => '500',
'inStock' => false,
'desc' => 'Описание продукта 3'
],
],
],
2 => [
'name' => 'Категория 2',
'products' => [
1 => [
'name' => 'Продукт 1',
'cost' => '700',
'inStock' => true,
'desc' => 'Описание продукта 1'
],
2 => [
'name' => 'Продукт 2',
'cost' => '800',
'inStock' => false,
'desc' => 'Описание продукта 2'
],
3 => [
'name' => 'Продукт 3',
'cost' => '900',
'inStock' => false,
'desc' => 'Описание продукта 3'
],
],
],
];
}
public function showCategory($id)
{
# var_dump($this->getCategories()[1]);
if (isset($this->getCategories()[$id])) {
$arrCategoryData = $this->getCategories()[$id];
return view('category', ['arrCategoryData' => $arrCategoryData]);
} else {
abort(404);
}
}
};
Проверил из контроллера и в представлении, массив передается в таком виде:
array (size=2)
'name' => string 'Категория 1' (length=20)
'products' =>
array (size=3)
1 =>
array (size=4)
'name' => string 'Продукт 1' (length=16)
'cost' => string '300' (length=3)
'inStock' => boolean true
'desc' => string 'Описание продукта 1' (length=35)
2 =>
array (size=4)
'name' => string 'Продукт 2' (length=16)
'cost' => string '400' (length=3)
'inStock' => boolean true
'desc' => string 'Описание продукта 2' (length=35)
3 =>
array (size=4)
'name' => string 'Продукт 3' (length=16)
'cost' => string '500' (length=3)
'inStock' => boolean false
'desc' => string 'Описание продукта 3' (length=35)
Мне необходимо вытащить уже в представлении из этого массива данные о наименовании продукта:
'name' => string 'Продукт 1'
'name' => string 'Продукт 2'
'name' => string 'Продукт 3'
Если не делать foreach, а просто вывести единичные данные:
{{ $arrCategoryData['products'][1]['name'] }}
выводится без проблем.
Но при применении foreach:
@foreach ($arrCategoryData as $arrTemp)
@foreach ($arrTemp as $arrData)
{{ $arrData ['name'] }}
@endforeach
@endforeach
Выводит сообщение: Invalid argument supplied for foreach()
Помогите, пожалуйста, победить проблему.