2016-04-30 110 views
3

我想要一个变量被其他控制器方法共享。这个变量可以通过一个控制器方法来更新,并且变化应该反映在其他方法中?有什么建议么 ?最佳做法是什么?这是我的代码:laravel 5.2控制器中的全局变量

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use Session; 

class test extends Controller 
{ 


public $global; 

public function __construct() 




public function a(Request $request){ 


$this->global="some value" 

} 

public function b(Request $request){ 

    echo $this->global; 
    //it always return a null 

} 



    } 

回答

5

设置你的构造函数中的变量。

function _construct() { $this->global = "some value";} 

所以,你不仅需要一个全局变量,你也希望这个变量也应该被其他路由改变。实现这一点的一个方法是使用会话。

function a() { 
    session()->put('global_variable', 'set by method a'); 
    //your other logic 
} 

和方法B ...

function b() { 
    //get the variable set by method a here 
    dd(session()->get('global_variable')); 
} 
+0

是啊,每控制器的最佳选择。 – felipsmartins

+0

这在我的情况下不起作用,因为我试图在方法a中设置值,并且它没有改变值,当我在方法b得到值时什么也没有改变 –

+0

好吧,所以你想改变方法a的值并在方法b中使用'changed'值?如果是这种情况,那么你必须使用会话。 – Abhishek