如何在Laravel构造中将变量传递给会话

时间:2017-08-17 20:16:58

标签: php laravel-5

我试图在整个系统中提供一个我从另一个集成系统带来的参数,在我的仪表板控制器中我得到了该参数,所以我可以在输入中间件之前打印参数。在中间件中我收到错误undefined variable body

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 auth。我使用集成系统登录并传递用户名。这就是我要检查的内容。

提前致谢!

图像显示我在传输控制器中获得的内容,在仪表板控制器中我看到正确的值'responsable'=&gt;'rodrigo'。

enter image description here

1 个答案:

答案 0 :(得分: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);
  });