2017-08-17 10 views
0

私は別の統合システムから持ってくるパラメータをシステム全体で利用しようとしています。ダッシュボードコントローラ内でそのパラメータを取得するので、ミドルウェアに入る前にパラメータを印刷できます。ミドルウェアの中に私はエラーundefined variable bodyLaravelコンストラクトで変数をセッションに渡す方法

use GuzzleHttp\Client; 
use Session; 

class dashboardController extends Controller 
{ 
    protected $body; 
    protected $valor; 

    public function __construct(){ 
    $url = 'https://domain.cl/xxxxxxxxxxxxx'; 

    $client = new Client(); //GuzzleHttp\Client 
    $result = $client->get($url); 
    $body = $result->getBody(); 
    echo $body; <--- when I print $body here I can see the value. 

    $this->middleware(function($request, $next) { 
     $this->valor = $request->session()->put('responsable', $body); <-- null here 
    return $next($request); 
    }); 
    } 
} 

を得るそれから私は私がこれを行うことができますどのように、私はlaravelの認証を使用していないよ、私の他の構築物について、このセッションパラメータが使用可能にします。私は統合システムを使ってログインし、ユーザー名を渡します。それは私がチェックするものです。

ありがとうございます!

画像は、私が転送コントローラに入るものを示しています。ダッシュボードコントローラでは、正しい値 'responsable' => 'rodrigo'が表示されます。

enter image description here

答えて

0

あなたの変数$bodyあなたは

$this->middleware(function($request, $next) { 
     $this->valor = $request->session()->put('responsable', $body); <-- null here 
     return $next($request); 
    }); 

を行う。しかし、あなたが useでそれを渡すことができるとき範囲から外である:

$this->middleware(function($request, $next) use ($body) { 
     $this->valor = $request->session()->put('responsable', $body); 
     return $next($request); 
    }); 
+0

おかげで、私はそれについて忘れてしまいました! $ this-> valor(またはsession)を別のコントローラで使用するにはどうしたらいいですか? –

+0

$ bodyをセッションに入れたので、 '$ watheverFromAnotherController = session( 'responsable');でセッションの内容を得ることができるはずです; – cbaconnier

+0

同じコントローラのメソッドでのみ動作し、別のコントローラでは動作しますnull、バックパックを使用している方法では、ダッシュボードはコントローラを拡張し、他のすべてのコントローラはcrudcontrollerを拡張します。 –

関連する問題