BE AJAX请求提供空存储库

时间:2015-07-14 12:03:55

标签: typo3 extbase typo3-4.5

我想构建一个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');

2 个答案:

答案 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知道对初始探测器的了解,我会很感激。