我正在使用Laravel 4構建一個簡單的日記應用程序,並且我想創建一個在所有管理視圖中共享的邊欄和標題。標題將要求顯示用戶數據,而側欄將包含指向應用程序各個部分的鏈接。在Laravel 4中共享視圖和數據
我真的不確定如何去解決這個問題,但是我不確定如何正確實施它們,或者如果這是他們的目標。
如果您可以向我提供有關此資源或任何其他資源的任何明確的文檔,那將非常棒。謝謝。
加雷思
我正在使用Laravel 4構建一個簡單的日記應用程序,並且我想創建一個在所有管理視圖中共享的邊欄和標題。標題將要求顯示用戶數據,而側欄將包含指向應用程序各個部分的鏈接。在Laravel 4中共享視圖和數據
我真的不確定如何去解決這個問題,但是我不確定如何正確實施它們,或者如果這是他們的目標。
如果您可以向我提供有關此資源或任何其他資源的任何明確的文檔,那將非常棒。謝謝。
加雷思
我已成功地完成我想通過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')
很顯然,我會在views/includes folder
的header.blade.php
,sidebar.blade.php
和footer.blade.php
文件。
然後,控制器,它一樣簡單......
$view = 'exampleView';
return View::make('template')->with('view', $view);
此外,所有你傳遞到模板視圖中的變量也將被提供給每個包括在該模板調用。