Laravel по-русски

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

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

#1 28.01.2015 18:08:41

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

Сайдбар во всех шаблонах

Конечно же, я новичок в Laravel smile
Есть необходимость вывода в каждом шаблоне проекта бокового меню с блоками а-ля последние новости, реклама.
Как реализовать эту задачу? Создавать отдельную модель для этого и из нее брать данные и передавать их в шаблон?

Но еще один нюанс. Есть страница с текущей публикацией, например. И в этот сайдбар, кроме описанного выше, нужно впихнуть информацию про автора публикации. Как быть в этом случае?

Не в сети

#2 28.01.2015 18:34:04

Re: Сайдбар во всех шаблонах

Не в сети

#3 28.01.2015 19:04:40

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

Re: Сайдбар во всех шаблонах

не совсем же то sad Нужно изначально получить эти самые записи для вывода в секции.
Как мне видется алгоритм:
1. Создаю модель для получения данных в виджет
2. СОздаю шаблон для виджета
3. Подключаю его в основной шаблон

Но как быть со второй частью вопроса? Как мне поймать по какому роуту зашел пользователь, чтобы вывесит дополнительные виджеты?

Не в сети

#4 28.01.2015 20:26:04

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

Re: Сайдбар во всех шаблонах

  1. не совсем же то :( Нужно изначально получить эти самые записи для вывода в секции.
  2. Как мне видется алгоритм:
  3. 1. Создаю модель для получения данных в виджет
  4. 2. СОздаю шаблон для виджета
  5. 3. Подключаю его в основной шаблон
  6. Но как быть со второй частью вопроса? Как мне поймать по какому роуту зашел пользователь, чтобы вывесит дополнительные виджеты?

эмм

/app/route.php

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

Route::get('/side_bar_on',function() {
    return 
View::make('one_column.blade.php');
});

Route::get('/side_bar_off',function() {
    return 
View::make('two_column.blade.php');
});

/app/view/one_column.blade.php

PHP
<div class="container">
Content
</div>
<
div class="right_side_bar">
@include(
'sidebar')
</
div>

/app/view/two_column.blade.php

PHP
<div class="container">
Content
</div>

/app/view/sidebar.blade.php

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

Изменено Quiss (28.01.2015 20:27:25)

Не в сети

#5 29.01.2015 15:13:32

Re: Сайдбар во всех шаблонах

layout.blade.php

<html>
    
    <head>
        <title>
            @section('meta_title')
                сайт.ру
            @show
        </title>
    </head>
    
    <body>
        
        <div class="content">
            @section('content')
                
            @show
        </div>
        
        <div class="sidebar">
            @section('sidebar')
                
                @section('post_author')
                    
                @show
                
            @show
        </div>
        
        <div class="footer">
            @section('footer')
                
            @show
        </div>
        
    </body>
    
</html>

post.blade.php

@extends('layout')
    
    @section('content')

        <div class="post">
            <h1>{{ $post->title }}</h1>
            <div class="story">
                {{ $post->story }}
            </div>
        </div>

    @stop

    @section('sidebar')
        @parent
        
        Тут можно что-то добавить в сайдбар
        
    @stop
    
    @section('post_author')
        <div class="sidebar_post_author">
            Опубликовал {{ $post->user->name }}
        </div>
    @stop
    
    @section('meta_title')
        {{ $post->title }} / 
        @parent
    @stop

Роут

Route::get('post/{id}', 'PostController@showPost');

Контроллер

public function showPost($id)
{
    
    return View::make('post.blade.php')->with('post', $post)->with('smth', $smth);
}

Изменено Wide (29.01.2015 15:13:52)

Не в сети

#6 31.01.2015 11:41:46

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

Re: Сайдбар во всех шаблонах

Спасибо всем за подсказки! smile

Не в сети

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