[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • XForm mehrere Formulare auf einer Seite
Seite 1 von 1

XForm mehrere Formulare auf einer Seite

Verfasst: 10. Sep 2013, 12:20
von robcs
Es gab hierzu bereits einige Posts und ich habe sie mir alle angeschaut, leider wurde bei keinem eine Lösung gepostet.

Das Problem:
setzt man mehrere XForm Formulare auf einer Seite ein, dann werden beim Abschicken deren actions nicht ausgeführt, auch die validates scheinen nicht zu funktionieren, es erscheinen dazu keine Warnmeldungen mehr.

Code: Alles auswählen

objparams|form_id|form_xyz
objparams|form_name|xyz
... habe ich selbstverständlich bei beiden Formularen individuell gesetzt.

Das Problem ist eigentlich auch nicht nur die Anzahl die Formulare, sondern die "objparams", wenn man "form_name" abändert, dann funktioniert auch ein einzelnes Formular nicht mehr korrekt.

Hat jemand eine Lösung für dieses Problem?

Grüße
Robert

PS: Redaxo 4.4.1 Community Edition mit XForm 2.9.3

Re: XForm mehrere Formulare auf einer Seite

Verfasst: 10. Sep 2013, 15:41
von robcs
Lösung gefunden ...

diese beiden "Blöcke" muss man vertauschen, in der "class.rex_xform.inc.php",
da "getFieldValue" im ersten Teil bereits die ausgelesenen objparams benötigt, sonst ist der objparam von "form_name" zu diesem Zeitpunkt immer "formular" und "send" immer 0 (wenn man einen individuellen "form_name" verwendet).

Code: Alles auswählen

// *************************************************** ABGESCHICKT PARAMENTER
    $this->objparams["send"] = 0;

    if ($this->getFieldValue("send",'',"send") == "1")
    {
      $this->objparams["send"] = 1;
    }


    // *************************************************** VALUE OBJEKTE
    $rows = count($this->objparams["form_elements"]);
    for ($i = 0; $i < $rows; $i++)
    {
      $element = $this->objparams["form_elements"][$i];
      $ValueObjects = $this->_setValueElement($ValueObjects, $element, $i);
      $rows = count($this->objparams["form_elements"]); // if elements have changed -> new rowcount
    }
so sollte es sein:

Code: Alles auswählen

// *************************************************** ABGESCHICKT PARAMENTER 1
    $this->objparams["send"] = 0;

// *************************************************** VALUE OBJEKTE
    $rows = count($this->objparams["form_elements"]);
    for ($i = 0; $i < $rows; $i++)
    {
      $element = $this->objparams["form_elements"][$i];
      $ValueObjects = $this->_setValueElement($ValueObjects, $element, $i);
      $rows = count($this->objparams["form_elements"]); // if elements have changed -> new rowcount
    }

 // *************************************************** ABGESCHICKT PARAMENTER 2
    if ($this->getFieldValue("send",'',"send") == "1")
    {
      $this->objparams["send"] = 1;
    }

Re: XForm mehrere Formulare auf einer Seite

Verfasst: 21. Sep 2013, 19:17
von Hirbod
Hi,

dafür gab es einen eleganteren Quick and Dirty Patch :)

https://github.com/dergel/redaxo4_xform/pull/24

Eigentlich wurde dieser Bug bereits gemerged, ist aber irgendwie wieder rausgeflogen.