Hi,
Initialisierung im Controller:
/**
* backendUserRepository
*
* @var Tx_Profiletool_Domain_Repository_BackendUserRepository
*/
protected $backendUserRepository;
/**
* injectBackendUserRepository
*
* @param Tx_Profiletool_Domain_Repository_BackendRepository $backendUserRepository
* @return void
*/
public function injectBackendUserRepository(Tx_Profiletool_Domain_Repository_BackendUserRepository $backendUserRepository) {
$this->backendUserRepository = $backendUserRepository;
}
Ja die findByUids-Methode war eh nur experimentell.
Ich habe mir die Daten so angeschaut: t3lib_utility_debug::debug($result->toArray()); // Sonst gibts ja memoryLimit
Und auf die Objecteigenschaften zugreifen geht nicht, weil es nur ein String (eben die Id) ist.
Hi also hast du das debugging im repository gemacht?
Bin mir nicht sicher, aber kann sein, das er dort noch nicht das Model baut, sondern erst beim zurückgeben (durch funktionen die beim beenden einer Funktion aufgerufen werden).
Mach das debugging also am besten im controller.
Du hast zwei Möglichkeiten: entweder du nutzt dann die TYPO3 debugging Funktion (wobei ich normal t3lib_div::debug($var, 'comment'); nutze) oder du nutzt den Debugger den ich als Anhang hinzugefügt habe.
Den habe ich mal irgendwo gefunden, ist noch beta und nicht im TER. Da kannst du die Variable direkt übergeben und musst nicht ->toArray() machen. Der Debugger filtert unnütze Sachen raus und entfernt dubletten so das das Array dargestellt werden kann
Tx_ExtDebug::var_dump($var);
Soweit ich das von deinen Codeschnipseln gesehen habe sollte alles korrekt sein. Ich habe nichts anderes gemacht und bei mir geht es.
Hi, nein ich hab im Controller mittels debug(...->toArray()) geschaut.
Das beste ist, einfach das Repository links liegen lassen und eigenen (funktionierenden) Datenlayer einbauen...
Ne das beste ist es auf jeden Fall nicht. Das hat schon alles seinen Sinn. Und wie gesagt bei mir läuft alles problemlos ich musste nur die setup.txt ändern und fertig. Also hast du irgendwo einen Fehler gemacht.
Zip mal deinen aktuellen stand oder mach ne t3x und schick sie mir mal. Ich bin mir sicher ich find den Fehler wenn ich das im Gesmatbild sehe.
Hi, die ExtDebug Extension funktioniert nicht. Es erscheint:
Fatal error: Call to undefined method Tx_Extbase_Reflection_PropertyReflection::setAccessible() in /home/oliver/Entwicklung/PHPLocal/typo3/typo3conf/ext/ext_debug/Classes/Error/Debugger.php on line 155
Wäre natürlich witzlos, wenn die jetzt nur ab PHP 5.3 geht...
Ich glaub ich spinn.
Jetzt liefert mir mein ObjectRepository bei einer simplen Anfrage auch nur eine Id des gefundenen Datensatzes zurück. Es scheitert am Aufbau des zugehörigen Domain Objects. Also z.B.:
/**
*
* Searches an object or more by a part of a name
* @param string $name
*
* @return Tx_Extbase_Persistence_QueryResult
*/
public function findByPartialName( $name ) {
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->matching(
$query->equals('first_name', $name)
);
return $query->execute();
}
Hat jemand schon mal dieses Problem gehabt?
Ich nehm meinen vorherigen Post zurück. War mein Fehler.
Ich muss auf bei einem Ergebnis, einen Indexzugriff machen, also z.B.:
$q = $query->execute();
return $q[0];
Solche Fehlerchen passieren häufig, wenn man mit einer (scheinbar) typenlosen Sprache arbeitet, und die IDE keine sauberen Vorgabe bzgl. Typen der Parameter und Rückgabewerte macht.
Gruß
oliver_g schrieb
Hi, die ExtDebug Extension funktioniert nicht. Es erscheint:
Fatal error: Call to undefined method Tx_Extbase_Reflection_PropertyReflection::setAccessible() in /home/oliver/Entwicklung/PHPLocal/typo3/typo3conf/ext/ext_debug/Classes/Error/Debugger.php on line 155
Wäre natürlich witzlos, wenn die jetzt nur ab PHP 5.3 geht...
Ja das kann gut sein, da ich schon ne halbe ewigkeit auf PHP 5.3 arbeite fällt mir sowas nicht auf.
oliver_g schrieb
Ich nehm meinen vorherigen Post zurück. War mein Fehler.
Ich muss auf bei einem Ergebnis, einen Indexzugriff machen, also z.B.:
$q = $query->execute();
return $q[0];
Solche Fehlerchen passieren häufig, wenn man mit einer (scheinbar) typenlosen Sprache arbeitet, und die IDE keine sauberen Vorgabe bzgl. Typen der Parameter und Rückgabewerte macht.
Gruß
sofern du keine findOneByProperty() Funktion nutzt bekommst du immer ein ObjektStorage zurück selbst wenn keine oder nur ein Datensatz gefunden wurde.
Willst du immer nur den ersten Datensatz erhalten mach einfach:
return $query->execute()->getFirst();
Jo, wahrscheinlich war das auch das "Problem" bei dem Auslesen der BackendUser.
Das Wissen rund um Extbase läppert sich so allmählich zusammen ;-)
Gruß
Ich empfehle dir mal dieses PDF auszudrucken und neben deinen PC zu legen. Hat mir auch schon oft geholfen:
http://www.typovision.de/fileadmin/slides/ExtbaseFluidCheatSheetTypovision.pdf
Oh, das Ding ist ja wirklich genial (praktisch) :p . Habs mir gleich ausgedruckt (in Farbe ;-)
Ich habs noch nicht ganz begriffen.. was bringt mir dieser recordType und warum funktioniert meine Extension und liefert mir meine Objekte zurück wenn ich diesen auskommentiere, bzw. macht garnix mehr wenn ich den setze?
Ich meine, ich verstehe schon, dass extbase dann nach dem type sucht - aber was bringt mir das aus Entwicklersicht? Also aus welchem Grund möchte ich diese Einschränkung?!
bberger schrieb
Ich meine, ich verstehe schon, dass extbase dann nach dem type sucht - aber was bringt mir das aus Entwicklersicht? Also aus welchem Grund möchte ich diese Einschränkung?!
Soweit ich weiß, wurde das eingeführt um "Single Table Inheritance" zu ermöglichen. Hab mich aber auch schon extrem daran gestört, weil das einige Sachen sehr umständlich macht. Man findet leider auch nirgendwo so richtig detaillierte Infos darüber...
Edit: siehe z.B. auch hier:
#111471