在 Laravel 中放置菜单数据逻辑的最佳概念位置是什么?如果我使用菜单包放在哪里。在Base_Controller
创建附加功能或不同的东西?
2 回答
注意:这个答案是为 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
on相同return View::make('blahblah')->with( 'menuitems', Menu::all() )
希望能帮助到你 :)
编辑:如果你不喜欢有逻辑,routes.php
你可以把它放进去,start.php
并考虑 Jason Lewis 将其拆分start.php
成单独文件的方式。
application
在调用中创建一个目录start
并用一些文件填充它。
+ application [DIR]
\-> + start [DIR]
|-> autoloading.php
|-> composers.php
|-> filters.php
\-> validation.php
然后将这些代码行添加到您的末尾application/start.php
require __DIR__ . DS . 'start' . DS . 'autoloading.php';
require __DIR__ . DS . 'start' . DS . 'filters.php';
require __DIR__ . DS . 'start' . DS . 'composers.php';
require __DIR__ . DS . 'start' . DS . 'validation.php';
你明白了。将作曲家函数放在 composers.php 中。
在此处阅读整篇文章:http: //jasonlewis.me/article/laravel-keeping-things-organized