Laravel-无法从控制器到视图进行变量

时间:2018-09-08 17:18:21

标签: php laravel laravel-blade

我正在Laravel中创建一个站点,该站点使用控制器来验证表单中的信息,然后将用户返回到“感谢”页面。在该感谢页面上,我想使用用户的姓名和性别。

在我的控制器中,我拥有:

return redirect()->route('thanks')->with(['success' => 'success', 'name' => $name, 'gender' => $gender]);

然后,在视图中,我有:

<p>{{ $name }}</p>
<p>{{ $gender }}</p>

但是,由于某些原因,我不断收到此错误:

未定义变量:名称

奇怪的是,如果我在控制器中死掉并转储了$ name,它会在屏幕上正确显示它。

我尝试了各种不同的方法来尝试将多个变量传递给视图,以及尝试使用不同的变量名称和形式来再次接收它...但是一直无法使它起作用。

你们知道我可能会出错吗?一如既往,非常感谢您的帮助!欢迎所有想法,建议和评论:)谢谢!

2 个答案:

答案 0 :(得分:3)

重定向上的

with()将数据刷新到会话,它不包含任何带有视图的内容。您不应将此方法调用与视图和重定向混淆,因为它们并不等效。

将变量传递到视图的唯一地方是返回视图的地方:

return view('thanks')->with(['success' => 'success', 'name' => $name, 'gender' => $gender]);

由于您使用的是重定向,因此您需要从会话中提取此数据以传递到视图中(或直接在视图中访问会话中的数据)。

或者您可以只从控制器返回此视图,而不必首先重定向。

答案 1 :(得分:1)

如果您使用数据重定向到URL,则可以获取数据表单会话。

return redirect()->route('thanks')->with(['success' => 'success', 'name' => $name, 'gender' => $gender]);

在您的视图中写

{{ Session::get('name') }}

{{ Session::get('gender) }}

如果您直接重定向到这样的视图

return view('thanks')->with(['success' => 'success', 'name' => $name, 'gender' => $gender]);

然后在您的视图中写

<p>{{ $name }}</p>
<p>{{ $gender }}</p>