2012-11-21 26 views
3

我想从laravel中的数组构建一个菜单。什么我目前做的是把在一个视图在laravel中传递控制器的默认数据

$menu = ['home', 'users' => ['create users' , 'update user', 'activity log']]; 

的数组,然后通过它循环生成菜单:

  <section> 
      <!-- Left Nav Section --> 
      <ul class="left"> 
       <li class="divider"></li> 
       @foreach($menu as $key => $nav) 
        <li class="has-dropdown"> 
        <a href="#" class="active">{{ $key }}</a> 
        <ul class="dropdown"> 
         @foreach($nav as $subnav) 
         <li> 
         <a href="">{{ $subnav }}</a> 
         </li> 
         @endforeach 
        </ul> 
        </li> 
       @endforeach 
      </ul> 
      </section> 

有没有办法,我能实现不相同的结果任何其他方式把数据放在视图中?

我也试过在控制器中创建一个构造器功能:

public function __construct(){ 
    $menu = ['home', 'users' => ['create users' , 'update user', 'activity log']]; 
return $menu; 
} 

但我想,是不是它是如何工作的。我很欣赏任何关于如何去做这件事的想法。提前

+0

我从来没有使用刀片,但你应该检查刀片布局:http://laravel.com/docs/views/templating#blade-layouts – ipalaus

回答

1

如果您使用控制器的布局,你可以从构造方法中数据绑定到布局。只要确保先调用父构造函数,以便布局正确实例化即可。

public function __construct() 
{ 
    parent::__construct(); 

    $this->layout->menu = ['home', 'users' => ['create users' , 'update user', 'activity log']]; 
} 

这将一个$menu变量绑定到的布局,并也将提供到与刀片@include使用的任何嵌套视图。

+0

我得到从空值创建默认对象 – user225269

+0

也许你需要与()一起使用。 ($'this-> layout->'('menu',[])'' –

1

View composers来救援!

它们在呈现视图之前每次都执行,因此您可以使用它将标准数据传递给它们。

相关问题