Zum Inhalt springen

DateTime vom Extbase geänder?

Erstellt am 16. August 2018 · 1 Antwort · letzte Antwort am 16. August 2018

Tags: Frage

neos42 ·

Hallo Forum

Mir ist heute ein äußerst merkwürdiger Bug (oder Phänomen) untergekommen.
Zum Setup: Extbase Fluid Form mit einem f:form.textfield in das ich ein Unix Zeitstempel schreibe.
in der initializeCreateAction generiere ich daraus mit DateTime::createFromFormat ein DateTime objekt und überschreibe das Argument mit diesem.
Soweit so gut, das funktionier alles wunderbar.

In der CreateAction jedoch ist zwar immernoch das DateTime Objekt da wo es sein sollte, jedoch stimmt dieses um ein halbes Jahr (0,49...) nicht mehr.

Der Ablauf im Controller ist ja (gemäß https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php#L167):

if (method_exists($this, $actionInitializationMethodName)) {
    call_user_func([$this, $actionInitializationMethodName]);
}
$this->mapRequestArgumentsToControllerArguments();

Bereits nach dem mapRequestArgumentsToControllerArguments stimmt der Zeitstempel nicht mehr.
In dieser Funktion wird bei

$argument->setValue($this->request->getArgument($argumentName));

(https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php#L419)
der Timestamp verändert.

Ich habe das Problem durch einen ziemlich grauenhaften workaround gelöst, aber mich würde aber Trotzdem die Ursache interessieren.

Hat jemand von euch das selbe Problem?

TYPO3-Version: 8.7.18

Schöne grüße

neos42 ·

Update: Es scheint ein globales Problem zu sein, bei jeder Action werden die DateTime falsch gemappt.
Auch wenn die ursprüngliche Value nicht im Formular war.

Update 2: Auch beim einer normalen Ausgabe, wird das Property als modified markiert und mit einem falschen Timestamp angezeigt.