我正在Laravel中创建一个站点,该站点使用控制器来验证表单中的信息,然后将用户返回到“感谢”页面。在该感谢页面上,我想使用用户的姓名和性别。
在我的控制器中,我拥有:
return redirect()->route('thanks')->with(['success' => 'success', 'name' => $name, 'gender' => $gender]);
然后,在视图中,我有:
<p>{{ $name }}</p>
<p>{{ $gender }}</p>
但是,由于某些原因,我不断收到此错误:
未定义变量:名称
奇怪的是,如果我在控制器中死掉并转储了$ name,它会在屏幕上正确显示它。
我尝试了各种不同的方法来尝试将多个变量传递给视图,以及尝试使用不同的变量名称和形式来再次接收它...但是一直无法使它起作用。
你们知道我可能会出错吗?一如既往,非常感谢您的帮助!欢迎所有想法,建议和评论:)谢谢!
答案 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>