2015-08-26 34 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;

相关问题