mod_form, Initialisierung einer Checkbox

Diskussion zum Formular-Modul für ConPresso 4
uwo
ConPresso-Newbie
Beiträge: 12
Registriert: 01.11.2007 18:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

mod_form, Initialisierung einer Checkbox

Beitrag von uwo »

Hallo, habe am Wochenende das Modul installiert und erste Formulare entworfen. Bis auf einen Punkt hat alles prima funktioniert (Lob an den Autor - eine echt praktische Sache!).
Ich möchte gerne eine checkbox vorauswählen (= Häkchen setzen), aber hier reagiert das Modul nicht auf einen entsprechenden Eintrag im Template.

Code: Alles auswählen

<!-- Text: InfoAbo; type=checkbox; checked; value=1; -->
Kann mir dazu jemand einen Hinweis geben? Bei Radiobuttons funktioniert es doch auch. :cry:
uwo - ConPresso Anwender
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Stimmt... funzt nicht.

Es wird nur ausgewählt, wenn man es beim Aufruf vorbelegt oder nach einer Fehleingabe das Feld neu gezeigt wird.

Aber hier ein Workaround:

Such in includes/parser_r_form.inc.php diesen Block

Code: Alles auswählen

if ($parameters['type'] == "radio")  { 
   $checked = (array_key_exists('checked', $parameters)) ? ' checked="checked"' : ''; 
   if ($_REQUEST['action']=="form") $checked = ($_t==$input_value) ? ' checked="checked"' : ''; 
   $_t = '<input type="radio" name="'.$field_name.'" value="'.$input_value.'"'.$input_class.$checked.$disabled.' />'; 
} 

if ($parameters['type'] == "checkbox")  {
	$checked = ($_t) ? ' checked="checked"' : '';
	$_t = '<input type="checkbox" name="'.$field_name.'" value="'.(($input_value)?$input_value:1).'"'.$input_class.$checked.$disabled.' />';
}
und ergänze ihn zu

Code: Alles auswählen

if ($parameters['type'] == "radio")  { 
   $checked = (array_key_exists('checked', $parameters)) ? ' checked="checked"' : ''; 
   if ($_REQUEST['action']=="form") $checked = ($_t==$input_value) ? ' checked="checked"' : ''; 
   $_t = '<input type="radio" name="'.$field_name.'" value="'.$input_value.'"'.$input_class.$checked.$disabled.' />'; 
} 

if ($parameters['type'] == "checkbox")  {
	$checked = (array_key_exists('checked', $parameters)) ? ' checked="checked"' : ''; 
	$checked = ($_t) ? ' checked="checked"' : '';
	$_t = '<input type="checkbox" name="'.$field_name.'" value="'.(($input_value)?$input_value:1).'"'.$input_class.$checked.$disabled.' />';
}
also einfach die Zeile

Code: Alles auswählen

	$checked = (array_key_exists('checked', $parameters)) ? ' checked="checked"' : ''; 
auch für die Checkbox eintragen.

Ungetestet. Feedback erwünscht.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
uwo
ConPresso-Newbie
Beiträge: 12
Registriert: 01.11.2007 18:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

mod_form, Initialisierung einer Checkbox, Test Workaround

Beitrag von uwo »

Hallo Markus, du bist ja ganz schön schnell - und das an einem Sonntag :wink:
Habe also die Zeile eingebaut, Codeabschnitt sieht jetzt so aus:

Code: Alles auswählen

if ($parameters['type'] == "checkbox")  {
  $checked = (array_key_exists('checked', $parameters)) ? ' checked="checked"' : ''; 
	$checked = ($_t) ? ' checked="checked"' : '';
	$_t = '<input type="checkbox" name="'.$field_name.'" value="'.(($input_value)?$input_value:1).'"'.$input_class.$checked.$disabled.' />';
}
An der checkbox hat sich aber leider nichts verändert. Vielleicht hilft der generierte Quelltext:

Code: Alles auswählen

<tr>
<td class="normalcell"><input type="checkbox" name="AGB" value="1" /><br><input type="checkbox" name="InfoAbo" value="1" /></td>
<td class="normalcell" style="font-size: 80%;">Mit * gekennzeichnete Angaben sind Pflichtfelder. Die Allgemeinen Geschäfts- und Datenschutzbestimmungen habe ich gelesen und akzeptiere sie hiermit.<br>Ja, informieren Sie mich auch künftig über interessante Themen und Produkte.</td>
</tr>
Es geht um die zweite checkbox mit Name "InfoAbo", hier wurde kein checked="checked" generiert.
Kann ich dir noch mit anderen Infos helfen?
Ciao Ulrich
uwo - ConPresso Anwender
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Dann entferne mal die Zeile

Code: Alles auswählen

   $checked = ($_t) ? ' checked="checked"' : ''; 
allerdings wird bei einem Eingabefehler das Teil dann nicht korrekt gefüllt...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Wenn das klappt, dann trage an diese Stelle diese Zeile ein

Code: Alles auswählen

   if ($_REQUEST['action']=="form") $checked = ($_t) ? ' checked="checked"' : ''; 
dann sollte auch der erneute Aufruf des Formulares korrekt erfolgen.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
uwo
ConPresso-Newbie
Beiträge: 12
Registriert: 01.11.2007 18:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

mod_form, Initialisierung einer Checkbox, Test

Beitrag von uwo »

Mit dem zweiten Anlauf scheint das Problem behoben zu sein - meine checkbox hat einen Haken :D
Danke für die schnelle Antwort, da hilft man doch gerne beim Testen!
Einen schönen restlichen Sonntag!
Ulrich
uwo - ConPresso Anwender
uwo
ConPresso-Newbie
Beiträge: 12
Registriert: 01.11.2007 18:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

mod_form, Initialisierung einer Checkbox, Schlussbemerkung

Beitrag von uwo »

Hallo Markus,
wollte dir nur abschließend sagen "Dein Formularmodul ist super :!: ". Gerade für jemanden, der nicht so besonders geübt ist mit PHP und dem ConPresso-Code, eröffnet es viele Möglichkeiten, eine Website attraktiver zu machen und den Dialog mit den Kunden zu fördern.
Habe inzwischen Formulare für unseren Infoservice (Anforderung von Unterlagen usw.) und eins für eine Art Kundenzufriedenheitsbefragung erstellt.
Also macht weiter so!
uwo - ConPresso Anwender