Zum Inhalt springen

Ajax Call Backend Dependency Injection not working (Controller empty)

Erstellt am 19. Oktober 2015 · 1 Antwort · letzte Antwort am 7. Januar 2016

Tags: JavaScript & AJAX, TYPO3 6.x, Frage

ironpfu ·

Hallo zusammen,
ich habe folgendes Problem. Ich rufen in einem BE Modul eine ControllerAction via Ajax um Inhalte nachzuladen.
Der Ajax Call läuft soweit auch. Das Problem ist, dass alle im Controller geladenen Services/Repositories nicht nur leer sondern gar nicht vorhanden sind (NULL).

Wenn ich diese über den ObjectManager direkt in der ControllerAction lade läuft alles.
Ich habe mir auch den Ajax Dispatcher im pt_exbase angesehen und versucht Bootstrap zu initialisieren, leider ohne Erfolg.

Was kann/muss ich tun damit alle DI welche im Controller definiert sind bei einem Ajax Call auch erstellt werden?

Derzeit ist meine Action wie folgt aufgebaut:

 /**
	 * action checkStatusAjaxAction
	 *
	 * @return void
	 */
        public function checkStatusAjax($parameter = array(), \TYPO3\CMS\Core\Http\AjaxRequestHandler &$ajaxObj = NULL) {
 
            $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
            $this->resourceFactory = $this->objectManager->get('\TYPO3\CMS\Core\Resource\ResourceFactory');

            $status = $this->checkSystemStatus();
            $ajaxTemplate = 'Administration/SystemStatus.html';
            $ajaxContent = $this->renderFileTemplate($ajaxTemplate, $status);
            $ajaxObj->addContent('newStatus', $ajaxContent);

        }
froemken ·

Ich hab das Gefühl, dass Du den Controller mit Hilfe von new oder makeInstance instanziierst. Das bringt nix. Denn diese beiden Möglichkeiten kümmern sich nicht automatisch um die injects. Geh in Deinen Ajax-Call, lade Dir den ObjectManager mit makeInstance und lade Dir dann den Controller mit dem ObjectManager, dann klappts auch mit den sauber eingebundenen Repositories