在Laravel中放置菜单逻辑的位置?

时间:2012-11-24 15:36:03

标签: php menu laravel

将菜单数据逻辑放入Laravel的最佳概念位置是什么。如果我使用菜单包放在哪里。在Base_Controller中创建其他功能还是其他不同的功能?

2 个答案:

答案 0 :(得分:25)

  

注意:这个答案是为Laravel 3编写的,可能会也可能不适用于最新的Laravel 4


我最喜欢的创建动态菜单的方法是通过将菜单部分与主布局分离并通过Laravel的Composer注入菜单数据来实现(不要将它与Composer PHP包管理器混淆,它们是不同的东西)

<!-- layouts/default.blade.php -->

<div id="header">Title</div>

<div id="menu">
    @render('parts.menu')
</div>

<div id="content"></div>
<div id="footer"></div>

<!-- parts/menu.blade.php -->

<ul>
@foreach($menuitems as $menuitem)
    <li>{{ $menuitem->title }}</li>
@endforeach
</ul>

最后我们可以通过composer注入变量。

<?php 

// application/routes.php

View::composer('parts.menu', function($view){
    $view->with('menuitems', Menu::all());
});

这种方式每次调用parts/menu.blade.php时,Composer都会截取视图并将其注入$menuitems变量。与在with

上使用return View::make('blahblah')->with( 'menuitems', Menu::all() )相同

希望有所帮助:)


修改:如果您不想在routes.php中添加逻辑内容,可以将其放入start.php并考虑Jason Lewis分割start.php的方法分成单独的文件。

在名为application的{​​{1}}中创建一个目录,并填写一些文件。

start

然后将这些代码行添加到 + application [DIR] \-> + start [DIR] |-> autoloading.php |-> composers.php |-> filters.php \-> validation.php

的末尾
application/start.php

你明白了。将composer函数放在composers.php。

在此处阅读整篇文章:http://jasonlewis.me/article/laravel-keeping-things-organized

答案 1 :(得分:0)

如何在view composer中提取数据并使用HTML macro生成HTML?

Laravel经常有很多办法。也就是说,这有时可能会让人感到压力和混乱。