【问题标题】:PHP compact method undefined in Laravel 5.4Laravel 5.4 中未定义的 PHP 紧凑方法
【发布时间】:2020-05-17 03:34:30
【问题描述】:

我不得不将我的 laravel 5.4 应用程序移动到 >=PHP 7.3 服务器。将应用程序升级到更高的 laravel 版本会破坏一切。所以我坚持按原样完成这项工作。现在的问题是 Compact() 方法(用于将变量传递给视图的方法未定义)。我正在考虑在辅助类中编写 Compact 方法的副本,以使其全局可用。现在我什至不能在本地复制 PHP compact 方法。请帮忙提出任何建议。无论是关于如何解决问题还是使用紧凑方法的示例替代代码。

【问题讨论】:

  • 函数是 compact() 而不是 Compact()。它区分大小写,希望对您有所帮助。
  • @shahburhan 函数名称在 PHP 中不区分大小写(很遗憾)。
  • 在没有掌握项目的情况下不能说太多。您确定名称空间已正确定义吗?在函数名前添加 \ 是否可以解决问题?
  • 方法不是未定义的,您的输入是指未定义的变量。请参阅documentation 中的紧凑型更新日志(请参阅 PHP 7.3 的注释,它现在会抛出 E_NOTICE)。解决方案可以是只替换紧凑型以传递像return $this->view('something', ['var' => $var, 'anotherVar' => $anotherVar]); 这样的数组(或使用->with())。在Laravel github 上建议更新到 5.5 来解决它,但显然这不是你的选择。

标签: php laravel php-7.3 laravel-views laravel-upgrade


【解决方案1】:

你正在使用旧版本的 laravel 和新版本的 php。

您可以将 php 版本更改为降级,也可以迁移到 Laravel 5.5

check detail here

【讨论】:

    【解决方案2】:

    你应该使用compact():

    $name = 'James';
    surname = 'Hetfield'
    return view('some-template-name', compact('name', 'surname'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-03
      • 2020-08-04
      • 2019-02-14
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      相关资源
      最近更新 更多