Laravel по-русски

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

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

#1 26.01.2015 23:32:42

Подшаблоны в Blade

Здравствуйте. Интересует такой вопрос, на сайте есть меню, для которого я сделал подшаблон(menu.blade.php). Данные в меню динамические, то есть сегодня этот элемент существует, а завтра его удалят. Каким образом можно организовать такое событие, чтобы при использование контроллера данные грузились из БД и передавались в подшаблон(что-то вроде конструктара). И каким образом передать данные в подшаблон либо достаточно их передать в шаблон и они будут доступны в подшаблоне?
П.С. До этого, когда еще не использовал фреймворки, писал не красивые костыли. В данном случае хочу их избежать.
П.С.С Прошу прощение за столь частые вопросы)

Не в сети

#2 27.01.2015 01:54:20

Quiss
Откуда: Moscow
Сообщений: 32
Сайт

Re: Подшаблоны в Blade

route.php

PHP
App::before(function($request)
{
View::share('myMenyInDataBase',DB::table('menu')->get());
});

menu.blade.php

PHP
@foreach($myMenyInDataBase as $item)
<
li>{{$item->name}}</li>
@endforeach

Не в сети

#3 27.01.2015 14:54:17

Re: Подшаблоны в Blade

Можно использовать в том месте где выводим меню
@include('menu')
Для меню создать отдельную модель.

Не в сети

#4 27.01.2015 15:52:15

Re: Подшаблоны в Blade

Quiss, использовал предложенный Вами вариант решения проблемы. На данный момент все работает.

Не в сети

#5 28.01.2015 02:01:25

Quiss
Откуда: Moscow
Сообщений: 32
Сайт

Re: Подшаблоны в Blade

Dualse пишет:

Quiss, использовал предложенный Вами вариант решения проблемы. На данный момент все работает.

Я рад. Удачного изучения :3

Изменено Quiss (28.01.2015 02:01:33)

Не в сети

#6 14.04.2015 09:40:58

Arat
Откуда: Киев
Сообщений: 116

Re: Подшаблоны в Blade

Да, нужная тема, спасибо!
Дополнительный вопрос: а как можно организовать, чтобы пункт меню на активных страницах тоже был активнм? Чтобы была подсветка меню на активных страницах

Не в сети

#7 14.04.2015 11:28:27

Arat
Откуда: Киев
Сообщений: 116

Re: Подшаблоны в Blade

Т.е. можно взять текущию УРЛ, распарсить и сравнить с тем, что забито, скажем, в базе?

Не в сети

#8 15.04.2015 15:34:07

Re: Подшаблоны в Blade

Если меню находится на каждой странице, можно использовать share, как посоветовал Quiss

PHP
class NewsController extends BaseController {

   public function 
index() {
       
$categories Category::get();
       return 
View::make('news.index'compact('categories'));
   }

}

/news/index.blade.php

xml<html>
    <head> ... </head>
    <body>
        @include('includes.menu', ['categories' => $categories])
    </body>
</html>

/includes/menu.blade.php

xml@if($categories)
    <ul>
    @foreach($categories as $category)
        <li>{{ $category->title }}</li>
    @endforeach
    </ul>
@endif

По поводу активных ссылок, смотря как у Вас устроена маршрутизация, можно использовать URL::currentRouteName() или если парсить часть ссылки Request::segment(n)

(slug — ЧПУ категории)
И тогда получается что то вроде…

xml@foreach($categories as $category)
    <li class='@if(Request::segment(1) == $category->slug) active @endif'>{{ $category->title }}</li>
@endforeach

Изменено lieroes (15.04.2015 15:38:08)

Не в сети

#9 16.04.2015 09:46:20

Arat
Откуда: Киев
Сообщений: 116

Re: Подшаблоны в Blade

lieroes, спасибо! Да, так все выходит отлично в связке с методом от Quiss.

Не в сети

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