我正在尝试创建动态菜单。基本上,我有两个表:类别和页面。不确定我应该怎么做但是以下是我尝试过的东西
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="{{url('/',null)}}" class="pull-left">Consulate</a>
</div>
<div>
<ul class="nav navbar-nav">
<li class="active"><a href="{{url('/',null)}}">Home</a></li>
@foreach($categories as $category )
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{$category->title}}<span class="caret"></span></a>
<ul class="dropdown-menu">
@foreach($pages as $page)
<li><a href="{{action('publicpagecontroller@show',[$page->id])}}">{{$page->title}}</a></li>
@endforeach
</ul>
</li>
@endforeach
使用上面的代码,我在所有类别中都有相同的下拉菜单。只有在类别有页面时才需要下拉列表。 example1 example2
我的模型如下: 页面模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Pages extends Model
{
protected $fillable=[
'title',
'details',
'image',
'category_id',
];
//A page has a category
public function category()
{
return $this->belongsTo('App\Categories');
}
}
类别模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Categories extends Model
{
protected $fillable=[
'title',
'details',
];
public function pages()
{
return $this->hasMany('App\Pages');
}
}
答案 0 :(得分:1)
您可以将类别存储在名为categories(id,name,url)的数据库表中。然后,您还可以使用另一个名为pages的表(id,name,url,category_id)。
创建类别和页面模型。
定义一对多关系(一个类别到多个页面)。
然后你可以这样做:
@foreach( $categories as $category )
<!-- display your category html -->
@foreach( $category->pages as $page )
<!-- display your page html -->
@endforeach
@endforeach
了解Laravel中的一对多关系:Eloquent: Relationships - one-to-many