yform icon indicating copy to clipboard operation
yform copied to clipboard

Erstes yform-formular schickt zweites yform-formular mit!

Open simonsinus opened this issue 6 years ago • 19 comments

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?

simonsinus avatar Jan 30 '19 19:01 simonsinus

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.

alxndr-w avatar Jan 30 '19 19:01 alxndr-w

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));

simonsinus avatar Jan 30 '19 19:01 simonsinus

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.

alxndr-w avatar Jan 30 '19 20:01 alxndr-w

OK jetzt hats geklappt.

simonsinus avatar Jan 30 '19 20:01 simonsinus

kannst du das alles nochmal mit der aktuellen yform 3 beta 10 testen ? und für jedes einzelne Problem ein eigenes Issue aufmachen ?

dergel avatar Jan 31 '19 08:01 dergel

Ich schaue mal.

simonsinus avatar Jan 31 '19 09:01 simonsinus

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();
?>

ynamite avatar Oct 22 '19 12:10 ynamite

Hab's herausgefunden. Problem war real_field_names.

ynamite avatar Oct 22 '19 12:10 ynamite

Kann eigentlich nicht sein.

alxndr-w avatar Oct 22 '19 12:10 alxndr-w

@alexplusde

Kann eigentlich nicht sein.

Doch doch. Mit real_field_names klappt's nicht. Darfst du gerne selber testen.

ynamite avatar Oct 22 '19 13:10 ynamite

ist dann imho ein Bug @dergel oder?

alxndr-w avatar Oct 22 '19 13:10 alxndr-w

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.

ynamite avatar Oct 22 '19 13:10 ynamite

@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?

ynamite avatar May 26 '21 15:05 ynamite

$yform->setObjectparams('form_name', 'form-REX_SLICE_ID')

Das Name-Attribut der beiden <form>-Tags sind bei dir unterschiedlich? @ynamite

alxndr-w avatar May 26 '21 15:05 alxndr-w

@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.

ynamite avatar May 26 '21 15:05 ynamite

Ich kann das bestätigen, was @ynamite schildert. Definitiv kein gewünschtes/beabsichtigtes Verhalten von YForm aus meiner Sicht.

https://www.alexplus.de/test/

alxndr-w avatar May 26 '21 17:05 alxndr-w

Danke für den Test-Case @alxndr-w

ynamite avatar May 26 '21 18:05 ynamite

Problem verstanden. Ob wir das und wie wir das lösen muss ich noch schauen .. KOmmt aber auf die "Agenda" :)

dergel avatar May 27 '21 07:05 dergel

Problem besteht in YForm 4 immer noch!

fietstouring avatar Apr 27 '22 12:04 fietstouring

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 avatar Sep 14 '22 12:09 dergel

@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!

ynamite avatar Sep 14 '22 12:09 ynamite