2017-05-07 75 views
1

這是我的情況。我有我的大部分網頁使用的layout.blade.php。在這個文件中,我有一些包含的部分片段,比如@include('partials.header')。我正嘗試使用控制器將數據發送到我的header.blade.php文件,但我很困惑,因爲它被包含在延伸到layout.blade.php的每個視圖中,所以它會如何工作。如何在Laravel中使用控制器進行「部分」視圖?

我想要做的是檢索我的數據庫中的任何Game的記錄,該記錄包含當天的日期(如果存在),並在標題中使用刀片顯示詳細信息。

我該如何做這項工作?

+0

Laravel有一種叫做[時隙](https://laravel.com/docs /5.4/blade#components-and-slots)。 – ceejayoz

+0

@ceejayoz這很方便,我一定會使用它,但我不明白我會如何從數據庫中提取數據以便像這樣使用它。 – hoolakoola

+0

'\ App \ Game :: whereDate('date_field',\ Carbon \ Carbon :: now()) - > first()'? – ceejayoz

回答

2

我認爲定義那些Game作爲全球共享的路要走。

在你AppServiceProvider引導方法

public function boot() 
{ 

    view()->composer('partials.header', function ($view) { 
     view()->share('todayGames', \App\Game::whereDay('created_at', date('d')->get()); 
    }); 

    // or event view()->composer('*', Closure) to share $todayGames accross whole blade 
} 

渲染刀片像往常一樣,partial.header刀片

@foreach ($todayGames as $game) 
    // dostuffs 
@endforeach 
+0

謝謝!查看作曲家正是我所需要的。 :) – hoolakoola

0

雖然這是屬於你所選擇的遊戲獲取不同的值,你可以這樣做即:

控制器

$data = Game::select('id', 'name', 'published_date')->first(); 
return view('game')->with(compact('data')); 

layout.blade.php

<html><head></head><body> 
{{ $date }} 
</body></html> 

game.blade.php

@extend('layout') 
@section('date', $data->date) 
@section('content') 

@endsection 
相關問題