您必须使用phpexcel库创建excel导出。所以我复制了我班级的库,然后在我的控制器中编写以下代码
<?php
$strip_list = array('TagToremove');
foreach ($strip_list as $tag)
{
$temp = preg_replace('/<\/?' . $tag . '(.|\s)*?>/', '', $temp);
}
?>
但它返回错误
致命错误:从中调用私有PHPExcel_IOFactory :: __ construct() 上下文&#39; TYPO3 \ CMS \ Core \ Utility \ GeneralUtility&#39;在 /opt/lampp_repository/lampp-5.6/htdocs/typo3_src-7.6.6/typo3/sysext/core/Classes/Utility/GeneralUtility.php 在第4533行
答案 0 :(得分:1)
不要自己包含库,TYPO3有依赖注入。扩展目录中的所有php文件都将被编入索引,并且所有内部的Classes将自动可用,您只需要确保您的类缓存是新鲜的,如果有疑问则手动删除typo3temp/Cache/Code/ClassLoader*
文件。
如果要将外部类包含在自己的命名空间中,则必须使用ext_autoload.php
文件提示Extbase如何包含它,因为如果多个扩展将代码加载到同一个类命名空间中,它们将碰撞。
最好不要注入类本身,而是扩展它的Abstrct,这样您就可以以不会修改供应商文件的独立方式对其进行自定义。
继承我的方法:
将PHPExcel的所有文件放入yourextension/Classes/Vendor/PHPExcel
。
创建新文件yourextension/Classes/Vendor/PHPExcel.php
:
<?php
namespace Vendorname\Extensionname\Classes;
/*
* PhpExcel
*/
class PhpExcel implements \TYPO3\CMS\Core\SingletonInterface extends \PHPExcel {
// Differences from the original implementation, e.g. a writer that generates
// a filename and puts the Excel file into typo3temp
}
然后你应该能够在ActionController中注入类@ inject-Annotation:
/**
* PhpExcel
*
* @var \Vendorname\Extensionname\Classes\PhpExcel
* @inject
*/
protected $phpExcel;
进一步阅读: