yform
yform copied to clipboard
Erstes yform-formular schickt zweites yform-formular mit!
Hallo,
ich habe untereinander auf einer Seite 2 yform Formulare.
Obwohl ich sie über $yform2->setObjectparams('form_name','liefer'); anders benannt habe. Wird trotzdem das nächste Formular und dort die E-Mails eben mit-abgeschickt?
Wie kann ich das verhindern?
Hallo @simonsinus, welche YForm-Version verwendest du?
Ein workaround wäre, beide Formulare auf eine Eingabe zu validieren und per redirect-action auf einen anderen Artikel nach dem erfolgreichen Absenden des Formulars zu leiten.
Ich verwende die 3.0-beta3.
Ich habe das erste Formular nun quasi hard-coded eingesetzt.
- Jetzt geht das so -
Nächstes Problem: Möchte ich nun dieses Formular senden, wird die E-Mail nur dann versendet, wenn ich auf der selbe Seiten wieder rauskomme.
Möchte ich die form_action aber auf einen weiteren Artikel setzen, wird die E-Mail nicht versendet.
$yform->setActionField('tpl2email', array("xxx", " ", "[email protected]"));
$yform->setObjectparams('form_action',rex_getUrl(25));
De objparam form_action ist keine Weiterleitung, es passt nur das Submit-Ziel im form-tag an. Was du willst, ist die action namens redirect.
OK jetzt hats geklappt.
kannst du das alles nochmal mit der aktuellen yform 3 beta 10 testen ? und für jedes einzelne Problem ein eigenes Issue aufmachen ?
Ich schaue mal.
Hi
yform 3.2
Habe dasselbe Problem: ich habe zwei yform Formulare auf einer Seite. Schickt man eines davon ab, werden beide Formulare ausgewertet/verschickt und dies obwohl ich form_name bei beiden Formularen unterschiedlich gesetzt habe.
Wie kann ich einstellen, dass nur das jeweilige Formular ausgewertet wird?
Hier mein Code:
$recipient = 'xxx@xxx';
$url = rex_getUrl($this->getValue('article_id'));
$yform = new rex_yform();
$yform->setDebug(false);
$yform->setObjectparams('real_field_names',1);
$yform->setObjectparams('submit_btn_show', false);
$yform->setObjectparams('form_action', $url);
$yform->setObjectparams('form_anchor', 'training-form');
$yform->setObjectparams('form_name', 'form-REX_SLICE_ID');
$yform->setValueField('text', array("name","Name", null, '', '{"placeholder":"Name"}'));
$yform->setValueField('text', array("telefon","Telefon", null, '', '{"placeholder":"Telefon"}'));
$yform->setValueField('email', array("email","E-Mail", null, '', '{"placeholder":"E-Mail"}'));
$yform->setValueField('text', array("company","Firma", null, '', '{"placeholder":"Firma"}'));
$yform->setValueField('textarea', array("nachricht","Nachricht"));
$yform->setValueField('html', array("button",'<button type="submit" class="button">Anfragen</button>'));
$yform->setActionField('tpl2email', array('training','email', $recipient));
echo $yform->getForm();
?>
Hab's herausgefunden. Problem war real_field_names.
Kann eigentlich nicht sein.
@alexplusde
Kann eigentlich nicht sein.
Doch doch.
Mit real_field_names klappt's nicht. Darfst du gerne selber testen.
ist dann imho ein Bug @dergel oder?
Sieht aus wie ein Bug, muss aber nicht zwingend einer sein, kann ja auch so gewollt sein bzw. gute Gründe dafür geben.
Schön wäre wenn's auch mit real_field_names klappen würde. Womöglich aber einfacher gesagt als getan.
Persönlich hab ich real_field_names lieber, macht's einfacher auf bestimmte Felder mit JS/CSS zielen, aber geht auch ohne.
@dergel @alxndr-w Das Problem besteht weiterhin.
Wenn real_field_names auf true ist und beide Formulare gleiche Felder (values und/oder validates) enthalten (zBsp. beide ein Feld mit Namen email), werden beide Formulare ausgewertet.
Wollen wir das Issue wieder öffnen?
$yform->setObjectparams('form_name', 'form-REX_SLICE_ID')
Das Name-Attribut der beiden <form>-Tags sind bei dir unterschiedlich? @ynamite
@alxndr-w nicht ganz:
$yform->setObjectparams('form_name', 'form-REX_SLICE_ID') setzt nicht das name-Attribut des form-Tags, sondern nur dessen ID-Attribut. Das wird auch das Problem sein.
Im konkreten Fall habe ich für Formular A:
$yform->setObjectparams('form_name', 'form-newsletter')
und Formular B:
$yform->setObjectparams('form_name', 'form-contact')
Edit:
Ohne real_field_names klappt's problemlos, aber manchmal sind die real_field_names eben praktisch.
Ein anderer Lösungsansatz wäre, falls das mit dem name-Attribut für das form-Tag nix wird, optional ein hidden-Feld zu verwenden, um ein Formular eindeutig zu identifizeren.
Ich kann das bestätigen, was @ynamite schildert. Definitiv kein gewünschtes/beabsichtigtes Verhalten von YForm aus meiner Sicht.
https://www.alexplus.de/test/
Danke für den Test-Case @alxndr-w
Problem verstanden. Ob wir das und wie wir das lösen muss ich noch schauen .. KOmmt aber auf die "Agenda" :)
Problem besteht in YForm 4 immer noch!
ich denke nicht, dass es ein Problem ist.. Am besten einfach die real_field_names ausschalten und dann geht es. wenn man verschiedene "form_name"s verwendet. Ich würde es so belassen.. Bitte ansonsten nochmal beschreiben warum das ein Problem ist
@dergel wie gesagt, nicht wirklich ein Problem. real_field_names sind in manchen Fällen einfach etwas schicker. Kann aber gut mit dem Ist-Zustand leben. Danke!