Совместное использование представлений и данных в Laravel 4

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

Я действительно не уверен, как это сделать, и посмотрел на View Composers, но я не уверен, как правильно их реализовать, и если это то, для чего они предназначены.

Если бы вы могли предоставить мне какую-либо четкую документацию по этому или любым другим ресурсам, это было бы здорово. Спасибо.

Гарет


person Gareth Daine    schedule 21.04.2013    source источник


Ответы (2)


Мне удалось выполнить то, что я хотел сделать с помощью View Composer, но я хотел бы знать, что вы думаете об этом, и будет ли это считаться передовой практикой или хорошим решением.

// View::composer for layouts.admin in my routes.php file
View::composer('layouts.admin', function($view)
{
    $user = AdminController::get();

    $view->with('user', $user);
});

// public static method get() in AdminController
public static function get()
{
    $userGreeting = Auth::user()->greetings()->orderBy(DB::raw('RAND()'))->first();

    $user = new User;
    $user->first_name = Auth::user()->first_name;
    $user->greeting = $userGreeting->greeting;

    return $user;
}

// layouts.admin view
{{ Html::link('logout', 'Logout') }}
<p>Hey {{ $user->first_name }}</p>
<p>{{ $user->greeting }}</p>
person Gareth Daine    schedule 21.04.2013

Для несложных сайтов мне нравится просто создавать простой шаблон с помощью Blade.

//file: template.blade.php
@include('includes/header')
@include('includes/sidebar')
@include($view)
@include('includes/footer')

Очевидно, у меня будут файлы header.blade.php, sidebar.blade.php и footer.blade.php в папке views/includes folder.

Тогда в контроллере это так же просто, как...

$view = 'exampleView';
return View::make('template')->with('view', $view);

Кроме того, все переменные, которые вы передаете в представление шаблона, также будут доступны для каждого из включений, вызываемых в этом шаблоне.

person user1669496    schedule 26.04.2013