【问题标题】:Laravel 6 assigns unwanted variables to viewLaravel 6 分配不需要的变量来查看
【发布时间】:2020-02-24 05:49:48
【问题描述】:

在我的 Web 应用程序中,我使用了两次视图,我称之为 modify-customer.blade.php。它用于创建新记录以及编辑现有记录。除了由指定客户填写的文本和表单输入值外,它具有完全相同的设计。

在我的edit-action 中,我分配了包含客户列表的变量“customers”(因为我还需要其他客户数据,由$customers = Customer::orderBy('name', 'asc')->get() 检索):

return view('customer.modify-customer', ['customers' => $customers]);

在我的new-action 中,我正在分配由$customer = Customer::where(xyz)->getFirstOrFail(); 检索到的单个客户记录,该记录已分配给视图:

return view('customer.modify-customer', ['customer' => $customer]);


问题是:

我可以在我的edit 操作中访问变量$customer(由于未知原因返回数据库表中的最后一条记录)。我真的不知道为什么,我从来没有为它分配一个名为customer 的变量。我只分配了customers

希望你们能理解我想说的话。谢谢您的帮助;我真的很感激一个想法如何禁用或解决这个问题。

【问题讨论】:

  • 您的模板中可能有一个foreach ($customers as $customer) ...所以您有一个由循环创建的$customer 变量,如果它完全运行,它将包含该集合中的最后一条记录
  • 展示您的观点,以便我们确认@lagbox 理论。
  • 我可以确认@lagbox 理论。但是 $customer 应该只在 foreach 循环中可用,不是吗?
  • 不幸的是,PHP 不会以这种方式作用域变量...$customer 将存在于循环之外,只要循环已经运行了
  • @lagbox 好的,这是有道理的,但我还没有在 laravel 文档中找到这个注释。我通过重命名变量来解决我的问题。感谢您的帮助!

标签: php laravel laravel-blade laravel-6


【解决方案1】:

确保您正确排序路线

/edit
/:id

变量之前的常量,这样它在view 路由之前捕获edit 路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多