我有一个具有重定向功能的控制器:
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”中间件,但没有任何作用。如果有人知道为什么会这样,请告诉我。
答案 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)
,它在重定向时发送数据。
希望这有帮助。