UploadFormField nicht in DialogFormDocument möglich?

  • Affected App
    WoltLab Suite Core

    Hallo,

    ich versuche gerade ein UploadFormField in DialogFormDocument zu implementieren.

    Beim Validieren der Daten gehe ich in der validate-Methode wie folgt vor:

    PHP
    $this->getForm()->requestData($this->parameters['data'] ?? []);
    $this->getForm()->readValues();
    $this->getForm()->validate();

    Wenn ich jetzt etwas hochlade und dann auf Absenden klickt, erhalte ich die Fehlermeldung Request data has already been set..

    Ich habe auch relativ schnell identifizieren können woran das liegt: https://github.com/WoltLab/WCF/bl….class.php#L382

    Hier wird getRequestData vom aktuellen Formular aufgerufen und befüllt somit bereits die Eigenschaft requestData das Formulars. Dadurch kommt dann die Fehlermeldung in der Methode requestData(...).

    Was ist hier der Best Practice um das UploadFormField in DialogFormDocument zu verwenden? Oder ist das mglw. aktuell gar nicht vorgesehen?

  • Joshua Rüsweg April 14, 2021 at 10:14 PM

    Added the Label 5.4.0 Beta 1
  • Hallo,

    ja, wir mussten für einen Fix das UploadFormField überarbeiten und die Logik entsprechend abändern. Es ist zwar unwahrscheinlich, dass es komplexere Ableitungen der Klasse gibt, welche durch die Änderungen inkompatibel werden, falls es aber welche gibt, gibt es das Risiko, dass diese nicht mehr korrekt funktionieren.

    Falls du das Feld so in einem Plugin einsetzen möchtest, ist es vermutlich am einfachsten, wenn du die Klasse temporär kopierst und in einem eigenen Namespace ablegst und diese so in 5.3 nutzt. Mit 5.4 kann theoretisch dann die korrekte Datei genutzt werden.

    Mehr zu dem Fix findest du hier: https://github.com/WoltLab/WCF/pull/4117

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!