[Frage] Bei Form validierung gehen Daten verloren

  • BlackPixel BlackPixe...
    Sternenflotten-Admiral
    0 x
    230 Beiträge
    3 Hilfreiche Beiträge
    19. 09. 2013, 14:30

    Hey Leute,

    ich hab ein Formular, eine newAction und eine createAction. Im Formular sind Multiselects und Array`s drinne, im Model sind die als ObjectStorage definiert. Schicke ich das Form ab und das Objekt ist nicht valide, komme ich zur newAction zurück. Folgende Probleme habe ich dort:

    Mein Objekt ist immer NULL, im Formular werden dann aber wieder alle Felder mit Inhalt angezeigt -
    bis auf die m:n Verbindungen. Die gehen komplett verloren.

    Wenn ich in der createAction ein @ignorevalidation für das objekt setze, und dort gleich einen forward auf die newAction mache, sind alle Felder gefüllt, auch die denen ein ObjectStorage zu grunde liegt.

    Nun meine Fragen:
    Warum ist das Objekt nach Rückkehr zur newAction NULL
    Aus welchem Grund gehen die relationalen Daten verloren?
    Auch im Fluid Template kann ich das objekt nicht mehr ausgeben mit <f:debug></f:debug>
    Kann ich im Controller direkt die Objektvalidierung starten= Dann würde ich meinen eigenen forward machen und mit @ignorevalidation arbeiten.

    TYPO3 6.1.3

    Jemand ne Idee? Sieht stark nach einem Fehler von Extbase aus, oder?

    TYPO3 Slider Revolution: https://www.rutschmann.biz/extensions/typo3-slider-revolution/
    TYPO3 Layerslider Extension: http://www.rutschmann.biz/extensions/typo3-layerslider/
    TYPO3 Responsive Flipbook Extension: http://www.rutschmann.biz/extensions/typo3-responsive-flipbook/
    TYPO3 PayPal Download Checkout: http://www.rutschmann.biz/extensions/typo3-paypal-download/

    http://www.rutschmann.biz/
    ----------------------------------------------------
    Extbase, Fluid, HTML & CSS Development


  • 1
  • harald1972 harald197...
    Sternenflotten-Admiral
    0 x
    198 Beiträge
    13 Hilfreiche Beiträge
    25. 09. 2013, 11:33

    Hey auch,

    also die ein oder andere Idee hab ich ja...
    Die Felder sind nur mit dem gefüllt, was im Browser-Cache steht.
    Denn Attribute deines Objekts können es nicht sein, dieses ist ja NULL.
    Selbverständlich ist es NULL, wenn die Validierung fehlschlug.
    Das Fluid Template hat ebenfalls keine Ahnung, was es mit NULL darstellen soll.

    Kann ich im Controller direkt die Objektvalidierung starten?

    Diese Frage versteh ich nicht so ganz...
    Du startest die Validierung ja im Controller, mittels @validate.
    Durchgeführt wird die Validierung dann im entsprechenden Validator.
    Du [b]kannst[/b] natürlich im Controller alles mögliche tun und überprüfen. Wenn das Objekt hinterher alle zwingenden Voraussetzungen erfüllt, wirds wohl auch gut sein.
    Du [b]solltest[/b] allerdings deinen Controller schlank halten und eben Validierung den Validatoren überlassen.

  • BlackPixel BlackPixe...
    Sternenflotten-Admiral
    0 x
    230 Beiträge
    3 Hilfreiche Beiträge
    05. 10. 2013, 14:53

    Hai,

    also die Daten stehen definitv nicht im Browser Cache. Es ist tatsächlich so dass wenn das Objekt nicht valide ist, wird das Objekt mit den eingegeben Attributen wieder an das new Form gebunden. Allerdings steht in dem Moment in der newAction das Objekt nicht zur Verfügung. Im Template steht das objekt ebenfalls nicht über {obejct.blabla} zur Verfügung. Im Form stehen lediglich die Werte zur Verfügung die mittels property="" an ein Formelement gebunden wird. Da ich in meinem Fall aber die Daten im Template benötige, da ich nicht nur eigene Fluid Elemente für das Formular benötige muss ich das Objekt in der Annotation mittels @ignorevalidation durchlassen und gleich zu Anfang in der Action mittels

    1. $this->objectManager->get('TYPO3\\CMS\\Extbase\\Validation\\ValidatorResolver')

    das Model valideren, und im Fehlerfall per $this->forward zurück auf die newAction gehen. Als argumente übergebe ich mein noch nicht persistentes Objekt und Voila, ich kann wieder voll drauf zugreifen.

    TYPO3 Slider Revolution: https://www.rutschmann.biz/extensions/typo3-slider-revolution/
    TYPO3 Layerslider Extension: http://www.rutschmann.biz/extensions/typo3-layerslider/
    TYPO3 Responsive Flipbook Extension: http://www.rutschmann.biz/extensions/typo3-responsive-flipbook/
    TYPO3 PayPal Download Checkout: http://www.rutschmann.biz/extensions/typo3-paypal-download/

    http://www.rutschmann.biz/
    ----------------------------------------------------
    Extbase, Fluid, HTML & CSS Development

  • 1