@naneri
PHP разработчик.

Как правильно сделать запрос к БД для отдельного виджета?

В данное время делаю сайт на Laravel. Особенность в том, что необходимо сделать сайдбар в котором будут отображаться категории названия которых берутся из БД.

Где именно делать запрос к БД для вытаскивания имён этих категорий?
Особенность в том, что я заранее не знаю, на каких именно страницах мне понадобится сайдбар с категориями, и сразу в родительском классе контроллера прописывать такой запрос будет неправильно... Или всё-таки правильно?
Ещё и не понятно, как тогда во все страницы с шаблонами его включать...

До этого возникала такая же проблема когда работал с Codeigniter.
  • Вопрос задан
  • 2425 просмотров
Пригласить эксперта
Ответы на вопрос 3
kaluzhanin
@kaluzhanin
Если все еще актуально, самый DRY-подход - это использование view composers. Какждый раз, когда вы подключаете сайдбар через {{ View::make('sidebar') }}, переменные в нем можно заполнять в обход контроллеров в специально выделенном для этого классе. Подробно все расписано тут.
Ответ написан
Комментировать
@angry_bender
PHP, JS
В отдельном контроллере конечно. И грузить аяксом.
Ответ написан
PaulTMatik
@PaulTMatik
Все запросы, которые будут использоваться на большинстве страниц, лучше делать в базовом контроллере.

Для меню, в вашем случае лучше использовать шаблонизатор. Например
файл: main.blade.php
<html>
<body>
@yield('menu')
@yield('content')
</body>
</html>


Файл page.blade.php
@extends('main')

@section('menu')
@include('categories', ['categories'=>$categories])
@stop

@section('content')
<div>Content</div>
@stop


файл categories.blade.php
<ul>
@foreach($categories as $category)
<li>{{$category->name}}</li>
@endforeach
</ul>


А в контроллере запрашивать
return View::make('page',['categories'=>$this->categories()]);


Так вы сможете подключать меню когда вам нужно, просто создавая в шаблоне секцию 'menu'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы