【问题标题】:Class 'PhpOffice\PhpWord\TemplateProcessor' not found找不到类“PhpOffice\PhpWord\TemplateProcessor”
【发布时间】:2019-08-30 21:00:11
【问题描述】:

我在 /libraries/PhpOffice/PhpWord/ 目录中有 PHPWORD。我正在尝试在应用程序的其他部分(Joomla 网站)中完全使用它,如下所示:

require_once JPATH_LIBRARIES.'/vendor/autoload.php'; //composer
require_once JPATH_LIBRARIES.'/PhpOffice/PhpWord/PhpWord.php';
$Wzor = new \PhpOffice\PhpWord\TemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');

但我得到错误:

找不到类“PhpOffice\PhpWord\TemplateProcessor”

我尝试了许多变体和路径,我尝试阅读在线帮助,但总是得到相同的结果。我可以寻求一些帮助和指导吗?我怎样才能在我的脚本中包含这样的类?

【问题讨论】:

标签: php composer-php phpword phpoffice


【解决方案1】:

使用/vendor 文件夹,而不是“库”(请参阅下面的原因)。

在您的项目 root 文件夹中:

composer require phpoffice/phpword

然后:

require_once JPATH_ROOT.'/vendor/autoload.php';
$Wzor = new \PhpOffice\PhpWord\TemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');

警告:

永远不要在“/libraries”文件夹中运行“composer require”,因为它将删除更新版本上的 Joomla 核心。发生这种情况是因为人们正在使用这个文件夹并强调它不应该被使用,Joomla 核心团队从中删除了 composer.json 文件。因此,当尝试在此文件夹中添加库时,Joomla 核心会被清除。


为什么不使用“/libraries”

来自https://docs.joomla.org/J3.x:Using_Composer_with_Joomla

您可以通过 Composer 安装任何额外的库吗?

目前在 Joomla 中没有! 3.4.从长远来看,它是 CMS 的 目标是您可以下载额外的软件包。为了强调这一点,我们将 尚未在主 Joomla 中发布 composer.json 文件! 下载。

【讨论】:

  • 谢谢。但我没有直接使用作曲家。 PHPWord 已在库目录中。我只是在寻找将类包含到脚本中的方法。根据我的发现,只需要 JLoader::registerNamespace 即可找到此类。
【解决方案2】:

从我发现问题是使用框架 - Joomla。它有自己的发现类的方法。我必须将文件放入 /libraries/src 文件夹,然后将此代码放入此类:

JLoader::registerNamespace('PhpOffice', JPATH_LIBRARIES . '/src');
$objPHPWord = new \PhpOffice\PhpWord\PhpWord();

【讨论】:

    【解决方案3】:

    你需要用composer安装phpoffice/phpword

    composer require phpoffice/phpword
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 2018-06-15
      • 2021-11-26
      相关资源
      最近更新 更多