2016-07-05 178 views
0

我已經發送一個變量使用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

回答

0

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');'。 –

相關問題