您必须使用phpexcel库创建excel导出 . 所以我复制了我 class 的库,然后在我的控制器中编写以下代码
require_once PATH_site . 'typo3conf/ext/extension_name/Classes/Library/PHPExcel/IOFactory.php';
public function excelTest()
{
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$objReader = $objectManager->get('PHPExcel_IOFactory');
}
但它返回一个错误
致命错误:从/opt/lampp_repository/lampp-5.6/htdocs/typo3_src-7.6.6/typo3/sysext/core/中的上下文“TYPO3 \ CMS \ Core \ Utility \ GeneralUtility”调用私有PHPExcel_IOFactory :: __ construct()第4533行的Classes / Utility / GeneralUtility.php
1 回答
不要自己包含库,TYPO3有依赖注入 . 扩展目录中的所有php文件都将被编入索引,并且所有内部的Classes将自动可用,您只需要确保您的类缓存是新鲜的,如果有疑问则手动删除
typo3temp/Cache/Code/ClassLoader*
文件 .如果要将en外部类包含在自己的命名空间中,则必须使用
ext_autoload.php
文件提示Extbase如何包含它,因为如果多个扩展将代码加载到同一个类命名空间中,它们将发生冲突 .最好不要注入类本身,而是扩展它的Abstrct,这样您就可以以不会修改供应商文件的独立方式对其进行自定义 .
继承我的方法:
将PHPExcel的所有文件放入
yourextension/Classes/Vendor/PHPExcel
.创建一个新文件
yourextension/Classes/Vendor/PHPExcel.php
:然后,您应该能够在ActionController中注入类@ inject-Annotation:
进一步阅读:
https://wiki.typo3.org/Dependency_Injection
https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html