我有一個用Laravel開發的小型應用程序,我想在所有控制器上共享一個變量(遠程服務的結果,緩存)。laravel 5 - 在控制器之間共享變量(不渲染視圖)
我閱讀了關於ViewComposer,但他們只工作是一個視圖呈現(有意義),而我的應用程序有很多json響應。
我知道我可以傳統上從BaseController擴展我的控制器,但我不知道是否有人知道一種方式來做到這一點,而不依賴於繼承。
我有一個用Laravel開發的小型應用程序,我想在所有控制器上共享一個變量(遠程服務的結果,緩存)。laravel 5 - 在控制器之間共享變量(不渲染視圖)
我閱讀了關於ViewComposer,但他們只工作是一個視圖呈現(有意義),而我的應用程序有很多json響應。
我知道我可以傳統上從BaseController擴展我的控制器,但我不知道是否有人知道一種方式來做到這一點,而不依賴於繼承。
將該結果放入一個負責緩存的對象中,您可以將該類直接插入控制器 - 無論是在構造函數中,還是在特定的路由方法中。
(如果你使用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; });
可以聲明的變量和/或功能基礎控制器中的遠程服務。
而且在擴展主控制器的控制,你可以使用這樣的:
$這個 - >的varName;
如果它被緩存了,你可以通過'Cache :: get('yourvar')'來訪問它,無論你需要它嗎? –
在會話中設置變量。 'Session :: put(key,value)'然後'Session :: get(value)或者5.x session(value)'。希望這個幫助。 – mdamia