从Laravel控制器发送数据到路由和视图

问题描述:

我已经发送一个变量使用Auth :: login($ user)并将其设置在我的路由数组中。想发送一个额外的数组,我试过的所有东西都失败了。从Laravel控制器发送数据到路由和视图

代码,我

控制器

public function callback(){ 
     if(!$this->fb->generateSessionFromRedirect()){ 
      return Redirect::to('/')->with('message', "Error logging into facebook"); 
     } 

     $user_fb = $this->fb->getGraph(); 

     if(empty($user_fb)) { 
      return Redirect::to('/')->with('message', "User Not Found"); 
     } 

     $user = User::whereUidFb($user_fb->getProperty('id'))->first(); 

     if(empty($user)){ 
      $user = new User; 
      $user->name = $user_fb->getProperty('name'); 
      $user->uid_fb = $user_fb->getProperty('id'); 

      $user->save(); 
     } 

     $user->access_token_fb = $this->fb->getToken(); 
     $user->save(); 

     $user_pages = $this->fb->getPages(); 
     // var_dump($user_pages); 

     Auth::login($user); 

     return Redirect::to('/')->with(array('pages' => $user_pages)); 

    } 

ROUTE

Route::get('/', function() 
{ 
    $user = array(); 
    if(Auth::check()) { 
     $user = Auth::user(); 
    } 
    return View::make('hello', array('user' => $user)); 
}); 

所以我想送$ user_pages,现在我只能访问$用户。试图在我的视图中为$页面运行一个foreach循环,但没有标识变量。所以我猜我必须在路由中做一些事情,并以与发送数据相同的方式发送它。

任何帮助?

+0

为什么地球上,你会调用用户'$ data'?如果你想出任意的变量名称,你会让自己和其他人感到困惑。 – Jonathan

+0

我看不到在你的代码中调用控制器方法'callback()'。在声明的路由中,您只返回* data *变量(我将重命名为* user *)。我建议你在Laracast上观看Laravel初学者视频。 – JasonK

+0

已将变量名称更改为用户。和回调工作正常,我只是没有公布整个代码,只有相关的代码为这个问题。关于如何将$ user_pages发送到我的视图。 – simba777

with方法将数据刷新到会话中以便检索它,您需要使用session('key');

控制器:

public function callback(){ 
    //....... 
    return Redirect::to('/')->with('pages', $user_pages); 
    //....... 
} 

然后:

Route::get('/', function() { 
    //From session 
    $user_pages = Session::get('pages'); //session('pages'); for laravel >= 5.0 
    $data = array(); 
    if(Auth::check()) { 
     $data = Auth::user(); 
    } 
    return View::make('hello', array('data' => $data)); 
}); 
+0

错误“调用未定义的函数会话()” – simba777

+0

您使用的是什么版本的laravel? –

+1

'Session :: get('pages');'可以工作而不是'session('pages');'。 –