2015-08-26 32 views
1

我有一個用Laravel開發的小型應用程序,我想在所有控制器上共享一個變量(遠程服務的結果,緩存)。laravel 5 - 在控制器之間共享變量(不渲染視圖)

我閱讀了關於ViewComposer,但他們只工作是一個視圖呈現(有意義),而我的應用程序有很多json響應。

我知道我可以傳統上從BaseController擴展我的控制器,但我不知道是否有人知道一種方式來做到這一點,而不依賴於繼承。

+0

如果它被緩存了,你可以通過'Cache :: get('yourvar')'來訪問它,無論你需要它嗎? –

+0

在會話中設置變量。 'Session :: put(key,value)'然後'Session :: get(value)或者5.x session(value)'。希望這個幫助。 – mdamia

回答

2

將該結果放入一個負責緩存的對象中,您可以將該類直接插入控制器 - 無論是在構造函數中,還是在特定的路由方法中。

(如果你使用laravel的緩存服務,那麼你可以注入,與沒有額外的工作)

超級簡單的例子:

class CachedResult { 

    public function result() { 
     return 'woo! caching'; 
    } 

} 

... 
// in your controller... 
public function someJsonRoute(CachedResult $result) { 
    $result->result(); 
} 

... 
// in your AppServiceProvider's register method 
$this->app->singleton(CachedResult::class, function() { return new CachedResult; }); 
0

可以聲明的變量和/或功能基礎控制器中的遠程服務。

而且在擴展主控制器的控制,你可以使用這樣的:

$這個 - >的varName;

相關問題