cch*_*cch 0 foreach nested-sets twitter-bootstrap laravel blade
我正在使用etrepat/baum在laravel项目中为我的应用程序创建类别.@foreach当我想为类别创建bootstrap下拉菜单时,我在使用刀片时遇到问题.当结构如此时,这很好用:
<nav id="nav2" role="navigation">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Shop by Category<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
@foreach($catnav as $cat) @if($cat->depth == 0)
<li>
{{ HTML::link(URL::action('StoreController@getCategories', [$cat->slug]), $cat->name) }} @else($cat->depth == 1)
<ul>
<li><a href="{{ URL::to('/store/categories/' . implode('/', $cat->getAncestorsAndSelf()->lists('slug'))) }}">{{$cat->name}}</a>
</li>
</ul>
</li>
@endif @endforeach
</ul>
</li>
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
这是上面的输出:

但我不希望有一个按类别分类的下拉菜单,但我试图dropdown为每个父类别创建一个包含子类的子类dropdown-menu.我试过这个结构,但是@foreach会弄乱布局.
<nav id="nav2" role="navigation">
<ul class="nav navbar-nav">
@foreach($catnav as $cat) @if($cat->depth == 0)
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ HTML::link(URL::action('StoreController@getCategories', [$cat->slug]), $cat->name, array('class'=>'dropdown-toggle' ,'data-toggle'=>'dropdown')) }}<span class="caret"></span></a>
@else($cat->depth == 1)
<ul class="dropdown-menu" role="menu">
<li><a href="{{ URL::to('/store/categories/' . implode('/', $cat->getAncestorsAndSelf()->lists('slug'))) }}">{{$cat->name}}</a>
</li>
@endif
</ul>
</li>
@endforeach
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
经过漫长的一天试图解决这个问题后,我结束了:
使用该toHierarchy()方法返回查询树的嵌套集合.
使用@foreach循环获取所有父节点,使用另一个节点获取子节点@foreach.
使用该isRoot()函数检查项目是否为父项.
使用isLeaf()函数检查是否是分支的结束.
使用大量的@if语句.
方案:
<nav id="nav2" role="navigation">
<ul class="nav navbar-nav">
@foreach($catnav as $item)
<li @if($item->isRoot())class ="dropdown"@endif>
@if(!$item->isLeaf())
<a @if($item->isRoot()) class="dropdown-toggle"@endif href="/store/categories/{{ $item->slug }}">
{{ $item->name }}
@if($item->isRoot()) <span class="caret"></span> @endif
</a>
@else
<a href="/store/categories/{{ $item->slug }}">{{$item->name}}</a>
@endif
@if($item->isRoot() && !$item->isLeaf())
<ul class="dropdown-menu">
@foreach($item->children as $child)
<li><a href="{{ URL::to('/store/categories/'.implode('/', $child->getAncestorsAndSelf()->lists('slug'))) }}">{{$child->name}}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |