我在/libraries/PhpOffice/PhpWord/目录中有 PHPWORD。我正在尝试在应用程序的完全其他部分(Joomla网站)中使用它,如下所示:
require_once JPATH_LIBRARIES.'/vendor/autoload.php'; //composer
require_once JPATH_LIBRARIES.'/PhpOffice/PhpWord/PhpWord.php';
$Wzor = new PhpOfficePhpWordTemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');
但是我得到错误:
找不到类 'PhpOffice\PhpWord\TemplateProcessor'
我尝试了许多变体和路径,我尝试阅读在线帮助,但总是得到相同的结果。我可以寻求一些帮助和指导吗?如何将此类包含在脚本中?
使用/vendor
文件夹,而不是"库"(请参阅下面的原因)。
在项目根文件夹中:
composer require phpoffice/phpword
然后:
require_once JPATH_ROOT.'/vendor/autoload.php';
$Wzor = new PhpOfficePhpWordTemplateProcessor(JPATH_ROOT.'/images/powiadomienia/SzablonPowiadomienia.docx');
警告:
切勿在"/libraries"文件夹中运行"作曲家要求",因为它会删除最新版本上的Joomla核心。发生这种情况是因为人们正在使用这个文件夹,为了强调不应该使用它,Joomla核心团队从中删除了composer.json文件。因此,当尝试在此文件夹上添加库时,Joomla 核心会被清除。
为什么不使用"/libraries">?
从 https://docs.joomla.org/J3.x:Using_Composer_with_Joomla:
您可以通过作曲家安装任何额外的库吗?
目前不在乔姆拉!3.4. 从长远来看,它是CMS的 目标是您可以下载额外的软件包。为了强调这一点,我们将 尚未在主Joomla中发布composer.json文件! 下载。
从我发现的问题使用了框架 - Joomla。它有自己的方法来发现类。我必须将文件放入/libraries/src 文件夹中,然后将以下代码用于此类:
JLoader::registerNamespace('PhpOffice', JPATH_LIBRARIES . '/src');
$objPHPWord = new PhpOfficePhpWordPhpWord();
你需要用作曲家安装 phpoffice/phpword
composer require phpoffice/phpword