Bei der Programmierung für Kanboard Plugins gibt es Hilfsroutinen, um einfach (?) HTML-Form-Elemente zu erstellen. Um etwas zügiger damit arbeiten zu können, habe ich mal die am häufigsten benutzten Elemente im Trockenen ausprobiert. Einen wirklichen Hänger hatte ich dabei nur bei den Checkbox Elementen.
Einzelne Checkbox
Das ist noch relativ gradlinig und daher kaum ein Problem. Aus dem Template-Code
<?= $this->form->checkbox('no_adv', 'Wünscht keine Werbung', 1, isset($values['no_adv']) && $values['no_adv'] == '1' ) ?>
wird HTML eingesetzt
<label><input type="checkbox" name="no_adv" class="" value="1" checked="checked"> Wünscht keine Werbung</label>
So weit, so gut, andere machen das auch so.
Mehrere Checkboxen
Dies kann verwendet werden, wenn die Optionen in einem Array abgelegt sind. Wirklich interessant, und wenn man mal weiss, wie genau es funktioniert, ist es gar nicht mal so schlecht.
Abweichungen von der Einzel-Checkbox:
$values = array (
'beverage'=> ['beer', 'redwine'], // Nur Option 'beer' und 'redwine' sind gecheckt.
)
- Das Feld beverage muss ein Array sein.
- Dieses Array beverage muss nur die gecheckten Optionen enthalten, in diesem Fall ‘beer’ und ‘redwine’.
Ich kann damit mit einem Rutsch mehrere Checkboxen erstellen.
<?= $this->form->checkboxes('beverage', array(
'water' => 'Wasser',
'beer' => 'Bier',
'redwine' => 'Rotwein',
'whitewine' => 'Weisswein',
'whisky' => 'Single Malt Whisky',
'gin' => 'Gin',
), $values) ?>
Resultierender HTML-Code
<label><input type="checkbox" name="beverage[water]" class="" value="water" > Wasser</label>
<label><input type="checkbox" name="beverage[beer]" class="" value="beer" checked="checked"> Bier</label>
<label><input type="checkbox" name="beverage[redwine]" class="" value="redwine" checked="checked"> Rotwein</label>
<label><input type="checkbox" name="beverage[whitewine]" class="" value="whitewine" > Weisswein</label>
<label><input type="checkbox" name="beverage[whisky]" class="" value="whisky" > Single Malt Whisky</label>
<label><input type="checkbox" name="beverage[gin]" class="" value="gin" > Gin</label>
Die Daten werden als Form an den Server gepostet.
beverage[beer] "beer"
beverage[redwine] "redwine"
test_cbx[gamma] "0"
beverage[water] "0"
beverage[whitewine] "0"
beverage[whisky] "0"
beverage[gin] "0"
PHP macht aus dem empfangenen Feld ein Array, bei gecheckten Optionen ist Inhalt = Index, andernfalls 0. Das ist auch der Grund, wieso 0 nicht als Index verwendet werden kann bzw. sollte.
Hier sind also “beer” und “redwine” gecheckt, die Restlichen nicht.
["beverage"]=> array(6) {
["beer"]=> string(4) "beer"
["redwine"]=> string(7) "redwine"
["water"]=> string(1) "0"
["whitewine"]=> string(1) "0"
["whisky"]=> string(1) "0"
["gin"]=> string(1) "0"
}
Wie zuvor erwähnt, wenn man’s mal weiss …
Comments
February 17, 2023 10:05
A commitment of appreciation is all together for sharing, I found a tremendous store of stimulating information here. A striking post, incredibly grateful and obliging that you will make on a very major level more posts like this one. My Sainsburys Login Staff