blade 模板中的递归嵌套数组

Recursing nested array in blade template

我正在尝试在 Laravel 中循环出一个菜单。

我正在将嵌套数组传递给主 blade 模板 categories-management.blade.php

View::make('categories-management')->with('categories', $categories);

其中 $categories

array (size=3)
  'Business Resources' => 
    array (size=7)
      'Operations' => 
        array (size=4)
          'resource_type_id' => int 1
          27 => 
            array (size=3)
              'id' => int 27
              'name' => string 'Design & Development' (length=20)
              'children' => 
                array (size=2)
               ... truncated ...

然后我用这个踢 categories-management.blade.php 里面的菜单:

@include('/includes/category-menu-item', array('categories', $categories))

内部 includes/category-menu-item 我有以下循环:

@if(is_array($categories))
<ul>
    @foreach($categories as $key => $value)
    <li>
        @if(!is_numeric($key)) 
            <p>{{$key}}</p>
            @include('/admin/includes/category-menu-item', array('categories', $value))
        @else
            <button data-category-id="{{$value->id}}">{{$value->name}}</button>
            @include('/admin/includes/category-menu-item', array('categories', $value->children))
        @endif
    </li>
    @endforeach
</ul>
@endif

这显然仍然不完整,但我已经遇到模板从未通过第一层并打印出来的问题:

如何让 Laravel 识别新的数组值?或者有更好的方法吗?

您的 @include 陈述不正确。传递给视图的数据需要是一个 associated 数组,你已经传递了一个带有数字键的数组。您必须将 array('categories', $value) 更改为 array('categories' => $value):

@if(is_array($categories))
<ul>
    @foreach($categories as $key => $value)
    <li>
        @if(!is_numeric($key)) 
            <p>{{$key}}</p>
            @include('/admin/includes/category-menu-item', array('categories' => $value))
        @else
            <button data-category-id="{{$value->id}}">{{$value->name}}</button>
            @include('/admin/includes/category-menu-item', array('categories' => $value->children))
        @endif
    </li>
    @endforeach
</ul>
@endif