Что является лучшим концептуальным местом для размещения логики данных меню в Laravel. Если я использую пакет меню, куда его поместить. В Base_Controller
создать дополнительную функцию или что-то другое?
Где разместить логику меню в 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>
Наконец, мы можем ввести переменную через композитор.
<?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 часто есть много способов сделать что-то. Тем не менее, это, вероятно, может быть немного подавляющим и запутанным время от времени.