mehrere Array als <input checkbox> im Template ausgebe

Gesperrt
hes
Beiträge: 44
Registriert: Di 3. Jan 2006, 17:01
Kontaktdaten:

mehrere Array als <input checkbox> im Template ausgebe

Beitrag von hes »

Moin,
wer hilft mir auf die Sprünge - was muss ich "suchen" um die Lösung zu finden ;-)

Ich habe im Module-Output 3 unterschiedliche Array mit jeweils x-beliebige Elemente/Werte, die über ein Template als <input type="checkbox" name="x-beliebige-Elemente" value="{VALUE-x-beliebigeElemente}">{x-beliebige Elemente}<br>

bzw. mit radiobutton ausgegeben werden müssen. Wie stelle ich dieses so dynamisch und bequem her ... dass ich am besten nur mit foreach, while oder wie auch immer die drei Arrays im Output durchlaufen kann und im Template ausgegeben bekomme?

Eine Lösung mit festen Variablen alias:
$x-beliebige-Elemente1 = ...
$x-beliebige-Elemente2 = ...
$x-beliebige-Elemente3 = ...

kommt nicht in Frage, da statisch. Die Elemente für das/im Array werden im Module im INPUT eingegeben - und es können x-beliebig viele sein.

Die Lösung mit
<!-- BEGIN:BLOCK -->
<!-- END:BLOCK -->
klappt leider auch nicht - da ich drei Array-Blöcke bräuchte ... aber ein Template wohl nur einen dyn.-Block erlaubt... zumindest bekomme ich damit bei meinem Rumgespiele nur Mist raus.

Verständlich, was ich will/brauche?

Ich würde mich über Hilfe sehr freuen ...

Wünsche allen hier ein guten Rutsch ins neue Jahr...
Mfg. hes
hes
Beiträge: 44
Registriert: Di 3. Jan 2006, 17:01
Kontaktdaten:

Beitrag von hes »

falls jemand braucht ... ich hab's so gelöst:

Im INPUT-Modul werden Daten in einem Textarea eingetragen, diese Text-Daten im String werden im OUTPUT-Modul zum Array gewandelt, sodass folgendes vorliegt:

Code: Alles auswählen

	$Lehrgang = array(
		"Test PKW", 
		"Test LKW",
		"Test Motorrad"
		);
Diesen Array übergebe ich dann an die Variable $arraytocheckbox der Funktion ArrayToCheckBox:

Code: Alles auswählen

function ArrayToCheckBox($name='module1', $arraytocheckbox, $multiselect=true) {
   $stringcheckbox = '';
   $value = (isset($_POST[$name])) ? $_POST[$name] : '';
   if ($multiselect) {
      $name = $name.'[]';
      $inputtyp = 'checkbox';
      $aCheckbox = (is_array($value)) ? $value : array();
   } else {
      $inputtyp = 'radio';
      $aCheckbox = (is_string($value)) ? array($value) : array();
   }
   foreach($arraytocheckbox as $key => $wert) {
      $checked = (in_array($wert, $aCheckbox)) ? 'checked="checked"' : '';
      $stringcheckbox .= '<input type="' . $inputtyp . '" name="' . $name . '" value="' . $wert . '" ' . $checked . '>' . $wert . '<br>';
   }
   return $stringcheckbox;
}
Das Ergebnis an den Platzhalter vom initialisierte Template übergeben und den Platzhalter im Template selber ersetzen lassen.

Code: Alles auswählen

	$Lehrgangscheckbox = ArrayToCheckBox('Lehrgangsname',  $Lehrgang, true);
	$tpl->set('s', 'LEHRGANGSCHECKBOX', $Lehrgangscheckbox);
Im Template selber habe ich dann nur noch folgendes stehen:

Code: Alles auswählen

...
<tr><td>
	{LEHRGANGSCHECKBOX}
</td></tr>
...
Bemerkung:
Nach Aufruf der Funktion werden <inputs> mit dem Namen in $name angelegt, dieser Stringname nach dem Submit als Array zurückgegeben wird und wieder an die Funktion zurückgegeben wird (um die Selektionen auswerten zu können).
Mfg. hes
fa_alex
Beiträge: 4
Registriert: Mo 7. Aug 2006, 13:10
Kontaktdaten:

Beitrag von fa_alex »

Hallo,

ich hole diesen Thread wieder vor, da ich im Moment genau das Gleiche Problem habe. Die Lösung des Threadstarters ist mir natürlich geläufig, ich finde sie aber nicht sonderlich elegant.

Gibt es inzwischen (oder schon immer?) eine Lösung, mit der ich in den Templates verschiedene Blöcke definieren kann, auf die ich dann einzeln zugreifen kann?


Vielen Dank für eure Hilfe!


Grüße
Alex
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Err... sagen wir mal so:

CMS_VAR und CMS_VALUE können dynamisch gestaltet werden:

for ($i = 0; $i < 2; $i++)
{
echo "CMS_VAR[$i]"."<br />";
}
(dabei muss der Wert innerhalb der [] aber bestimmt sein -> "CMS_VAR[".$i+1."]" geht nicht).

Ansonsten habe ich die Frage nicht ganz verstanden...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt