2016-04-30 26 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