【问题标题】:Sending data from Laravel Controller to Routes & View将数据从 Laravel 控制器发送到 Routes & View
【发布时间】:2016-11-07 16:43:14
【问题描述】:

我已经使用 Auth::login($user) 发送一个变量并将其设置在我的路由中的一个数组中。想发送一个额外的数组,我尝试的一切都失败了。

我的代码

控制器

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::get('/', function()
{
    $user = array();
    if(Auth::check()) {
        $user = Auth::user();
    }
    return View::make('hello', array('user' => $user));
});

所以我想发送 $user_pages,现在我只能访问 $user。在我看来,尝试为 $pages 运行 foreach 循环,但没有识别变量。所以我猜我必须在路由中做一些事情,并以与发送 $data 相同的方式发送它。

有什么帮助吗?

【问题讨论】:

  • 你到底为什么要打电话给用户$data?如果你想出任意变量名,你会让自己和他人更加困惑。
  • 我没有看到您的代码中调用了控制器方法callback()。在声明的路由中,您只返回 data 变量(我将其重命名为 user)。我建议你在 Laracast 上观看 Laravel 初学者视频。
  • 已将变量名称更改为用户。并且回调工作正常,我只是没有发布整个代码,只有这个问题的相关代码。关于如何将 $user_pages 发送到我的视图。

标签: php laravel


【解决方案1】:

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));
});

【讨论】:

  • 你用的是什么版本的 laravel?
  • Session::get('pages'); 可以代替session('pages'); 工作。
  • @Press 完全正确!他使用 4.2 版 ;)
  • 使用 laravel 4.2 & Session::get('pages');确实有效。谢谢
猜你喜欢
  • 2019-07-25
  • 2017-03-11
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 2021-05-17
相关资源
最近更新 更多