NAME

Quiq::Html::Form::Layout - HTML-Formular mit freiem Layout

BASE CLASS

Quiq::Hash

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 kein form-Tag erzeugt.

hidden => \@keyVal (Default: [])

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.221

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.