BE AJAX-запрос доставляет пустой репозиторий

Я хочу создать расширение 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это не находит Tx_MySecondExt_Domain_Repository_DataRepository также, если я назову хранилище второго хранилища с findAll() метод непосредственно AJAX. Он возвращает только 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 ответа

Решение

Вы удостоверились, что другое расширение загружено прежде, чем будет загружено ваше собственное расширение? Посмотри на свой localconf.php, Обычно вам нужно указать зависимости в вашем ext_emconf.php перед установкой вашего расширения.

Также убедитесь, что вы добавили обе конфигурации расширения в Статические включения вашего шаблона TypoScript.

Внутри экспортной акции

... 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 плюс довольно просто и глупо;)

И все же, если бы кто-то знал, кто знает о первоначальном пробелем, я был бы признателен.

Другие вопросы по тегам