Php laravel 5多级菜单?
型号: class Menu extends Model { protected $table = 'menus'; public function sub_menu(){ return $this->hasMany('App\Menu', 'parent_id'); } } class MenuController extends Controller { public function index() { $menus = Menu::where('parent_id', 0)->get(); return view('admin.menus.index',compact('menus')); } }Php laravel 5多级菜单?,php,laravel-5,Php,Laravel 5,型号: class Menu extends Model { protected $table = 'menus'; public function sub_menu(){ return $this->hasMany('App\Menu', 'parent_id'); } } class MenuController extends Controller { public function index() { $men
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
----------------------------------------------------------------------
id | title | parent_id
----------------------------------------------------------------------
1 | Home | 0
----------------------------------------------------------------------
2 | Product1 | 0
----------------------------------------------------------------------
3 | Product1.1 | 2
----------------------------------------------------------------------
4 | Product1.1.1 | 3
----------------------------------------------------------------------
5 | Product1.1.2 | 3
----------------------------------------------------------------------
类菜单扩展了模型
{
受保护的$table='菜单';
公共功能子菜单(){
返回$this->hasMany('App\Menu','parent_id');
}
}
控制器:
class Menu extends Model
{
protected $table = 'menus';
public function sub_menu(){
return $this->hasMany('App\Menu', 'parent_id');
}
}
class MenuController extends Controller
{
public function index()
{
$menus = Menu::where('parent_id', 0)->get();
return view('admin.menus.index',compact('menus'));
}
}
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
----------------------------------------------------------------------
id | title | parent_id
----------------------------------------------------------------------
1 | Home | 0
----------------------------------------------------------------------
2 | Product1 | 0
----------------------------------------------------------------------
3 | Product1.1 | 2
----------------------------------------------------------------------
4 | Product1.1.1 | 3
----------------------------------------------------------------------
5 | Product1.1.2 | 3
----------------------------------------------------------------------
类MenuController扩展控制器
{
公共职能指数()
{
$menus=Menu::where('parent_id',0)->get();
返回视图('admin.menus.index',压缩('menus');
}
}
查看:
class Menu extends Model
{
protected $table = 'menus';
public function sub_menu(){
return $this->hasMany('App\Menu', 'parent_id');
}
}
class MenuController extends Controller
{
public function index()
{
$menus = Menu::where('parent_id', 0)->get();
return view('admin.menus.index',compact('menus'));
}
}
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
----------------------------------------------------------------------
id | title | parent_id
----------------------------------------------------------------------
1 | Home | 0
----------------------------------------------------------------------
2 | Product1 | 0
----------------------------------------------------------------------
3 | Product1.1 | 2
----------------------------------------------------------------------
4 | Product1.1.1 | 3
----------------------------------------------------------------------
5 | Product1.1.2 | 3
----------------------------------------------------------------------
@foreach($menus作为$menu)
- {{$menu->title}
@如果($menu->sub_menu->count()>0)
@foreach($menu->sub_菜单作为$sub)
标题}
@endforeach
@恩迪夫
@endforeach
表格结构:
class Menu extends Model
{
protected $table = 'menus';
public function sub_menu(){
return $this->hasMany('App\Menu', 'parent_id');
}
}
class MenuController extends Controller
{
public function index()
{
$menus = Menu::where('parent_id', 0)->get();
return view('admin.menus.index',compact('menus'));
}
}
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
----------------------------------------------------------------------
id | title | parent_id
----------------------------------------------------------------------
1 | Home | 0
----------------------------------------------------------------------
2 | Product1 | 0
----------------------------------------------------------------------
3 | Product1.1 | 2
----------------------------------------------------------------------
4 | Product1.1.1 | 3
----------------------------------------------------------------------
5 | Product1.1.2 | 3
----------------------------------------------------------------------
----------------------------------------------------------------------
id |头衔|家长id
----------------------------------------------------------------------
1 |家| 0
----------------------------------------------------------------------
2 |产品1 | 0
----------------------------------------------------------------------
3 |产品1.1 | 2
----------------------------------------------------------------------
4 |产品1.1.1 | 3
----------------------------------------------------------------------
5 |产品1.1.2 | 3
----------------------------------------------------------------------
它只显示2个级别,但我需要多个级别,请帮助 您可以使用递归进行尝试,如下所示:
<ul>
@foreach($menus as $menu)
<li>
{{ $menu->title }}
@if($menu->sub_menu->count())
{!! view('admin.menus.index', ['menus' => $menu->sub_menu]) !!}
@endif
</li>
@endforeach
</ul>
@foreach($menus作为$menu)
-
{{$menu->title}
@如果($menu->sub_menu->count())
{!!查看('admin.menus.index',['menus'=>$menu->sub_menu])
@恩迪夫
@endforeach
当您的视图只有上述内容时,它将起作用。否则,您必须创建新的分部并递归调用它
请注意,使用递归可能会以无限循环结束。这里有什么问题?@AmitGupta.op如果菜单是多级的,那么他需要在循环中显示菜单,但他使用foreach循环,它将以两步菜单结束。我希望他需要同时使用loop@AmitGupta,只显示两个级别,但我需要多个级别。请帮忙!我不明白你的意思。你能在你的问题中展示你拥有什么和你需要什么吗?@AmitGupta好的,我刚刚编辑了我的问题。谢谢你的评论。不,它不适用于多个级别,但适用于1个级别。非常感谢,但现在我已经通过在模型中创建递归函数解决了这个问题。谢谢你也可以检查这个。看来这对你有帮助。