Zum Inhalt springen

Mapping auf SysFile im AJAX-Call

Erstellt am 16. Oktober 2017 · 1 Antwort · letzte Antwort am 24. Oktober 2017

Tags: JavaScript & AJAX, TYPO3 8, Frage

getit ·

Ich meinem Modul versuche ich die Tabelle SysFile zu mappen.
Aber das klappt nicht - ich habe bereits diverse andere Tabellen wie BeUsers, SysFileReference erfolgreich gemappt und kann mir nicht erklären warum das einfach nicht funktioniert.

Ich sollte noch erwähnen, das ich versuche die Tabelle in einem AJAX-Call zu mappen.
Schreibe ich den Code aus der Methode des AJAX-Calls in die listAction() funktioniert der Code. Ist also korrekt - aber warum gehts im AJAX-Call nicht?

Ich habe zwei Klassen, SysFile und SysFileRepository:

Classes\Domain\Model\SysFile.php
<code>
<?php

namespace KKSoftware\Kkbaybw\Domain\Model;

use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class SysFile extends AbstractEntity {

/**
* @var string
*/
protected $identifier;

/**
* @return string
*/
public function getIdentifier() {
return $this->identifier;
}
}
</code>

Classes\Domain\Repository\SysFileRepository
<code>
<?php

namespace KKSoftware\Kkbaybw\Domain\Repository;

class SysFileRepository extends BaseRepository {

}
</code>

und das Mapping in der setup.ts:
<code>
module.tx_kkbaybw {
persistence {
// DAS GEHT NICHT - WIESO???
KKSoftware\Kkbaybw\Domain\Model\SysFile {
mapping {
tableName = sys_file
}
}
}
}
</code>

die localconf.php
<code>
....
$GLOBALS['TYPO3_CONF_VARS']['BE']['AJAX']['kkbaybwBackendImageInWYSIWIG'] = [
'callbackMethod' => 'KKSoftware\\Kkbaybw\\Controller\\Backend\AnsprechpartnerController->imageUploadInWYSIWIG'
];
.....
</code>

und zuletzt der AnsprechpartnerController
<code>
<?php

use KKSoftware\Kkbaybw\Domain\Repository\SysFileRepository;

public class AnsprechpartnerController extends BaseController {

/**
* @var SysFileRepository $sysFileRepository
*/
protected $sysFileRepository;

/**
* @param SysFileRepository $sysFileRepository
*/
public function injectSysFileRepository(SysFileRepository $sysFileRepository) {
$this->sysFileRepository = $sysFileRepository;
}

public function imageUploadInWYSIWIG() {
$postData = GeneralUtility::_POST();
if (!isset($postData['uid'])) {
return json_encode(['result' => 'Missing arguments']);
} else {
$uid = $postData['uid'];
$om = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
/** @var $sysFileRepository \KKSoftware\Kkbaybw\Domain\Repository\SysFileRepository */
$sysFileRepository = $om->get('KKSoftware\\Kkbaybw\\Domain\\Repository\\SysFileRepository');

//1
DebuggerUtility::var_dump($this->sysFileRepository->findAll());

//2
DebuggerUtility::var_dump($sysFileRepository->findAll());exit;
}
}
}
</code>
bei 1 wird ausgeben:
Call to a member function findAll() on null.

bei 2 wird ausgeben:
Table 'typo8.tx_kkbaybw_domain_model_sysfile' doesn't exist

getit ·

Habs rausgefunden.

Richtig (in setup.ts):

config.tx_extbase {
  persistence {
    classes {
      KKSoftware\Kkbaybw\Domain\Model\Seite {
        mapping {
          tableName = pages
        }

      }
    }
  }
}

Ich hatte vorher 'module.tx_kkbaybw' - das hat im rest des Moduls funktioniert.