Laravel 5中可重复使用的视图布局

时间:2015-04-02 17:36:29

标签: laravel-5 blade reusability

在我的项目中,我有很多包含导航链接列表的视图。我把它作为一个视图分开,并使用@include('menu')用于其他视图。但是,根据每个视图,我想问某些类(用于样式)某些元素,我不知道该怎么做

menu.blade.php

<ul class="menu">
   <li class="menu-item active">
     <a href="#">Product Manager</a>
   </li>
   <li class="menu-item">
     <a href="#">Categories Manager</a>
   </li>
   <li class="menu-item">
     <a href="#">Order Manager</a>
   </li>     
</ul>

更多解释:如果视图是产品经理,我想仅在第一个“li”元素上添加“活动”...

2 个答案:

答案 0 :(得分:3)

另一种选择:

<ul class="menu">
  <li class="menu-item @if (Request::is('product-manager*')) active @endif">
   <a href="product-manager">Product Manager</a>
 </li>
 <li class="menu-item @if (Request::is('categories-manager*')) active @endif">
  <a href="categories-manager">Categories Manager</a>
 </li>
 <li class="menu-item @if (Request::is('order-manager*')) active @endif">
  <a href="order-manager">Order Manager</a>
 </li>
</ul>

答案 1 :(得分:2)

如果可以像下面那样构建menu.blade.php:

<?php
  $activeMenu = isset($activeMenu) ? $activeMenu : '';
  $menuItems = [
      'Product Manager' => '#',
      'Categories Manager' => '#',
      'Order Manager' => '#',
  ];
?>
<ul class="menu">
  @foreach($menuItems as $name => $link)
    <li class="menu-item {{ $activeMenu === $name ? 'active' : ''}}">
      <a href="{{ $link }}">{{ $name }}</a>
    </li>
  @endforeach
</ul>

这允许您在单个数组中轻松定义菜单项,当它循环渲染每个菜单项时,它将检查是否需要添加活动类。

在其他视图中,当您使用@include(&#39; menu&#39;)时,您可以传入一个可选参数来设置活动菜单项:

{{-- Menu without any item active --}}
@include('menu')

{{-- Menu with Product Manager active --}}
@include('menu', ['activeMenu' => 'Product Manager'])

{{-- Menu with Order Manager active --}}
@include('menu', ['activeMenu' => 'Order Manager'])