如何在 laravel 中的类别导航菜单中 return 子类别
How to return subcategory in category nav menu in laravel
我已经使用 AppServiceProvider 对所有页面可用,我想在导航菜单中加载它们自己类别中的所有子类别,现在它将加载所有类别,在最后一个类别中,它将列出 [=] 中的所有子类别35=] 请帮忙。
here is image sample
header.blade.php
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
@endforeach
<ul class="dropdown-menu" >
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12" >
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($shareData['subcategories'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
AppServicePrivider.php
$categories = Category::where('status',1)->get();
$subcategories = Subcategory::where('status',1)->get();
$shareData = array(
'categories'=>$categories,
'subcategories'=>$subcategories
);
view()->share('shareData',$shareData);
Category.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
public function posts(){
return $this->hasMany('App\Post');
}
public function subcategory(){
return $this->hasMany('App\Subcategory');
}
}
您应该直接在类别查询上使用 with('subcategory')
:
view()->share('shareData',Category::with('subcategory')->where('status',1)->get());
那么您的 blade 视图可能是:
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
<ul class="dropdown-menu">
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12">
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($category['subcategory'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
@endforeach
我会将关系方法从 subcategory()
更改为 subcategories()
,因为它是一个 HasMany
关系。
让你的 header.blade.php 像这样:
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
<ul class="dropdown-menu" >
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12" >
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($category['subcategory'] as $subcategory)
<li><a href="{{ url('/subcategory') }}/{{ $subcategory->id }}">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
@endforeach
使您的 AppServiceProvider 类似于以下代码:
$categories = Category::where('status',1)->get();
$shareData = array(
'categories'=>$categories
);
view()->share('shareData',$shareData);
我已经使用 AppServiceProvider 对所有页面可用,我想在导航菜单中加载它们自己类别中的所有子类别,现在它将加载所有类别,在最后一个类别中,它将列出 [=] 中的所有子类别35=] 请帮忙。
here is image sample
header.blade.php
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
@endforeach
<ul class="dropdown-menu" >
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12" >
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($shareData['subcategories'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
AppServicePrivider.php
$categories = Category::where('status',1)->get();
$subcategories = Subcategory::where('status',1)->get();
$shareData = array(
'categories'=>$categories,
'subcategories'=>$subcategories
);
view()->share('shareData',$shareData);
Category.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
public function posts(){
return $this->hasMany('App\Post');
}
public function subcategory(){
return $this->hasMany('App\Subcategory');
}
}
您应该直接在类别查询上使用 with('subcategory')
:
view()->share('shareData',Category::with('subcategory')->where('status',1)->get());
那么您的 blade 视图可能是:
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
<ul class="dropdown-menu">
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12">
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($category['subcategory'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
@endforeach
我会将关系方法从 subcategory()
更改为 subcategories()
,因为它是一个 HasMany
关系。
让你的 header.blade.php 像这样:
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
<ul class="dropdown-menu" >
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12" >
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($category['subcategory'] as $subcategory)
<li><a href="{{ url('/subcategory') }}/{{ $subcategory->id }}">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
@endforeach
使您的 AppServiceProvider 类似于以下代码:
$categories = Category::where('status',1)->get();
$shareData = array(
'categories'=>$categories
);
view()->share('shareData',$shareData);