【问题标题】:Laravel - Unable to variable from controller to viewLaravel - 无法从控制器变量到视图
【发布时间】:2019-02-13 16:45:57
【问题描述】:

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

在我的控制器中,我有:

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

然后,在视图中,我有:

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

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

未定义变量:名称

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

我尝试了各种不同的方法来尝试将多个变量传递给视图以及不同的变量名称和表单以再次接收它...但无法使其工作。

你们知道我哪里出错了吗?一如既往,我非常感谢您的帮助!欢迎所有想法、建议和 cmets :) 谢谢!!

【问题讨论】:

  • 这不是显示视图的代码,而是重定向..
  • 我会 +1 只是为了 奇怪的是 如果我死了并转储 $name 在控制器中,它会在屏幕上正确显示。
  • @Devon,知道如何将代码推回视图中吗?我也试过 return redirect()->route('thanks')->withInput(['success' => 'success', 'name' => $name, 'gender' => $gender]);不幸的是,没有运气。
  • 那仍然是一个重定向,返回你的视图的代码在哪里..
  • 是的,这是因为您不了解视图变量是在“谢谢”路由所在的任何位置设置的,而不是来自重定向。

标签: php laravel laravel-blade


【解决方案1】:
重定向上的

with() 将数据闪烁到会话中,它不涉及任何带有视图的内容。您不应将此方法调用与视图和重定向混淆,因为它们并不等同。

将变量传递给视图的唯一位置是您返回视图的位置:

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

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

或者你可以从你的控制器返回这个视图,而不是一开始就重定向。

【讨论】:

    【解决方案2】:

    如果您使用数据重定向到 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>
    

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 2014-12-08
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多