Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 05. April 2014 11:32

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

[GELÖST] Probleme bei Variablenübergabe an Formbuilder

CMSMS 1.11.10, FB 0.73

Folgendes Szenario:

Eine Seite enthält einen Button, der per POST eine Variable setzt und eine Seite mit einem FB-Formlar aufruft:

[== html ==]
<form method="post" name="formular" action="{cms_selflink href=anfrage}">
<input type="hidden" name="pbanfrage" value="Fachpraxis: {$item->title}"/>
<input type="submit" value="zum Anfrage Formular"/>
</form>

Die Formularseite übergibt den Inhalt der POST-Variablen an ein hidden field in FormBuilder:

{FormBuilder form='anfrage' value_fld54=$smarty.post.pbanfrage}

Das funktioniert auch, die Form enthält das hidden field mit dem gewünschten Wert (vorletzte Zeile:<input name="m7f46ffbrp__54" value="Fachpraxis: Nr. 1" id="fbrp__54" type="hidden">):

<form id="m7f46fmoduleform_2" method="post" action="http://www.test.de/test/anfrage.html" class="cms_form" enctype="multipart/form-data"> 
<div class="hidden"> <input name="mact" value="FormBuilder,m7f46f,default,1" type="hidden"> 
<input name="m7f46freturnid" value="74" type="hidden"> <input name="page" value="74" type="hidden"> 
<input name="m7f46ffbrp_callcount" value="1" type="hidden"> </div>  	
<div><input id="m7f46fform_id" name="m7f46fform_id" value="5" type="hidden"> 
<input id="m7f46ffbrp_continue" name="m7f46ffbrp_continue" value="2" type="hidden"> 
<input id="m7f46ffbrp_done" name="m7f46ffbrp_done" value="1" type="hidden"> </div> 	
<div class="stdform">
<div><h2>Anfrage-Formular</h2> <p>Füllen Sie einfach die Felder des Formulars aus und klicken Sie auf "Anfrage absenden". Hinweis: Felder die mit einem * gekennzeichnet sind *müssen* ausgefüllt werden.</p></div>
<div class="required"><label for="fbrp__43">Anfrage*</label><textarea name="m7f46ffbrp__43" cols="80" rows="15" class="cms_textarea" id="fbrp__43"></textarea></div>
<div class="required"><label for="fbrp__44">Name*</label><input name="m7f46ffbrp__44" value="" size="25" maxlength="128" id="fbrp__44" type="text"> </div>
<div><label for="fbrp__45">PLZ / Ort</label><input name="m7f46ffbrp__45" value="" size="25" maxlength="80" id="fbrp__45" type="text"> </div>	
<div><label for="fbrp__46">Adresse</label><input name="m7f46ffbrp__46" value="" size="25" maxlength="80" id="fbrp__46" type="text"> </div>
<div><label for="fbrp__47">Land</label><input name="m7f46ffbrp__47" value="" size="25" maxlength="80" id="fbrp__47" type="text"> </div>	
<div><label for="fbrp__48">E-Mail</label><input name="m7f46ffbrp__48" value="" size="25" maxlength="128" id="fbrp__48" type="email"> </div>
<div class="required"><label for="fbrp__49">Telefon*</label><input name="m7f46ffbrp__49" value="" size="25" maxlength="80" id="fbrp__49" type="text"> </div>
<div><label for="fbrp__50">Mobil</label><input name="m7f46ffbrp__50" value="" size="25" maxlength="80" id="fbrp__50" type="text"> </div>
<div><label for="fbrp__51">Telefax</label><input name="m7f46ffbrp__51" value="" size="25" maxlength="80" id="fbrp__51" type="text"> </div>	
<div><label for="fbrp__52">Rückruf erbeten</label><input class="cms_checkbox" name="m7f46ffbrp__52" value="t" id="fbrp__52" type="checkbox"> &nbsp;<a href="javascript:fbht('fbrp_ht_52')"><img src="modules/FormBuilder/images/info-small.gif" alt="Help"></a><span id="fbrp_ht_52" style="display:none" class="fbr_helptext">Sollen wir Sie zurückrufen, statt auf die E-Mail zu antworten?</span></div>
<input name="m7f46ffbrp__54" value="Fachpraxis: Nr. 1" id="fbrp__54" type="hidden">
<div class="submit"><input class="cms_submit fbsubmit" name="m7f46ffbrp_submit" id="m7f46ffbrp_submit" value="Anfrage absenden" type="submit"></div>
</div>
</form>

Nur: Die Form wird von Formuilder nicht verarbeitet.

Ruft man dagegen die Seite DIREKT auf, so wird kein POST-Parameter übergeben, der Modulaufruf übergibt einen leeren Wert, in der Form steht der Default_Wert des hidden fields aus der Formbuilder-Konfiguration.  DIESES - ansonsten identische - Formular wird nach Absenden verarbeitet!


Da die von FB erzeugten Formulare ja in jedem Fall identisch sind (bis auf den Wert des hidden fields der übergeben wird) habe ich mir mal die an Formbuilder weitergereichten POST-Parameter angesehen:

POST-Variable $pbanfrage ist gesetzt auf "Fachpraxis: Nr. 1" und wird per Modulaufruf
{FormBuilder form='anfrage' value_fld54=$smarty.post.pbanfrage}
übergeben. Hidden field m7f46ffbrp__54 enthält den gewünschten Wert.

POST-Variablen die an Formbuilder übergeben werden (laut Firebug):

mact    FormBuilder,m7f46f,default,1
m7f46freturnid    74
page    74
m7f46ffbrp_callcount    1
m7f46fform_id    5
m7f46ffbrp_continue    2
m7f46ffbrp_done    1
m7f46ffbrp__43    testanfrage
m7f46ffbrp__44    Alex
m7f46ffbrp__45   
m7f46ffbrp__46   
m7f46ffbrp__47   
m7f46ffbrp__48   
m7f46ffbrp__49    1111
m7f46ffbrp__50   
m7f46ffbrp__51   
m7f46ffbrp__54    Fachpraxis: Nr. 1
m7f46ffbrp_submit    Anfrage absenden

--> Absenden bewirkt nur, dass die Seite neu aufgerufen wird, keine Verarbeitung durch Formbuilder, auch keine Fehlerbehandlung wenn Pflichtfelder leer sind.

POST $pbanfrage ist leer, es wird somit ein leerer Parameter übergeben, m7f46ffbrp__54 enthält daher den Default-Wert aus der Formbuilder-Konfiguration:

mact    FormBuilder,m1f497,default,1
m1f497returnid    74
page    74
m1f497fbrp_callcount    1
m1f497form_id    5
m1f497fbrp_continue    2
m1f497fbrp_done    1
m1f497fbrp__43    testanfrage
m1f497fbrp__44    Alex
m1f497fbrp__45   
m1f497fbrp__46   
m1f497fbrp__47   
m1f497fbrp__48   
m1f497fbrp__49    1111
m1f497fbrp__50   
m1f497fbrp__51   
m1f497fbrp__54    strassenkater
m1f497fbrp_submit    Anfrage absenden

--> FUNZT!!


Ich seh einfach keinen Unterschied. :-((

Wo könnte man denn noch ansetzen? Was könnte Formbuilder daran hindern die Form zu verarbeiten?

Servus,
Alex

Beitrag geändert von faglork (05. April 2014 11:42)

Offline

#2 09. April 2014 21:30

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: [GELÖST] Probleme bei Variablenübergabe an Formbuilder

Moin!

Die Lösung ist strunzpippieinfach. Allerdings funzt es völlig anders als in der Modulhilfe angegeben ...



- verstecktes Feld anlegen

- als WERT  {$smarty.post.pbanfrage} eintragen

- unter "Erweitert", Smarty-Tags in den Feldern verarbeiten?: anhaken

Naja, wie gesagt, laut Modulhilfe ... aber halt mal, die Erläuterung steht nur in der englischen Hilfe und da steht auch wer das verbockt hat:

Modulhilfe schrieb:

Passing Default Values to Forms 

Calguy added a nice feature, which is that you can pass default field values to your form via the module tag. This allows you to have the same form in multiple places, but with different default values. It may not work for more exotic field types, but for fields that have a single value, you can specify like: 
{FormBuilder form='my_form' value_FIELDNAME='default_value'} 
This will set the field with FIELDNAME to 'default_value'.  This can be problematic, as sometimes field names are unwieldy or contain characters that don't work well with Smarty.
So there is an alternative like this: 
{FormBuilder form='my_form' value_fldNUMBER='default_value'} 
That uses field NUMBER, where NUMBER is the internal FormBuilder field id. You might wonder how you know what that id is. Simply go into the FormBuilder configuration tab, and check "Show Field IDs"

Soso. Wir haben mal den code angeschaut. Kein Kommentar ... der woanders bereits angesprochene "array-bug" (mit {FormBuilder form='my_form' value_fldNUMBER='default_value'}  übergebene STRING Werte landen als ARRAY in der E-Mail) ist gar kein bug, das steht so im code:

     if (! is_array($this->Value)) 
       {
          $this->Value = array($this->Value);
        }

Kein Wunder dass da ein String in ein Array umgewandelt wird ;-)
Wie gesagt, kein Kommentar ...

Ichbin jedenfalls froh dass ich jetzt ne Lösung habe.

BTW: Das hilft übrigens alles nix wenn sich der Formularabsender vertippt. Denn dann ist die POST variable weg. Aber naja.

Servus,
Alex

Beitrag geändert von faglork (09. April 2014 21:36)

Offline

#3 10. April 2014 13:41

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Probleme bei Variablenübergabe an Formbuilder

Danke für deine Lösung!

faglork schrieb:

Naja, wie gesagt, laut Modulhilfe ... aber halt mal, die Erläuterung steht nur in der englischen Hilfe

Tjaja, die FB Modulhilfe ist sowohl vom Umfang als auch vom Thema her schon ein bißl heftig. Hab mehrmals angesetzt, die vollständig zu übersetzen. Ist mir so nebenbei nie gelungen. Das war nach all der Zeit, die ich bereits für CMSMS übersetze, die erste Übersetzung, bei der mir der Gedanke kam, die nur gegen einen Obulus abzugeben.

Ich übersetze viel und gerne, nicht nur für CMSMS. Auch andere Systeme wie z. Bsp. gpEasy, FluxBB und Piwik tragen teilweise meine Handschrift. Aber momentan ist die mir für unbezahlte Jobs zur Verfügung stehende Zeit <mit dem Zaunspfahl wink /> arg eingeschränkt.

Offline

#4 10. April 2014 17:07

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: [GELÖST] Probleme bei Variablenübergabe an Formbuilder

cyberman schrieb:

Tjaja, die FB Modulhilfe ist sowohl vom Umfang als auch vom Thema her schon ein bißl heftig.

Und falsch ausserdem. Da steht immer noch FormBrowser-Gedöns drin etc.

Blöderweise müsste man das alles erstmal ausprobieren, sind viele interessante Ansätze, aber obs funzt? Und wenn, dann so wie in der Hilfe beschrieben?

Arbeit ohne Ende.

--> erst machen, wenn das englische Original korrekt ist.

Was mich etwas verwundert: Irgendjemand muss das Modul doch einsetzen? Also nicht nur die mitgelieferten Forms nehmen, sondern eben mal so Zeugs wie "den Feldern dynamisch neue Werte zuweisen" etc. Da muss doch auffallen dass das nicht geht? Und selbst beim statischen Zuweisen: Das ARRAY-Bugfeature fällt doch sofort auf?


Servus,
Alex

Beitrag geändert von faglork (10. April 2014 17:11)

Offline

#5 10. April 2014 19:25

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Probleme bei Variablenübergabe an Formbuilder

faglork schrieb:

--> erst machen, wenn das englische Original korrekt ist.

Also dieses Jahr nicht mehr  devil

Offline