[Frage] Mapping auf SysFile im AJAX-Call TYPO3-Version: 8.7.8

  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    16. 10. 2017, 16:37

    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


  • 1
  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    24. 10. 2017, 08:57

    Habs rausgefunden.

    Richtig (in setup.ts):
    [code]config.tx_extbase {
    persistence {
    classes {
    KKSoftware\Kkbaybw\Domain\Model\Seite {
    mapping {
    tableName = pages
    }

    }
    }
    }
    }
    [/code]

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

  • 1