Discussion:
[TYPO3-german] Gibt es in ExtBase keine Möglichkeit die Exception abzufangen? Exception while property mapping
Alexander Averbuch
2015-12-23 09:12:54 UTC
Permalink
Hallo zusammen,

ich bin am Verzweifeln. Gibt es in ExtBase wirklich keine Möglichkeit die Exception abzufangen?
#1297759968: Exception while property mapping at property path "":Object with identity "56" not found.

Ich habe ein ganz einfaches Beispiel, in dem ich die showAction aufrufe:

http://typo3blog.local/index.php?id=13&tx_gbuserregistration_main[user]=2&tx_gbuserregistration_main[action]=show&tx_gbuserregistration_main[controller]=User

Wenn ich die UID auf eine nicht existierende ändere

&tx_gbuserregistration_main[user]=222222

bekomme ich die o.g Exception. Eigentlich möchte ich an der Stelle eine Fehlermeldung anzeigen, dass das aufgerufene Object nicht existiert. Ist sowas in Extbase möglich?

Haben Core-Entwickler keine Gedanken darüber gemacht??? Wenn ich nach "Exception while property mapping at property path Object with identity not found." google, wird eine Unmenge an Websites gefunden, wo das Problem vorkommt. Allerdings gibt es keine Lösung.
Arne-Kolja Bachstein
2015-12-23 09:27:55 UTC
Permalink
Hallo,

schau mal, mit welchem HTTP-Code der Fehler kommt. Wenn die Exception mit einem 404 kommt, ist alles richtig. Dann musst Du nur im Installtool Deine 404-Seite konfigurieren.

Ohne Konfiguration einer 404-Seite werden glaube ich die Fehlermeldungen direkt angezeigt, was ja im Produktivbetrieb eher blöd ist. Und dass die Exception geschmissen wird ist schon richtig.

Gruß

Arne
Post by Alexander Averbuch
Hallo zusammen,
ich bin am Verzweifeln. Gibt es in ExtBase wirklich keine Möglichkeit die Exception abzufangen?
#1297759968: Exception while property mapping at property path "":Object with identity "56" not found.
http://typo3blog.local/index.php?id=13&tx_gbuserregistration_main[user]=2&tx_gbuserregistration_main[action]=show&tx_gbuserregistration_main[controller]=User
Wenn ich die UID auf eine nicht existierende ändere
&tx_gbuserregistration_main[user]=222222
bekomme ich die o.g Exception. Eigentlich möchte ich an der Stelle eine Fehlermeldung anzeigen, dass das aufgerufene Object nicht existiert. Ist sowas in Extbase möglich?
Haben Core-Entwickler keine Gedanken darüber gemacht??? Wenn ich nach "Exception while property mapping at property path Object with identity not found." google, wird eine Unmenge an Websites gefunden, wo das Problem vorkommt. Allerdings gibt es keine Lösung.
_______________________________________________
TYPO3-german mailing list
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Alexander Averbuch
2015-12-23 09:48:45 UTC
Permalink
Die 404-Seite ist angelegt und konfiguriert. Und die Exception wird in der Datei typo3/sysext/extbase/Classes/Property/TypeConverter/PersistentObjectConverter.php in der Methode fetchObjectFromPersistence geworfen.

protected function fetchObjectFromPersistence($identity, $targetType) {
if (ctype_digit((string)$identity)) {
$object = $this->persistenceManager->getObjectByIdentifier($identity, $targetType);
} else {
throw new \TYPO3\CMS\Extbase\Property\Exception\InvalidSourceException('The identity property "' . $identity . '" is no UID.', 1297931020);
}

if ($object === NULL) {
throw new \TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException('Object with identity "' . print_r($identity, TRUE) . '" not found.', 1297933823);
}

return $object;
}

und wieso den die 404-Seite? Ich möchte selbst die Exception abfangen.
Es tut mir wirklich leid, aber je länger ich mich mit Extbase beschäftige, desto schlechteren Eindruck habe ich vom Framework. So ein Sch....
Nicole Cordes
2015-12-23 10:11:07 UTC
Permalink
Hallo Alexander,

warum fängst du die Exception nicht einfach in deinem Controller ab und gibst dort dann entsprechend die Fehlermeldung an dein Fluid template weiter?!


Liebe Grüße,
Nicole
Post by Alexander Averbuch
Die 404-Seite ist angelegt und konfiguriert. Und die Exception wird in der Datei typo3/sysext/extbase/Classes/Property/TypeConverter/PersistentObjectConverter.php in der Methode fetchObjectFromPersistence geworfen.
protected function fetchObjectFromPersistence($identity, $targetType) {
if (ctype_digit((string)$identity)) {
$object = $this->persistenceManager->getObjectByIdentifier($identity, $targetType);
} else {
throw new \TYPO3\CMS\Extbase\Property\Exception\InvalidSourceException('The identity property "' . $identity . '" is no UID.', 1297931020);
}
if ($object === NULL) {
throw new \TYPO3\CMS\Extbase\Property\Exception\TargetNotFoundException('Object with identity "' . print_r($identity, TRUE) . '" not found.', 1297933823);
}
return $object;
}
und wieso den die 404-Seite? Ich möchte selbst die Exception abfangen. Es tut mir wirklich leid, aber je länger ich mich mit Extbase beschäftige, desto schlechteren Eindruck habe ich vom Framework. So ein Sch....
_______________________________________________
TYPO3-german mailing list
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Alexander Averbuch
2015-12-23 10:21:46 UTC
Permalink
wo genau im Controller soll ich das machen? Die Exception wird geworfen, bevor die Action show aufgerufen wird.
Alexander Averbuch
2015-12-23 10:26:41 UTC
Permalink
wie habt ihr das Problem gelöst? oder habt ihr es gar nicht???
Philipp Gampe
2015-12-24 08:55:36 UTC
Permalink
Hi Alexander Averbuch,
Post by Alexander Averbuch
wo genau im Controller soll ich das machen? Die Exception wird geworfen,
bevor die Action show aufgerufen wird.
Versuche es mal mit:

/**
* @param RequestInterface $request
* @param ResponseInterface $response
* @throws \Exception
*/
public function processRequest(RequestInterface $request,
ResponseInterface $response)
{
try {
parent::processRequest($request, $response);
} catch (\Exception $exception) {
$this->handleKnownExceptionsElseThrowAgain($exception);
}
}

https://github.com/TYPO3-extensions/news/blob/master/Classes/Controller/NewsBaseController.php#L48

Viele Grüße
--
Philipp Gampe – PGP-Key 0AD96065 – TYPO3 UG Bonn/Köln
Certified Integrator – Active contributor TYPO3 CMS
TYPO3 .... inspiring people to share!
Alexander Averbuch
2015-12-26 20:09:06 UTC
Permalink
vielen Dank für eure Antworten. So funktioniert es.

Dr Dieter Porth
2015-12-23 20:47:34 UTC
Permalink
Post by Alexander Averbuch
Hallo zusammen,
ich bin am Verzweifeln. Gibt es in ExtBase wirklich keine Möglichkeit
die Exception abzufangen?
#1297759968: Exception while property mapping at property path
"":Object with identity "56" not found.
http://typo3blog.local/index.php?id=13&tx_gbuserregistration_main[user]=2&tx_gbuserregistration_main[action]=show&tx_gbuserregistration_main[controller]=User
Wenn ich die UID auf eine nicht existierende ändere
&tx_gbuserregistration_main[user]=222222
bekomme ich die o.g Exception. Eigentlich möchte ich an der Stelle
eine Fehlermeldung anzeigen, dass das aufgerufene Object nicht
existiert. Ist sowas in Extbase möglich?
Haben Core-Entwickler keine Gedanken darüber gemacht??? Wenn ich nach
"Exception while property mapping at property path Object with
identity not found." google, wird eine Unmenge an Websites gefunden,
wo das Problem vorkommt. Allerdings gibt es keine Lösung.
_______________________________________________
TYPO3-german mailing list
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Hallo Alexander,

Welche Lösungen erwartest du?

Wenn ich mich richtig entsinne trat bei mir der Fehler auf, wenn ein
Datensatz als gelöscht gekennzeichnet war. Ich habe diesen Fall
präventiv im Controller abgefangen, indem ich abfragte, ob das Object
aktuell hidden oder deleted ist. Unbekannte UIDs konnte ich als
Fehlermeldung im Template abfangen.

In deinem Fall würde ich vorab eine Count-Abfrage machen, um die
Existenz des Objects abzusichern.
Wenn der Fehler dich extrem stört, dann mache einen Forge-Eintrag und
mache einen Vorschlag zur Core-Verbesserung. TYPO3 lebt von der
Mitarbeit der Community.

Dieter.
--
Dr. Dieter Porth -
Mein kleines TYPO3-Labor: http://www.mobger.de/
Loading...