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');
}
...
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???
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.
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');