【问题标题】:Where to place menu logic in Laravel?Laravel 中的菜单逻辑放在哪里?
【发布时间】:2012-11-12 14:55:17
【问题描述】:

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

【问题讨论】:

  • 例如从数据库中获取菜单元素并添加到菜单(捆绑)存储中,以便在视图中呈现。

标签: php menu laravel


【解决方案1】:

注意:此答案是为 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 变量。这与在return View::make('blahblah')-&gt;with( 'menuitems', Menu::all() ) 上使用with 相同

希望对你有帮助:)


编辑:如果您不喜欢 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';

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

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

【讨论】:

  • 我认为您将两个答案合二为一!
  • 在新版本中,而不是 @render('parts.menu') 使用 @include('parts.menu')
  • @CornelAndreev:渲染和包含有什么区别?
【解决方案2】:

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

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

【讨论】:

  • 在关于视图作曲家的文档中说“作曲家通常在 application/routes.php 中定义”。我只使用路由而不是逻辑,有没有没有路由的解决方案?
  • 它们与路由无关,你可以把它们放在任何你想要的地方——通常在一个额外的帮助文件中。
  • 好的,这个逻辑放在哪里(作曲家)?在 Base_Controller 函数中?这是我的主要问题。我知道 Laravel 中有很多灵活的东西,但不知道放在哪里。
  • 我通常会为视图编辑器、自定义验证规则或 HTML 宏等内容创建一个或多个额外的帮助文件,我在 start.php 或 routes.php 中包含这些文件。
  • Laracasts 的 View Composers 课程是免费课程之一 laracasts.com/lessons/view-composers 。问这个问题时不在身边
猜你喜欢
  • 2018-06-14
  • 2014-10-26
  • 2014-03-16
  • 2011-09-08
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 2016-09-09
  • 2011-08-02
相关资源
最近更新 更多