Zum Inhalt springen

TYPO3\CMS\Core\Utility\GeneralUtility\GeneralUtility not found

Erstellt am 13. Februar 2015 · 3 Antworten · letzte Antwort am 2. Mai 2016

Tags: TYPO3 6.x, Frage

jp_dev ·

Hallo,

habe folgendes Problem:
Ich rufe per ajax eine selbst angelegte Datei Ordner "Classes/Utility" auf. Hir möchte ich nun eine Repository-Abfrage starten.

Leider scheitere ich bereits an den ersten Metern:

<?php
namespace TYPO3\MyExtension\Utility;

class doAjax {
    private $arrData;
    protected $Repository;

    public function __construct() {
        $this->$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
        $this->$Repository = $objectManager->create('Vendor\Myextension\Domain\Repository\AccessoryRepository');
    }
...

Mein Ajax gibt im Post folgendes zurück:

<br />
<b>Fatal error</b>:  Class 'TYPO3\CMS\Core\Utility\GeneralUtility\GeneralUtility' not found in <b>C:\xampp\htdocs\seite\typo3conf\ext\myextension\Classes\Utility\doAjax.php</b> on line <b>9</b><br />

Edit:
hab einen Schreibfehler gefunden, leider ändert das nix am Ergebnis

<?php
namespace TYPO3\MyExtension\Utility;

class doAjax {
    private $arrData;
    protected $Repository;

    public function __construct() {
        $this->$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
        $this->$Repository = $objectManager->create('Vendor\Myextension\Domain\Repository\AccessoryRepository');
    }
...
jp_dev ·

Leider bin ich immer noch nicht weiter gekommen.
Aus einigen andren Extensions habe ich jetzt einen etwas andren aufbau gewählt, aber gehen tut es immer noch nicht:

<?php
namespace TYPO3\XXXproducts\Utility;

use TYPO3\CMS\Core\Utility\GeneralUtility;
class doCompare {
    private $arrData;
    protected $Repository;

    public function __construct() {
        $this->$objectManager = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
        $this->$Repository = $objectManager->create('XXXProducts\XXXproducts\Domain\Repository\XXXProductRepository');
    }
<br />
<b>Fatal error</b>:  Class 'TYPO3\CMS\Core\Utility\GeneralUtility' not found in <b>C:\xampp\htdocs\seite\typo3conf\ext\myextension\Classes\Utility\doCompare.php</b> on line <b>10</b><br />

Interessanter weise wird der Fehler für die Aufrufszeile und nicht die Use-Zeile angezeigt.

Hat irgendjemand irgendeine Idee was hier falsch läuft oder eine alternativ Lösung???

jenshh ·

Sorry, dein Post hat mir zumindest geholfen, da ich das gleiche Problem hatte.
Dein Problem waren fehlende doppel \\ und zu viele $. Es muss wie folgt aussehen:

$this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$this->$Repository = $objectManager->create('\\Vendor\\Myextension\\Domain\\Repository\\AccessoryRepository');

So funktioniert es jedenfalls bei mir.

freshman17 ·

Dem Fehler nach

<b>Fatal error</b>:  Class 'TYPO3\CMS\Core\Utility\GeneralUtility' not found in <b>C:\xampp\htdocs\seite\typo3conf\ext\myextension\Classes\Utility\doCompare.php</b> on line <b>10</b><br />

wird nach der Klasse in deinem Extensionordner gesucht. Da fehlt einfach nur ein Slash am Anfgang, muss also so heißen

use \TYPO3\CMS\Core\Utility\GeneralUtility;

Desweiteren ist die Nutzung der Methode create nicht zu empfehlen. Diese ist veraltet und wird ab TYPO3 6.3 entfernt. Nutzte die get-Methode stattdessen

$objectManager->get('Foo\Bar');