Zum Inhalt springen

Extension bei Composer Installation

Erstellt am 15. Juni 2018 · 1 Antwort · letzte Antwort am 25. Juni 2018

Tags: Extbase, TYPO3 8, Frage

getit ·

Ich habe TYPO3 als VagrantVM über https://github.com/dachande/typo3-bootstrap installiert.

Jetzt wollte ich eine Extension installieren, die über bei einer "normalen" TYPO3-Installation (manuel das Archiv entdecken, symb.Links erstellen) erstellt wurde.

Die Extension wird mir jetzt im TYPO3-BE angezeigt.
Allerdings bekomme ich beim klick auf das Modul meiner Extension die Fehlermeldung:

Could not analyse class: "KKSoftware\Kkbaybw\Controller\Backend\IndexController" maybe not loaded or no autoloader? Class KKSoftware\Kkbaybw\Controller\Backend\IndexController does not exist (More information)

Nach etwas nachforschen habe ich rausgefunden, dass bei einer Extension für eine TYPO3-Composer Installation zusätzlich ein Composer.json in der Extension existieren muss.
Diese habe ich angelegt
.../typo3conf/ext/kkbaybw/composer.json

{
  "name": "kksoftware/kkbaybw",
  "type": "typo3-cms-extension",
  "description": "Extension KKBayBW for access to BayBW",
  "license": [
    "GPL-2.0+"
  ],
  "keywords": [
    "typo3",
    "cms",
    "kkbaybw"
  ],
  "version": "1.0.0",
  "require": {
    "typo3/cms-core": ">=7.6.0"
  },
  "suggest": {
  },
  "autoload": {
    "psr-4": {
      "KKSoftware\\Kkbaybw\\": "Classes/"
    }
  }
}

Ich habe danach meine Vagant-Installation dann mit

vagrant provision

neu provisioniert.
Auch

composer dump-autoload -o

um den Autoload zu aktualisieren habe ich ausgeführt.

Ich erhalte aber nach wie vor die gleiche Fehlermeldung.
Hat jemand eine Idee?

dachande ·

Hi,

da es sich bei der Extension um eine Eigenentwicklung handelt, die nicht über Composer installiert wurde, weiß Composer nicht, wo es nach der composer.json der Extension suchen muss und kennt demnach nicht die PSR-4 Autoloader Definition, die Du dort angegeben hast.

Das Autoloading muss daher in die composer.json des TYPO3 Projekts und nicht in der composer.json der Extension angegeben werden.

Nach der Anpassung der composer.json nochmal ein

composer dumpautoload -o

ausführen und ggf. auch in der VM nochmal in /var/www/projektverzeichnis zum Löschen des Caches folgendes aufrufen:

vendor/bin/typo3cms cache:flush

Dann sollte das Aktivieren der Extension funktionieren.

Wie Du richtig sagtest, sollte zwar jede Extension eine composer.json haben, solange Du die Extension aber nicht im TER oder auf Packagist veröffentlichst, ist sie nicht zwingend notwendig.

Ich hoffe, das hilft Dir weiter.