2017-07-29 42 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转换为控制器的构造函数或操作方法。

相关问题