【问题标题】:Multi-level navigation using bootstrap in laravel 5在 laravel 5 中使用引导程序进行多级导航
【发布时间】:2015-06-30 14:48:37
【问题描述】:

我使用 laravel 5 作为我的框架。

我有一个这样的类别表:

如果parent_id = id,我想将其作为多级引导菜单

这是我迄今为止尝试过的:

<ul class="nav navbar-nav navbar-right">        
    <li class="dropdown">
        <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Categories <span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
            @foreach( $category as $cat )
                @if( $cat->id === $cat->parent_id)
                    <ul class="dropdown-menu" role="menu">
                        <li class="dropdown-submenu">
                            <a href="{{ url( '/category', Safeurl::make( $cat->name ) ) }}" data-toggle="dropdown-toggle" aria-expanded="false">{{ $cat->name }}
                                <ul class="dropdown-menu" role="menu">
                                    <li>
                                        <a href="{{ url( '/category', [Safeurl::make( $cat->name ), Safeurl::make( $cat->name )] ) }}"></a>
                                    </li>
                                </ul>
                            </a>
                        </li>
                    </ul>
                @else
                    <li>
                        <a href="{{ url( '/category', Safeurl::make( $cat->name ) ) }}">{{ $cat->name }}</a>
                    </li>
                @endif
            @endforeach
        </ul>
    </li>
</ul>

但是这个结果是,我得到的输出是 1 低于另一个。

如果是parent_id = id,我希望它应该在该特定 ID 旁边显示子类别。

例如,在当前示例中,id = 6 具有 parent_id = 4,这意味着引导菜单应在 Clothing 旁边显示子类别链接。

更新 1

提交答案后,我无法显示子类别。

代码如下:

<li class="dropdown">
    <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Categories <span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu">
        @foreach( $category as $cat )
            <li @if($cat->childs->count()) class="dropdown" @endif>
                <a href="javascript:void(0)" @if( $cat->childs->count() ) class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" @endif>
                    {{ $cat->name }}
                    @if( $cat->childs->count() )
                        <span class="caret"></span>
                    @endif
                </a>
            @if( $cat->childs->count() )
                <ul class="dropdown-menu" role="menu">
                    @foreach( $cat->childs as $child )
                        <a href="{{url('/category', [Safeurl::make($cat->name), Safeurl::make($child->name)])}}">
                            {{ $child->name }}
                        </a>
                    @endforeach
                </ul>
            @endif
        </li>
    @endforeach
</ul>

我如何做到这一点?

【问题讨论】:

  • 谁能帮帮我?

标签: php css twitter-bootstrap laravel-5


【解决方案1】:

一种方法是在模型中添加关系

public function childs()
{
    return $this->hasMany('Category', 'parent_id', 'id');
}

在您的控制器中仅选择 parent_id==0 的类别

在您看来,您可以要求孩子:

@foreach( $category as $cat )
    <li @if($cat->childs->count()) class="dropdown" @endif>
        <a href="{{ url( '/category', Safeurl::make( $cat->name ) ) }}" @if($cat->childs->count()) class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" @endif>{{ $cat->name }} @if($cat->childs->count()) <span class="caret"></span> @endif</a>
        @if($cat->childs->count())
             <ul class="dropdown-menu" role="menu">
             @foreach($cat->childs as $child)
                 <li><a href="{{ url( '/category', [Safeurl::make( $child->name ), Safeurl::make( $child->name )] ) }}"></a></li>
             @endforeach
             </ul>
        @endif
    </li>
@endforeach

【讨论】:

  • 在我的控制器中,我有$category = Category::all();..当我尝试你的代码时,它什么也没给我。我的意思是根本看不到类别..
  • 您是否在类别模型中添加了 childs 关系?
  • 尝试 $category = Category::where('parent_id', '=', '0')->with('childs')->get();
  • 也启用调试,因为我写得很快,可能是代码错误
  • 并尝试在视图中使用 $category->childs->count(没有 ())
猜你喜欢
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2014-01-24
  • 2023-02-02
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多