我需要所有視圖中的相同菜單。Laravel,可變輸出與View :: share一起工作,但不能與VIew :: composer一起工作
所以我得到的數據我需要在我的BaseController中定義的構造函數中輸出菜單。
搞到我第一次嘗試使用瀏覽::作曲家的數據,但不知道爲什麼我沒有得到任何錯誤,它看起來就像是根本沒有執行搜索::作曲家...
如果我使用的是View ::份額,其工作
//BaseController.php
//function called in the constructor
public function init()
{
$envs = $this->game->environments()->get();
View::share('test', $envs);
View::composer('layouts.base', function($view)
{
$view->with('envs', $envs);
});
}
//base.twig
//nothing output here, no error
{% for env in envs %}
{{ env.name }}
{% endfor %}
//its work
{% for env in test %}
{{ env.name }}
{% endfor %}
我是新來的拉拉維爾,所以也許我錯過了什麼?
我編寫基於你的鏈接已經在我的View Composer,它說一下,我們必須把它們放在一個特別的地點事實上任何東西。 :/ 它的意思是呈現在BaseController構造函數之前?有點奇怪! 感謝您的回答,我將使用課程來存儲它們。 我只想知道一件事,在我的例子中,我應該使用視圖作曲家或繼續使用查看共享?我已經看過有關這方面的主題,但並沒有真正回答,因爲View共享對於所有視圖來說都是全局的,我的基礎模板上的視圖編輯器應該做同樣的事情,因爲我的所有模板都擴展了base.twig模板? –
我不認爲視圖在BaseController之前_rendered_它們是_created_之前,並且視圖編寫器回調僅在新視圖的**創建時觸發......所以在原始代碼中調用視圖編輯器將永遠不會因爲他們認爲已經創建了火。 至於視圖共享VS作曲家 - 我會使用作曲家,如果你需要在回調中做些事情來改變你傳遞給視圖的變量。如果您只是將非動態變量傳遞給視圖,則我的建議是使用視圖共享。 – berrberr