Treeview 菜单在 Laravel 中呈现两次类别
Treeview menu render twice categories in Laravel
我已经创建了嵌套的树视图类别和子类别,但它似乎渲染了两次类别。
这是我在页面上看到的情况。
Main category 1
- Sub -category 1.1
- Sub -category 1.2
Main category 2
- Sub -category 2.1
- Sub -category 2.2
Sub -category 1.1
Sub -category 1.2
Sub -category 2.1
Sub -category 2.2
这里发生的事情是首先呈现正确的树视图,然后在下方呈现 sub-categories 作为主要类别。
类别和 sub-categories 保存在一个 table 中,其中我有列 parent_id
0 作为主要类别,如果 sub-category 是 [=31 的 ID =] 代替。这是我的模型
public function parent()
{
return $this->belongsTo('App\Category');
}
public function children()
{
return $this->hasMany('App\Category', 'parent_id');
}
控制器
public function index()
{
$allCategories = Category::with(['children'])->get();
return view('categories', compact('allCategories'));
}
和blade
@foreach($allCategories as $category)
<li class="treeview">
<a href="{{ $category->id }}">{{ $category->title }}</a>
<ul class="treeview-menu">
@foreach($category->children as $subcategory)
<li class=""><a href="{{$subcategory->id}}">{{$subcategory->title}}</a></li>
@endforeach
</ul>
</li>
@endforeach
这样试试。
型号
public function parent()
{
return $this->belongsTo('App\Category', 'id', 'parent_id'); // I believe you can use also hasOne().
}
public function children()
{
return $this->hasMany('App\Category', 'parent_id', 'id');
}
public static function tree() {
return static::where('parent_id', '=', NULL)->get(); // or based on you question 0?
}
你的控制器
public function index()
{
$allCategories = Category::tree();
return view('categories', compact('allCategories'));
}
还有你的blade观点
@foreach($allCategories as $item)
<li class="treeview">
<a href="{{ $item->id }}"><i class="fa fa-link"></i> <span>{{ $item->title }}</span> <i class="fa fa-angle-left pull-right"></i></a>
<ul class="treeview-menu">
@foreach($item['children'] as $child)
<li><a href="{{ $child->id }}">{{ $child->title }}</a></li>
@endforeach
</ul>
</li>
@endforeach
我已经创建了嵌套的树视图类别和子类别,但它似乎渲染了两次类别。
这是我在页面上看到的情况。
Main category 1
- Sub -category 1.1
- Sub -category 1.2
Main category 2
- Sub -category 2.1
- Sub -category 2.2
Sub -category 1.1
Sub -category 1.2
Sub -category 2.1
Sub -category 2.2
这里发生的事情是首先呈现正确的树视图,然后在下方呈现 sub-categories 作为主要类别。
类别和 sub-categories 保存在一个 table 中,其中我有列 parent_id
0 作为主要类别,如果 sub-category 是 [=31 的 ID =] 代替。这是我的模型
public function parent()
{
return $this->belongsTo('App\Category');
}
public function children()
{
return $this->hasMany('App\Category', 'parent_id');
}
控制器
public function index()
{
$allCategories = Category::with(['children'])->get();
return view('categories', compact('allCategories'));
}
和blade
@foreach($allCategories as $category)
<li class="treeview">
<a href="{{ $category->id }}">{{ $category->title }}</a>
<ul class="treeview-menu">
@foreach($category->children as $subcategory)
<li class=""><a href="{{$subcategory->id}}">{{$subcategory->title}}</a></li>
@endforeach
</ul>
</li>
@endforeach
这样试试。
型号
public function parent()
{
return $this->belongsTo('App\Category', 'id', 'parent_id'); // I believe you can use also hasOne().
}
public function children()
{
return $this->hasMany('App\Category', 'parent_id', 'id');
}
public static function tree() {
return static::where('parent_id', '=', NULL)->get(); // or based on you question 0?
}
你的控制器
public function index()
{
$allCategories = Category::tree();
return view('categories', compact('allCategories'));
}
还有你的blade观点
@foreach($allCategories as $item)
<li class="treeview">
<a href="{{ $item->id }}"><i class="fa fa-link"></i> <span>{{ $item->title }}</span> <i class="fa fa-angle-left pull-right"></i></a>
<ul class="treeview-menu">
@foreach($item['children'] as $child)
<li><a href="{{ $child->id }}">{{ $child->title }}</a></li>
@endforeach
</ul>
</li>
@endforeach