如何使用Laravel重定向而不使用Session将数据发送到视图?

时间:2018-03-08 01:44:11

标签: php redirect laravel-5.5

我想将数据从控制器发送到我的视图,而不使用会话来获取视图中的数据。

this question中,他们建议使用return redirect('home')->with(['data' => $value]);,但我必须在我看来使用Session::get('data')

我知道可以使用return view('myView')->with('data', 'value')来解决这个问题,但我想在导航到主页时将URL更改为 www.myurl.com/home 而我不能使用view('myView')->with('data', 'value')执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:0)

没有别的办法,你真的需要使用Session::get。但是,我们可以解决它,但它很麻烦。

// some controller function
return redirect('home')->with(['data' => $value]);

现在在home控制器功能中,执行以下操作:

SomeController@home
...
$data = [];

// if you need to pass other data to view, put it in data[]
// e.g., $data['username'] = Auth::user()->username;

if (Session::has('data')) {
    $data['data'] = Session::get('data');
}

return view('myView', compact($data));

在您的视图中,您只需检查是否设置了data

<!-- myView.blade.php -->
<span>{{ isset($data) ? $data : '' }}</span>

对我来说,它只是与从视图中访问Session相同,因为如果你这样做,这就是你的视图的样子。

<!-- myView.blade.php -->
<span>{{ Session::has('data') ? Session::get('data') : '' }}</span>

您还可以使用session()全局帮助程序而不是Session外观。