[Frage] DateTime vom Extbase geänder?

  • neos42 neos42
    Padawan
    0 x
    32 Beiträge
    1 Hilfreiche Beiträge
    16. 08. 2018, 13:19

    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):
    [code]if (method_exists($this, $actionInitializationMethodName)) {
    call_user_func([$this, $actionInitializationMethodName]);
    }
    $this->mapRequestArgumentsToControllerArguments();
    [/code]

    Bereits nach dem mapRequestArgumentsToControllerArguments stimmt der Zeitstempel nicht mehr.
    In dieser Funktion wird bei
    [code]$argument->setValue($this->request->getArgument($argumentName));[/code]
    (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


  • 1
  • neos42 neos42
    Padawan
    0 x
    32 Beiträge
    1 Hilfreiche Beiträge
    16. 08. 2018, 15:04

    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.

  • 1