Laravel 5.2.32:会话闪存不适用于重定向

时间:2016-06-23 20:51:42

标签: php laravel session redirect middleware

我有一个具有重定向功能的控制器:

public function myControllerMethod() 
{
    $data = $this->blabla();

    return Redirect::to('previousroute')->with('data', $data);
}

这个previousroute由otherControllerMethod()处理,如下所示:

public function otherControllerMethod()
{
    $data = Session::get('data');

    return $this->makeView($data);
}

不幸的是,Laravel忘记了这个会话数据。我以前做了很多次,我从来没有看到在单次重定向后忘记会话闪存数据。这里发生了什么?我尝试过添加和删除“web”中间件,但没有任何作用。如果有人知道为什么会这样,请告诉我。

3 个答案:

答案 0 :(得分:2)

use Session;

public function myControllerMethod() 
{
    $data = $this->blabla();
    Session::set('data', $data);
    return Redirect::to('previousroute')->with('data', $data);
}

public function otherControllerMethod()
{
    $data = Session::get('data');

    return $this->makeView($data);
}

试试这样。使用会话并在会话中设置数据并从您想要的地方获取。

答案 1 :(得分:0)

myControllerMethod中,您将data obj / var作为请求传递。

otherControllerMethod中,您正在请求未设置的会话数据。

为了将数据放入会话,你应该这样做:

Session::put('data','value')

然后它将可用:

Session::get('data');

答案 2 :(得分:0)

之前我遇到过同样的问题。基本上我需要在使用Redirect外观重定向时调用myControllerMethod函数。因此,您需要将public function myControllerMethod() { $data = $this->blabla(); return Redirect::to('previousroute')->with('data', $data)->send(); } 更改为:

send()

由于Symfony\Component\HttpFoundation\Response类的sendContent()函数调用函数self.tableView(tableViewOfCurrentItems, didSelectRowAtIndexPath: indexPath) ,它在重定向时发送数据。

希望这有帮助。