将菜单数据逻辑放入Laravel的最佳概念位置是什么。如果我使用菜单包放在哪里。在Base_Controller
中创建其他功能还是其他不同的功能?
答案 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经常有很多办法。也就是说,这有时可能会让人感到压力和混乱。