找不到类别'PhpOffice \ PhpWord \ TemplateProcessor'

时间:2019-04-09 14:17:05

标签: php composer-php phpword phpoffice

我在/ 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”类

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

2 个答案:

答案 0 :(得分:0)

使用/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核心被清除了。


为什么不使用“ /库”

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

  

您可以通过Composer安装任何其他库吗?

     

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

答案 1 :(得分:0)

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

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