Где разместить логику меню в Laravel?

Что является лучшим концептуальным местом для размещения логики данных меню в Laravel. Если я использую пакет меню, куда его поместить. В Base_Controller создать дополнительную функцию или что-то другое?

Ответ 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>

 

Наконец, мы можем ввести переменную через композитор.

<?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

Ответ 2

Как получить данные в просмотреть композитор и использовать HTML макрос для генерации HTML?

У Laravel часто есть много способов сделать что-то. Тем не менее, это, вероятно, может быть немного подавляющим и запутанным время от времени.