NAME
Quiq::Html::Form::Layout - HTML-Formular mit freiem Layout
BASE CLASS
DESCRIPTION
Die Klasse erzeugt ein HTML-Formular mit einem freiem Layout, d.h. der HTML-Code "um die Widgets herum" wird von der Klasse nicht vorgegeben, sondern per Objektattribut gesetzt, ebenso wie die Liste der Widgets. Die Methode html() der Klasse setzt die Widgets in das Layout ein.
Für jedes Widget enthält das Layout einen Platzhalter, der sich aus dem Namen des Widget herleitet. Der Platzhalter wird gebildet, indem der Widget-Name in Großbuchstaben gewandelt und um zwei Unterstriche am Anfang und am Ende ergänzt wird.
Beispiele:
Widget-Name Platzhalter
----------- -----------
vorname __VORNAME__
nachname __NACHNAME__
aktion __AKTION__
Anmerkungen:
Hidden-Widgets oder Widgets, die hidden geschaltet sind, werden nicht in das Layout eingesetzt, sondern als Hidden-Inputs (
<input type="hidden" ...>
) dem Layout-HTML vorangestellt.<!--optional ...-->
Meta-Tags werden nach dem Einsetzen der Widgets in das Layout aufgelöst.
ATTRIBUTES
- form => \@keyVal (Default: undef)
-
Eigenschaften des
form
-Tag. Ist das Attribut nicht gesetzt, wird keinform
-Tag erzeugt. -
Schlüssel/Wert-Paare, die als Hidden-Widgets gesetzt werden.
- layout => $html (Default: '')
-
Der HTML-Code des Layouts. In das Layout wird der HTML-Code der Widgets eingesetzt.
- widgets => \@widgets (Default: [])
-
Liste der Widgets, die in das Layout eingesetzt werden.
EXAMPLE
Der Code
Quiq::Html::Form::Layout->html($h,
layout => Quiq::Html::Table::Simple->html($h,
class => 'form',
rows => [
[['Vorname:'],['__VORNAME__']],
[['Nachname:'],['__NACHNAME__']],
[[''],['__AKTION__']],
],
),
widgets => [
Quiq::Html::Widget::Hidden->new(
name => 'id',
value => '4711',
),
Quiq::Html::Widget::TextField->new(
name => 'vorname',
value => 'Lieschen',
),
Quiq::Html::Widget::TextField->new(
name => 'nachname',
value => 'Müller',
),
Quiq::Html::Widget::Button->new(
id => 'speichern',
name => 'aktion',
value => 'speichern',
content => 'Speichern',
),
],
);
erzeugt
<input type="hidden" name="id" value="4711">
<table class="form" cellspacing="0">
<tr>
<td>Vorname:</td>
<td><input type="text" name="vorname" value="Lieschen" /></td>
</tr>
<tr>
<td>Nachname:</td>
<td><input type="text" name="nachname" value="Müller" /></td>
</tr>
<tr>
<td></td>
<td><button id="speichern" name="aktion" type="button"
value="speichern">Speichern</button></td>
</tr>
</table>
Das tabellarische Layout wird hier von einer anderen Klasse (Quiq::Html::Table::Simple) geliefert, die die Tabelle erzeugt.
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$e = $class->new(@keyVal);
Description
Instantiiere ein Formular-Objekt mit den Eigenschaften @keyVal und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
html() - Generiere HTML
Synopsis
$html = $e->html($h);
$html = $class->html($h,@keyVal);
Description
Generiere den HTML-Code des Formular-Objekts und liefere diesen zurück. Als Klassenmethode gerufen, wird das Objekt intern erzeugt und mit den Attributen @keyVal instantiiert.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.