2017-07-29 44 views
3

對於我的文檔閱讀所有視圖共享數據,我們可以創建如何訪問Laravel中某些特定控制器的數據?

View::share('key', 'value');

我發現,我們也可以做的View Composer來,只有一些具體意見共享數據。

但如何實際上只與一些特定的控制器共享數據?

很少有控制器我們列出注入了一些變量,對象數組等可以使用。這在我腦海

一個想法是爲他們創造中間件...但我不認爲它應該做的事這樣

在文檔和網頁尋找這一點,但無法找到,因此如何實際上只與我們想要的某些特定控制器共享數據?

+0

爲什麼不使用會話呢? –

+0

你想傳入控制器的數據類型? – Bas

+0

@BibhudattaSahoo使用會話,這不會是一個過度充電解決方案的整個應用程序? –

回答

0

也許這將幫助你:

從conetix.com.au/blog/simple-guide-using-traits-laravel-5 一些片段,您可以在控制器中使用use ExampleCode;你想

<?php 
namespace App\Traits; 

trait ExampleCode 
{ 
    public function asd() 
    { 
     return [1,2,3]; 
    } 
} 

namespace App\Something; 

use App\Traits\ExampleCode; 

class Someclass 
{ 
    use ExampleCode; 

    public $yourarray; 

    public function __construct() 
    { 
     $this->yourarray = $this->asd(); 
    } 

    public function hi(){ 
     dd($this->yourarray); 
    } 

} 
+0

尼斯:)這些特質。但正如我所看到的,它允許我在其中創建存儲的方法,以便稍後在控制器中使用。但是我不能用它在使用特徵的方法中設置變量嗎? –

+0

@BockiZong你有沒有一個你想在你的控制器中使用的變量的例子? – Bas

+0

讓我們假設在Controller1,Controller2,Controller3中我想已經注入了var,準備好使用名爲$ asd的數組。像'$ asd = array(1,2,3);'已經可以在這三個控制器中使用 –

0

如果多個控制器需要訪問相同的數據,那麼您可能需要考慮創建它們繼承的基本控制器,並在控制器的構造函數中設置該數據。

或者,您可以將其存儲在會話中,並從需要它的控制器中檢索它。

+1

不要,如果你這樣做,你不能訪問'Auth :: user()'在構造函數,您將不得不使用中間件。 – Neat

+0

在哪裏設置這些會話變量?中間件你的意思是?那些組織一些控制器?或者也許有服務提供商的方式只分配給他們一些控制器?不是所有的人? –

+0

哪裏最適合。如果登錄用戶只能訪問它,那麼在用戶成功通過身份驗證後,在登錄時進行設置可能是有意義的。或者您可以觸發一個登錄事件並讓該事件的偵聽器在會話中設置值。 –

0

也許爲了這個目的使用分解更好。爲您的數據寫入一些服務類,bind it到您的服務容器,然後inject it轉換爲控制器的構造函數或操作方法。

相關問題