我正在慢慢学习Laravel / PHP并正在构建基本CMS的菜单系统。我已将菜单存储在数据库中作为json。这样我就可以将它用于其他应用程序等。
我正在尝试解码json并循环显示它以显示我的菜单。新数组是一个对象数组。我的问题是:
•我如何迭代这个数组?当我尝试获取$ item-> id时,它可以正常工作。但是,当我尝试获取$ item->标题时,我得到一个ErrorException
我确信这很简单。它让我疯了!谢谢花时间看......
public function edit($id)
{
$view = View::make('admin.menus.edit');
$view['seo_title'] = Lang::get('admin.system_name') . ' | Edit ' . Lang::choice('admin.menus', 1);
$view['id'] = $id;
$view['menu'] = Menus::find($id);
$view['menuitems'] = json_decode($view->menu->menu_items);
return $view;
}
@foreach( $menuitems as $item)
<h4>{{ $item->title }}</h4>
@endforeach
[{"title":"Title","link":"/test.html","id":"1","children":[{"title":"Title","link":"/test.html","id":"2","children":[{"title":"Title","link":"/test.html","id":"3"}]}]},{"id":"4"},{"id":"5","children":[{"id":"6","children":[{"id":"7"}]}]},{"id":"8"},{"id":"9"}]
Array ( [0] => stdClass Object (
[title] => Title
[link] => /test.html
[id] => 1
[children] => Array ( [0] => stdClass Object (
[title] => Title
[link] => /test.html
[id] => 2 [children] => Array (
[0] => stdClass Object (
[title] => Title
[link] => /test.html
[id] => 3
)
)
)
)
)
[1] => stdClass Object (
[id] => 4
)
[2] => stdClass Object (
[id] => 5
[children] => Array ( [0] => stdClass Object (
[id] => 6
[children] => Array (
[0] => stdClass Object (
[id] => 7
)
)
)
)
)
[3] => stdClass Object (
[id] => 8
)
[4] => stdClass Object (
[id] => 9
)
)
再次感谢 - 我希望有人能发现我的错误。
答案 0 :(得分:2)
您的json数据只有第一项的标题。其他菜单项的标题未定义,因此当您尝试访问foreach循环中未定义的标题时,可能会收到未定义的属性警告。
您可以检查循环中是否有标题
@foreach( $menuitems as $item)
<h4>{{{ isset($item->title) ? $item->title : 'Default Title' }}}</h4>
@endforeach
或者你必须确保数据集(json)中的每个菜单项都有一个title属性。