Bug #42
offen[Bugsink] TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException: Object of type Qb\DvnlpIntranet\Domain\Model\Member with identity "3288" not found.
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/139988f0-4514-49ba-810c-5d2111628044/event/last/
Typ: NEW issue
Projekt: www-dvnlp-de
Bugsink Alert
TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException: Object of type Qb\DvnlpIntranet\Domain\Model\Member with identity "3288" not found.
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers: TargetNotFoundException für Member-Objekt mit UID 3288¶
1. Ursache identifizieren¶
Die TargetNotFoundException wird von Extbase ausgelöst, wenn ein Domain-Objekt (hier: Qb\DvnlpIntranet\Domain\Model\Member) mit einer bestimmten UID (3288) nicht in der Datenbank gefunden wird.
Dies tritt typischerweise in folgenden Szenarien auf:
- Das Objekt wurde gelöscht, aber es existiert noch eine Referenz darauf (z. B. in einer Relation, einem Plugin oder einer Frontend-Anfrage).
- Die UID ist falsch (z. B. durch manuelle Eingabe in einer URL oder einem Formular).
- Ein Cache-Problem: Der Extbase-Object-Cache enthält veraltete Referenzen.
-
Ein Repository-Aufruf (z. B.
findByUid()) wird ohne Prüfung aufnullverwendet. - Ein Plugin oder Controller versucht, das Objekt zu laden, ohne vorher zu prüfen, ob es existiert.
Konkreter Auslöser im Stacktrace:
Der Fehler tritt im Frontend-Kontext auf (siehe cms-frontend-Frames), vermutlich durch:
- Ein Extbase-Plugin (z. B. ein Member-Listing oder Detail-View), das die UID 3288 als Parameter erhält (z. B. via GET/POST oder TypoScript).
- Ein Controller, der direkt
findByUid(3288)aufruft, ohne vorher zu validieren.
2. Fix beschreiben (konkret)¶
Mögliche Lösungsansätze:
A) Validierung vor dem Laden des Objekts (empfohlen)¶
Im Controller oder Repository prüfen, ob das Objekt existiert, bevor es verwendet wird:
// Beispiel im Controller
$member = $this->memberRepository->findByUid($uid);
if (!$member instanceof \Qb\DvnlpIntranet\Domain\Model\Member) {
// Fehlerbehandlung: 404-Seite, Redirect oder Fehlermeldung
$this->redirect('list'); // oder throw new \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException();
}
B) Soft-Delete oder Deaktivierung prüfen¶
Falls das Member-Modell ein Feld wie deleted oder hidden hat:
// Im Repository anpassen
public function findByUid($uid) {
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(false); // Standardmäßig true
$query->matching($query->equals('uid', $uid));
return $query->execute()->getFirst();
}
C) Frontend-Parameter validieren¶
Falls die UID aus einem GET-Parameter (z. B. ?tx_myext_member[member]=3288) stammt:
// Im Controller
$uid = $this->request->getArgument('member');
if (!\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($uid)) {
$this->redirect('list');
}
D) Cache leeren¶
Falls der Fehler nach einem Löschvorgang auftritt:
# TYPO3-Cache leeren (CLI)
./vendor/bin/typo3 cache:flush
E) Datenbank prüfen¶
Manuell prüfen, ob der Datensatz existiert:
SELECT * FROM tx_dvnlpintranet_domain_model_member WHERE uid = 3288;
Falls nicht vorhanden:
- Wiederherstellen aus einem Backup.
-
Referenzen bereinigen (z. B. in
sys_file_reference,tt_contentoder anderen Tabellen).
3. Betroffene TYPO3 Extension¶
-
Extension-Name:
dvnlp_intranet(Namespace:Qb\DvnlpIntranet) -
Domain-Modell:
Member(Tabelle:tx_dvnlpintranet_domain_model_member) -
Wahrscheinliche Ursache im Code:
- Ein Plugin (z. B.
MemberDetail) oder Controller (z. B.MemberController) der Extension. - Ein TypoScript-Setup, das die UID 3288 hartcodiert oder dynamisch lädt.
- Ein Plugin (z. B.
4. Confidence (0–100%)¶
| Ursache | Confidence |
|---|---|
| Gelöschter Datensatz | 80% |
| Falsche UID in Frontend-Request | 15% |
| Cache-Problem | 5% |
| Gesamt | 95% |
Begründung:
- Die
TargetNotFoundExceptionist ein klarer Indikator für ein fehlendes Objekt. - Der Stacktrace zeigt, dass der Fehler im Frontend auftritt (kein Backend- oder CLI-Kontext).
- Die UID 3288 ist spezifisch – entweder wurde der Datensatz gelöscht, oder eine Referenz darauf ist veraltet.
Empfohlene nächste Schritte¶
- Datenbank prüfen (siehe SQL-Abfrage oben).
-
Controller/Repository der Extension analysieren (wo wird
findByUid(3288)aufgerufen?). -
Frontend-Parameter validieren (z. B. in
ext_localconf.phpoder im Controller). - Cache leeren (falls der Fehler nach einem Löschvorgang auftritt).
-
Logging hinzufügen (z. B. in
ext_localconf.php):$GLOBALS['TYPO3_CONF_VARS']['LOG']['Qb']['DvnlpIntranet']['writerConfiguration'] = [ \TYPO3\CMS\Core\Log\LogLevel::ERROR => [ \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [ 'logFile' => 'typo3temp/var/logs/dvnlp_intranet.log' ] ] ];
Falls der Fehler weiterhin besteht, wäre ein Ausschnitt des Controllers/Repositories der Extension hilfreich für eine genauere Analyse.
Nichts anzuzeigen