我目前正在使用 Laravel 4 构建一个简单的日记应用程序,我想创建一个在所有管理视图中共享的侧边栏和标题。标题将要求显示用户数据,而侧栏将包含指向应用程序各个部分的链接。
我真的不确定如何解决这个问题并查看了 View Composers,但我不确定如何正确实现它们,或者这是否是它们的目的。
如果您可以向我提供有关此内容的任何清晰文档或任何其他很棒的资源。谢谢。
加雷斯
我已经设法通过 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>
对于不那么复杂的网站,我喜欢使用刀片创建一个简单的模板。
//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);
此外,您传递到模板视图的所有变量也将可用于该模板中调用的每个包含。