如何在 laravel 中使用嵌套的 foreach 循环来填充子菜单?
How to use nested foreach loop in laravel for populating submenus?
我需要使用 Laravel 填充菜单栏子菜单。菜单正在填充,但子菜单不起作用。
这是我的 blade 文件。
@foreach($categories as $c)
<li class="nav-item hs-has-mega-menu u-header__nav-item"
data-event="hover"
data-animation-in="slideInUp"
data-animation-out="fadeOut"
data-position="left">
<a id="basicMegaMenu" class="nav-link u-header__nav-link u-header__nav-link-toggle" href="javascript:;" aria-haspopup="true" aria-expanded="false">{{ $c ['cat_name'] }}</a>
<div class="hs-mega-menu vmm-tfw u-header__sub-menu" aria-labelledby="basicMegaMenu">
<div class="row">
<div class="row u-header__mega-menu-wrapper">
<ul id="sidebarNav1" class="list-unstyled dropdown-list">
<!-- Menu List -->
@foreach($category->categories as $z)
<li>
<a class="dropdown-item" href="#">{{ $z ['cat_name'] }}<span class="text-gray-25 font-size-12 font-weight-normal"> (56)</span>
</a>
</li>
@endforeach
<!-- End Menu List -->
</ul>
</div>
</div>
</div>
</li>
@endforeach
这是我的控制器。
家庭控制器
public function landing_page()
{
$categories = Category::all();
$products = Product::get();
return view ('index',compact('products','categories'));
}
这是我的类别模型。
class Category extends Model
{
public function products()
{
return $this->hasMany(Product::class);
}
public function parent()
{
return $this->belongsTo(self::class);
}
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
}
谁能指导我解决这个问题?
$category->categories
到 $category->children
但您的代码在开始时无效 $categories as $c
比你尝试 $category
,
什么是 $category
变量?
您应该将 $category
替换为 $c
尝试第一个获取所有 ParentCatrgory
然后在循环中你可以调用单个 ParentCatrgory
childs
家庭控制器
public function landing_page()
{
$categories = Category::where('parent_id',0)->with('children')->get(); // all parent category
$products = Product::get();
return view ('index',compact('products','categories'));
}
@foreach($categories as $category)
<li class="nav-item hs-has-mega-menu u-header__nav-item"
data-event="hover"
data-animation-in="slideInUp"
data-animation-out="fadeOut"
data-position="left">
<a id="basicMegaMenu" class="nav-link u-header__nav-link u-header__nav-link-toggle" href="javascript:;" aria-haspopup="true" aria-expanded="false">{{ $category['cat_name'] }}</a>
<div class="hs-mega-menu vmm-tfw u-header__sub-menu" aria-labelledby="basicMegaMenu">
<div class="row">
<div class="row u-header__mega-menu-wrapper">
<ul id="sidebarNav1" class="list-unstyled dropdown-list">
<!-- Menu List -->
@foreach($category->children as $childrenCategory)
<li>
<a class="dropdown-item" href="#">{{ $childrenCategory['cat_name'] }}<span class="text-gray-25 font-size-12 font-weight-normal"> (56)</span>
</a>
</li>
@endforeach
<!-- End Menu List -->
</ul>
</div>
</div>
</div>
</li>
@endforeach
我需要使用 Laravel 填充菜单栏子菜单。菜单正在填充,但子菜单不起作用。
这是我的 blade 文件。
@foreach($categories as $c)
<li class="nav-item hs-has-mega-menu u-header__nav-item"
data-event="hover"
data-animation-in="slideInUp"
data-animation-out="fadeOut"
data-position="left">
<a id="basicMegaMenu" class="nav-link u-header__nav-link u-header__nav-link-toggle" href="javascript:;" aria-haspopup="true" aria-expanded="false">{{ $c ['cat_name'] }}</a>
<div class="hs-mega-menu vmm-tfw u-header__sub-menu" aria-labelledby="basicMegaMenu">
<div class="row">
<div class="row u-header__mega-menu-wrapper">
<ul id="sidebarNav1" class="list-unstyled dropdown-list">
<!-- Menu List -->
@foreach($category->categories as $z)
<li>
<a class="dropdown-item" href="#">{{ $z ['cat_name'] }}<span class="text-gray-25 font-size-12 font-weight-normal"> (56)</span>
</a>
</li>
@endforeach
<!-- End Menu List -->
</ul>
</div>
</div>
</div>
</li>
@endforeach
这是我的控制器。
家庭控制器
public function landing_page()
{
$categories = Category::all();
$products = Product::get();
return view ('index',compact('products','categories'));
}
这是我的类别模型。
class Category extends Model
{
public function products()
{
return $this->hasMany(Product::class);
}
public function parent()
{
return $this->belongsTo(self::class);
}
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
}
谁能指导我解决这个问题?
$category->categories
到 $category->children
但您的代码在开始时无效 $categories as $c
比你尝试 $category
,
什么是 $category
变量?
您应该将 $category
替换为 $c
尝试第一个获取所有 ParentCatrgory
然后在循环中你可以调用单个 ParentCatrgory
childs
家庭控制器
public function landing_page()
{
$categories = Category::where('parent_id',0)->with('children')->get(); // all parent category
$products = Product::get();
return view ('index',compact('products','categories'));
}
@foreach($categories as $category)
<li class="nav-item hs-has-mega-menu u-header__nav-item"
data-event="hover"
data-animation-in="slideInUp"
data-animation-out="fadeOut"
data-position="left">
<a id="basicMegaMenu" class="nav-link u-header__nav-link u-header__nav-link-toggle" href="javascript:;" aria-haspopup="true" aria-expanded="false">{{ $category['cat_name'] }}</a>
<div class="hs-mega-menu vmm-tfw u-header__sub-menu" aria-labelledby="basicMegaMenu">
<div class="row">
<div class="row u-header__mega-menu-wrapper">
<ul id="sidebarNav1" class="list-unstyled dropdown-list">
<!-- Menu List -->
@foreach($category->children as $childrenCategory)
<li>
<a class="dropdown-item" href="#">{{ $childrenCategory['cat_name'] }}<span class="text-gray-25 font-size-12 font-weight-normal"> (56)</span>
</a>
</li>
@endforeach
<!-- End Menu List -->
</ul>
</div>
</div>
</div>
</li>
@endforeach