Projekt

Allgemein

Profil

Aktionen

Bug #42

offen

[Bugsink] TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException: Object of type Qb\DvnlpIntranet\Domain\Model\Member with identity "3288" not found.

Von Bug Sink vor 9 Tagen hinzugefügt.

Status:
Neu
Priorität:
wichtig
Zugewiesen an:
-
Beginn:
15.06.2026
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

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 auf null verwendet.
  • 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_content oder 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.

4. Confidence (0–100%)

Ursache Confidence
Gelöschter Datensatz 80%
Falsche UID in Frontend-Request 15%
Cache-Problem 5%
Gesamt 95%

Begründung:

  • Die TargetNotFoundException ist 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

  1. Datenbank prüfen (siehe SQL-Abfrage oben).
  2. Controller/Repository der Extension analysieren (wo wird findByUid(3288) aufgerufen?).
  3. Frontend-Parameter validieren (z. B. in ext_localconf.php oder im Controller).
  4. Cache leeren (falls der Fehler nach einem Löschvorgang auftritt).
  5. 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

Aktionen

Auch abrufbar als: Atom PDF