10

在 Laravel 中放置菜单数据逻辑的最佳概念位置是什么?如果我使用菜单包放在哪里。在Base_Controller创建附加功能或不同的东西?

4

2 回答 2

26

注意:这个答案是为 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变量。与使用withon相同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

于 2013-01-01T04:06:46.870 回答
0

在视图编辑器中获取数据并使用HTML 宏生成 HTML 怎么样?

Laravel 经常有很多做事的方式。也就是说,这有时可能会让人有点不知所措和困惑。

于 2012-11-24T17:26:45.847 回答