Signatur
Beschreibung
UI\Controls\Form ist ein Layout-Container aus der PHP-UI-Erweiterung (php-ui / libui), der Controls in einem klassischen Formular-Layout anordnet. Jedes hinzugefügte Control erhält automatisch ein Label (Beschriftung), das links neben dem Control dargestellt wird — ähnlich wie man es aus Desktop-Anwendungsdialogen kennt.
Das Form-Control eignet sich besonders für Einstellungsdialoge, Konfigurationsmasken oder Dateneingabeformulare in nativen Desktop-Anwendungen, die mit der PHP-UI-Erweiterung erstellt werden. Es abstrahiert das manuelle Positionieren von Labels und Eingabefeldern und liefert ein konsistentes, plattformgerechtes Erscheinungsbild.
Controls werden mit der Methode append() hinzugefügt. Dabei kann jeweils angegeben werden, ob das Control einen verfügbaren Platz ausfüllen (stretchy) soll oder seine natürliche Größe behält. Über isPadded() und setPadded() lässt sich der innere Abstand zwischen den Controls steuern.
Hinweis: Die PHP-UI-Erweiterung (ui) muss installiert und aktiviert sein. Sie befindet sich außerhalb des PHP-Kerns und basiert auf der nativen Cross-Platform-Bibliothek libui.
Beispiele
Einfaches Formular mit Textfeldern erstellen
<?php
// Voraussetzung: PHP-UI-Erweiterung ist geladen
$window = new UI\Window('Benutzerdaten', 400, 300, false);
$window->setMargined(true);
$form = new UI\Controls\Form();
$form->setPadded(true);
$nameEntry = new UI\Controls\Entry();
$emailEntry = new UI\Controls\Entry();
// append(string $label, UI\Control $control, bool $stretchy)
$form->append('Name', $nameEntry, false);
$form->append('E-Mail', $emailEntry, false);
$window->add($form);
$window->show();
UI\run();
Formularlayout mit mehrzeiligem Textfeld (stretchy)
<?php
$window = new UI\Window('Nachricht senden', 500, 400, false);
$window->setMargined(true);
$form = new UI\Controls\Form();
$form->setPadded(true);
$betreff = new UI\Controls\Entry();
$nachricht = new UI\Controls\MultilineEntry();
$form->append('Betreff', $betreff, false);
$form->append('Nachricht', $nachricht, true); // stretchy: füllt verfügbaren Platz
// Prüfen, ob Abstände aktiviert sind
var_dump($form->isPadded()); // bool(true)
$window->add($form);
$window->show();
UI\run();
// Wichtig · Fallstricke
Erweiterung erforderlich: UI\Controls\Form ist Teil der PECL-Erweiterung ui (auch bekannt als php-ui) und steht nicht im PHP-Standard zur Verfügung. Die Erweiterung muss separat über PECL oder den Paketmanager des Betriebssystems installiert werden.
Indexierung: Controls werden intern mit einem nullbasierten Index verwaltet. Über delete(int $index) kann ein Control wieder entfernt werden. Achten Sie darauf, dass nach dem Entfernen eines Controls die Indizes der nachfolgenden Controls neu nummeriert werden.
Plattformverhalten: Das genaue visuelle Erscheinungsbild des Formulars ist plattformabhängig (Windows, macOS, Linux/GTK) und wird von der nativen libui-Bibliothek gerendert. Die Abstände und Ausrichtungen können je nach Betriebssystem leicht variieren.