Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.11.2014 09:37:12

Как получить данные при любом роуте.

Добрый день!

Есть сайт, в котором есть меню, мета теги, название сайта, описание и прочее, что должно быть на каждой странице, не зависимо от роута. Все эти данные вытягиваются из mysql. Т.е. меню - это модель, которая наследуется от  Eloquent. Название сайта и теги, также хранятся в базе и тоже представляют собой модель. Вопрос? Как вытаскивать эти данные перед любым запросом?
Т. е. есть ли какое-то место  в laravel, где можно объявить один раз, например:

$menu=MenuModel::All();
$SiteName=SettingsModel::All();
.....
....

и свободно использовать в любой вьюшке

<div id=header>
$SiteName->name;
</div>
<ul>
    <li>$menu->item</li>
</ul>
....
...

Не в сети

#2 24.11.2014 18:32:45

Re: Как получить данные при любом роуте.

Где объявить - в своем сервис-провайдере, конструкторе BaseController, от которого наследуются остальные контроллеры, или в app/start/global.php.
Как передать во все вьюхи - View::share('menu', $menu);

Не в сети

#3 25.11.2014 02:03:09

Re: Как получить данные при любом роуте.

Спасибо. global.php помог. И View::share тоже.

Не в сети

#4 17.12.2014 11:06:52

Re: Как получить данные при любом роуте.

можешь подробно написать как ты сделал?
я тоже хочу так сделать, но не могу разобраться как

Не в сети

#5 19.12.2014 01:51:12

Re: Как получить данные при любом роуте.

В app/start/global.php
В конце файла пишишь

$menu=MenuModel::All();
View::share('menu',$menu);

Теперь переменная $menu будет доступна в любой вьюшке.

Не в сети

#6 21.12.2014 00:03:29

Re: Как получить данные при любом роуте.

ну а как поместить в эту переменную одну строку из таблицы БД?
метод all() вытягивает сразу все строки таблицы

Не в сети

#7 21.12.2014 00:41:42

Wide

Re: Как получить данные при любом роуте.

ну а как поместить в эту переменную одну строку из таблицы БД?
метод all() вытягивает сразу все строки таблицы

Использовать другой метод, который вытягивает одну строку.

#8 21.12.2014 12:13:04

Re: Как получить данные при любом роуте.

ну а где эти методы найти?

Не в сети

#9 21.12.2014 12:14:32

Re: Как получить данные при любом роуте.

тут в документации ничего нету

Не в сети

#10 21.12.2014 12:19:08

Re: Как получить данные при любом роуте.

вся документация состоит из каких-то обрезков

Не в сети

#11 21.12.2014 12:35:59

Wide

Re: Как получить данные при любом роуте.

#12 21.12.2014 13:04:57

Re: Как получить данные при любом роуте.

$menu=MenuModel::where('id','=','1')->get();

Не в сети

#13 21.12.2014 13:29:23

Re: Как получить данные при любом роуте.

  1. вся документация состоит из каких-то обрезков

Вам нужен Eloquent, он как раз лучше всего описан, плюс по нему есть много уроков.
http://laravel.com/docs/4.2/eloquent

Не в сети

#14 25.12.2014 21:54:46

Максим

Re: Как получить данные при любом роуте.

как пример

в родительском контроллере - BaseController - создаем функцию-конструктор, которая раздает данные категорий из базы (из модели категорий Category) во все шаблоны сайта:

     // передаем все категории товаров во все шаблоны
     public function __construct() {
          $this->beforeFilter(function() {
               View::share('catnav', Category::all());
          });
     }

Подвал раздела