我想构建一个BE扩展,它从另一个扩展读取存储库,并将数据作为CSV / XSL / XSLX传送而不将其保存在服务器上。例如,在带有修改标题的空白窗口中输出数据。
使用
正确触发BE AJAX请求 $TYPO3_CONF_VARS['BE']['AJAX']['tx_myext::ajaxID'] = 'filename:object->method';
如果从后端调用存储库也可以正常工作。
public function ajaxAction() {
...
$this->extRepository =& t3lib_div::makeInstance('Tx_MySecondExt_Domain_Repository_DataRepository');
...
}
但是从domain.tld/typo3/ajax.php?ajaxID=tx_myext::ajaxID
来电时
如果我直接用AJAX调用Tx_MySecondExt_Domain_Repository_DataRepository
方法的第二个存储库的存储库,它也找不到findAll()
。它只返回NULL。
也可以手动设置QuerySettings
public function findAllexport() {
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
return $query->execute();
}
另外,仅供参考4.5
编辑:
使用ObjectManager调用存储库也不起作用
$objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_ObjectManager');
$this->extRepository = $objectManager->get('Tx_MySecondExt_Domain_Repository_DataRepository');
答案 0 :(得分:1)
在加载自己的扩展程序之前,您是否确定已加载其他扩展程序?看看你的localconf.php
。通常,您需要在安装扩展程序之前在ext_emconf.php
中指定依赖项。
另外,请确保已将扩展程序的配置添加到TypoScript模板的静态包含中。
答案 1 :(得分:0)
在导出操作中
... Repository to file generation
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="data.xls"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
... output file
exit;
完成,没有ajax加上非常简单和愚蠢;)
如果somone知道对初始探测器的了解,我会很感激。