2017-02-02 61 views
1

我有一些動態數據,我想從數據庫中獲取並將其傳遞給所有視圖。我試圖讓從互聯網上的一些例子,但它們似乎在我的處境將不是那樣工作Laravel 5.3向數據庫發出查詢並將其傳遞給所有視圖

public function boot(){} 

,而我不能讓一個數據庫查詢只能通過硬編碼值。 我曾嘗試另一種方法是一個基本的控制器,但訪問變量

$query = DB::table('users')->first(); 
\View::share('user', $query); 

任何人都有一個基於BaseController解決方案可以理解,當圖給我的錯誤,如果我錯過了什麼,請你提醒我

+0

是不是更好地在[服務容器]一單(HTTPS註冊查詢://laravel.com/docs/5.3/container)並在需要時解決它? – apokryfos

+0

你能解釋一下還是給個參考。謝謝你 –

+0

你也可以製作一個刀片模板並將它包含在裏面 –

回答

2

找到更詳細的根據在https://laravel.com/docs/5.4/views#sharing-data-with-all-views文檔:

有時,您可能需要使用由您的應用程序渲染的所有視圖共享一個數據。您可以使用視圖外觀的共享方法。通常情況下,您應該將呼叫置於服務提供商的啓動方法中進行共享。

再次在該網站上,你應該添加到您的服務供應商之一的例子:

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     $query = DB::table('users')->first(); 
     \View::share('user', $query); 
    } 
} 
+0

我正在查詢數據庫,我讀了一些articals的啓動方法被稱爲之前的雄辯 –

+0

@FaisalMehmoodAwan所以你說這個解決方案不工作?這也是查詢生成器。雄辯不是一回事。 – apokryfos

+0

沒有違法,但..讓我試試看..謝謝你 –

0

你可以使用視圖作曲家。 「視圖作曲者是在視圖呈現時調用的回調函數或類方法如果每次渲染視圖時都希望將數據綁定到視圖上,視圖編輯器可以幫助您將該邏輯組織成單個視圖位置。」

你可以https://laravel.com/docs/5.3/views#view-composers

+0

可以請你提供一個使用數據庫邏輯的參考。因爲我正在查看它並傳遞硬編碼的值來查看 –

+0

只需在ViewComposers __constructor中包含您的模型函數。還有一個例子,請檢查這也 https://scotch.io/tutorials/sharing-data-between-views-using-laravel-view-composers – shafiq

相關問題