Formularfelder
From Joomla! Documentation
Einführung
Formularfelder sind Felder in einem HTML-Formular (<form>). Joomla! 2.5 und neuer enthält die JForm-Klasse, um bequem und flexibel Formulare mit vielen Formularfeldern zu erstellen. Jeder Formularfeldtyp ist eine Unterklasse von JFormField.
JFormFields ist nicht nur ein flexibles Werkzeug zur Erstellung von Seiten. Es wird auch verwendet, um Administratoren die Konfiguration von Joomla! oder seiner Erweiterungen zu ermöglichen, ohne den zugrunde liegenden Code zu ändern. In Joomla! 1.5 wurde dies durch die jetzt veralteten Klassen JParameter und JElement gehandhabt.
Um Formularfelder für den Konfigurationsbereich einer Erweiterung zu definieren, müssen sie in ein benanntes Fieldset, wie z. B. <fieldset name="basic"> innerhalb des Abschnitts <fields name="params"> des <config>-Elements in der XML-Manifestdatei eingebettet werden.
Validierung von Formulardaten
Joomla hat Möglichkeiten der client- und server-seitigen Formularüberprüfung.
Die serverseitige Überprüfung ist das Mindeste, da alles vorher auf der Benutzerseite überschrieben werden kann. Allerdings ist die client-seitige Überprüfung benutzerfreundlicher, daher ist es keine schlechte Idee, beide zu verwenden.
Clientseitige Überprüfung
... wird mit JavaScript umgesetzt, während der Benutzer die Formularfelder ausfüllt.
Es nutzt die HTML-Klassen required und validate-[xxx] (mit [xxx] als selbst erstellte oder Joomla-Regel, z. B. validate-numeric).
Weitere Informationen sind hier zu finden: Clientseitige Formularüberprüfung
Serverseitige Überprüfung
... wird durchgeführt, nachdem das Formular abgeschickt wurde. Wenn das Formular ungültige Daten enthält, wird der Benutzer normalerweise mit entsprechenden Nachrichten zum Formular zurückgeleitet.
Sie nutzt die HTML-Attribute required ("true" oder "required") und validate (mit einem Wert als selbst erstellte oder Joomla-Regel, z. B. validate="email").
Weitere Informationen sind hier zu finden: Serverseitige Formularüberprüfung
Standard-Formularfeldtypen
In Joomla! sind zahlreiche Formular-Elemente integriert. Die folgende Tabelle listet die standardmäßig enthaltenen Eingabe-Felder und die Version auf, ab der sie integriert sind. Wenn du die Referenz der Formular-Elemente ausdrucken möchtest, nutze die Einseitige Referenz.
Bitte beachte, dass viele dieser Felder als Parameter-Typen in Joomla! 1.5 verfügbar sind. Eine Liste der Parameter-Typen findest du unter J1.5:Standard Parameter-Typen. Einen Vergleich zwischen Formular-Feldern und Parameter-Typen findest du unter Standard Formular-Elemente und Parameter-Typen.
Typ | Beschreibung | Verfügbar ab | |
---|---|---|---|
verfügbare Medien | bietet dem Benutzer, mit entsprechenden Rechten, einen modalen Zugriff auf den Medien-Manager zum Einfügen von Bildern per Upload und ein Textfeld zum Hinzufügen eines Alternativtextes. | ![]() | |
Zugriffsstufen | Dropdown-Liste zur Anzeige der Zugriffsstufen | ![]() | |
Cachehandler | Liste mit den verfügbaren Cache-Optionen | ![]() | |
Kalender | Stellt ein Textfeld für die Eingabe eines Datums zur Verfügung. Neben dem Textfeld ist ein Icon zum Öffnen eines Popup-Kalenders. Dieser kann zur Auswahl des Datums genutzt werden. | ![]() | |
Captcha | Verwendung des Captcha-Plugins. | ![]() | |
Kategorie | Dropdown-Liste für die Kategorien einer Erweiterung. | ![]() | |
Checkbox | Ein einfaches Kontrollkästchen, das aktiviert oder deaktiviert werden kann. | ![]() | |
Checkboxen | Unendliche Anzahl von Kontrollkästchen mit Mehrfach-Auswahl. | ![]() | |
Chrome-Style | Liste mit Chrome-Style-Vorlagen, die nach Templates gruppiert sind. | ![]() | |
Farbe | Stellt eine Farbauswahl bereit, wenn in das Eingabefeld geklickt wird. | ![]() | |
Inhaltssprache | Eine Liste der Inhaltssprachen. | ![]() | |
Inhaltstyp | Eine Liste mit den Inhalts-Typen. | ![]() | |
Kombinationsfeld | Ein Kombinationsfeld (Combo-Box) | ![]() | |
Komponentenlayout | Bietet eine gruppierte Liste von Kern- und alternativen Template-Layouts für eine Komponente. | ![]() | |
Inhaltssprache | Bietet zur Verwendung eine Liste der installierten Inhaltssprachen, in Verbindung mit dem Sprachumschalter-Plugin. | ![]() | |
Datenbankverbindung | Bietet eine List der verfügbaren Datenbankverbindungen, welche optional auf eine bestimmte Liste beschränkt werden können. | ![]() | |
Editor | Bietet ein Editorfeld. | ![]() | |
Editoren | Bietet ein Dropdown-Liste der verfügbaren WYSIWYG-Editoren. Seit ![]() |
![]() | |
Bietet ein E-Mail-Feld. | ![]() | ||
Datei | Bietet ein Eingabefeld für das Hochladen von Dateien. | ![]() | |
Dateienliste | Bietet eine Dropdown-Liste von Dateien aus einem bestimmten Verzeichnis. | ![]() | |
Ordnerliste | Bietet eine Dropdown-Liste von Ordnern eines bestimmten Verzeichnisses. | ![]() | |
Gruppierte Liste | Bietet eine Dropdown-Liste von organisierten Elementen in Gruppen. | ![]() | |
Header-Tag | Bietet eine Dropdown-Liste von Überschriften-Tags. (h1-h6). | ![]() | |
Hilfsseite | Bietet eine Dropdown-Liste von Hilfsseiten für deine Joomla-Installation. | ![]() | |
Versteckt | Bietet ein verstecktes Feld zum Speichern eines Formularfeldes, dessen Wert nicht direkt durch einen Benutzer im Administratorenbereich verändert werden kann. (Eine Änderung könnte im Code oder durch das Verändern der Datei params.ini erfolgen) | ![]() | |
Bilderliste | Bietet eine Dropdown-Liste von Bilddateien eines bestimmten Verzeichnisses. | ![]() | |
Natürliche Zahl | Bietet eine Dropdown-Liste von natürlichen Zahlen zwischen einem Minimum und einem Maximum. | ![]() | |
Sprache | Bietet eine Dropdown-Liste von installierten Sprachen für das Frontend oder Backend. | ![]() | |
Liste | Bietet eine Dropdown-Liste von benutzerdefinierten Einträgen. | ![]() | |
Medien | Bietet modalen Zugriff auf den Medienmanager zum Einfügen von Bildern, mit Upload-Möglichkeit für Benutzer mit entsprechenden Berechtigungen. | ![]() | |
Menü | Bietet eine Dropdown-Liste von verfügbaren Menüs deiner Joomla-Seite. | ![]() | |
Menüelement | Bietet eine Dropdown-Liste von verfügbaren Menüeinträgen deiner Joomla-Seite. | ![]() | |
Fortschrittsanzeige | Bietet eine Fortschrittsanzeige, um Werte in einem Bereich anzuzeigen. | ![]() | |
Modul-Layout | Bietet eine Liste der alternativen Layouts für ein Modul, gruppiert nach Core und Template. | ![]() | |
Modul-Reihenfolge | Bietet eine Dropdown-Liste, um die Reihenfolge des Moduls an einer bestimmten Position festzulegen | ![]() | |
Modul-Position | Bietet eine Texteingabe, um die Position eines Moduls festzulegen. | ![]() | |
Modul-Tag | Bietet eine Liste von HTML5-Elementen (in die ein Modul eingebettet wird) | ![]() | |
Notiz | Bietet ein einzeiliges Textfeld | ![]() | |
Zahl | Bietet eine einzeilige Textbox um eine Ziffer mit Auf-und-Ab-Reglern festzulegen. | ![]() | |
Passwort | Bietet eine Textbox zum Eintragen eines Passwortes. Die Passwortzeichen werden bei der Eingabe unkenntlich gemacht. | ![]() | |
Plugins | Bietet eine Liste von Plugins aus einem bestimmten Ordner. | ![]() | |
Vordefinierte Liste | Formularfeld, um eine Liste von vordefinierten Werten zu laden. | ![]() | |
Radiofeld | Radio-Buttons zur Auswahl von verschiedenen Optionen. | ![]() | |
Bereich | Bietet eine horizontalen Scrollleiste, um einen Wert aus dem Bereich anzugeben. | ![]() | |
Wiederholbares Feld | Erstellt Formularfelder, die beliebig wiederholt werden können. | ![]() | |
Regeln | Bietet eine Matrix von Gruppen zum Verwalten der Zugriffssteuerung durch Aktionsoptionen. Die Anzeige hängt vom Kontext ab. | ![]() | |
Session-Handler | Bietet eine Dropdown-Liste der Session-Handler-Optionen | ![]() | |
Trenner | Ein visuelles Trennzeichen zwischen Formularfeldern. Es dient als visuelle Hilfe. Deshalb wird kein Wert gespeichert. | ![]() | |
sql | Bietet eine Dropdown-Liste von erhaltenen Einträgen durch die Ausführung einer Abfrage in der Joomla-Datenbank. Die erste Spalte, welche durch die Abfrage zurückgeben wurde, stellt dabei die Werte der Dropdown-Liste dar. | ![]() | |
Unterformular | Bietet eine Möglichkeit, XML-Formulare ineinander zu verschachteln oder vorhandene Formulare in einem aktuellen Formular wiederzuverwenden. | ![]() | |
Tag | Bietet einen Einstiegspunkt für Tags (entweder AJAX oder verschachtelt). | ![]() | |
Telefon | Ein Eingabefeld für eine Telefonnummer | ![]() | |
Template-Stil | Dropdown-Liste mit Template-Stilen. | ![]() | |
Text | Ein Textfeld zur Eingabe von Daten. | ![]() | |
Textfeld | Textbereich für die Eingabe von mehrzeiligen Text. | ![]() | |
Zeitzone | Dropdown-Liste mit Zeitzonen | ![]() | |
URL | Eingabefeld für URLs | ![]() | |
Benutzer | Feld zum Auswählen eines Benutzers von einer modalen Liste. Zeigt den Benutzernamen und die gespeicherte Benutzer-ID an. | ![]() | |
Benutzer - aktiv | Feld, welches eine Liste der verfügbaren aktiven Benutzerstatus anzeigt. | ![]() |
|
Benutzergruppe | Bietet eine Dropdown-Liste von Benutzergruppen. Seit ![]() |
![]() |
|
Liste der Benutzergruppen | Feld, um eine Dropdown-Liste zu laden, welche die verfügbaren Benutzergruppen enthält. Ersetzt usergroup aus den Formularfeldtypen. | ![]() |
|
Benutzerstatus | Feld, um eine Liste der verfügbaren Benutzerstatus zu laden. | ![]() |
Eigene Formularfeldtypen
Eine Erweiterung kann eigene Formularfeldtypen definieren, die dann in eigenen oder von einer anderen Erweiterung erstellten Formularen verwendet werden können. Siehe Erstellen eines eigenen Formularfeldtyps für eine Anleitung.
Modale Formularfeldtypen
Wenn ein Feld so viele Werte hat, dass sie nicht in ein Auswahlfeld passen, kann ein modales Formularfeld erstellt werden. Damit kann der Benutzer einen Eintrag aus einem modalen Fenster mit einer Tabelle, Filteroptionen usw. auswählen – ähnlich den Administrator-Tabellen, z. B. „Beiträge“. Siehe auch Erstellen eines modalen Formfelds.
Oft verwendete Attribute
Labelclass
Durch das Hinzufügen des Attributs labelclass wird eine CSS-Klasse für die Beschriftung von Formularfeldern hinzugefügt. Quelle: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28450
Showon
Das Hinzufügen des Attributs showon ermöglicht es, das Feld auf der Grundlage des/der Werte(s) eines anderen Feldes auszublenden.
Als Beispiel die Syntax, um das Feld bar nur dann anzuzeigen, wenn sowohl foo als auch baz auf „1“ gesetzt sind:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1"
/>
Um mehrere Werte abzugleichen, kann eine durch Komma getrennte Liste von Werten genutzt werden, wie z. B. showon="foo:1,2".
Um mehrere Felder zu kombinieren, kann [AND] verwendet werden, wie z. B. showon="foo:1[AND]bar:1".
Hier die Syntax, um das Feld bar nur dann anzuzeigen, wenn foo und baz auf „1“ gesetzt sind:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[AND]baz:1"
/>
Um eine Auswahl zwischen mehreren Feldern zu treffen, kann [OR] verwendet werden, wie z. B. showon="foo:1[OR]bar:1".
Hier die Syntax, um das Feld bar nur dann anzuzeigen, wenn entweder "foo" auf „1“ oder „baz“ auf „1“ gesetzt sind:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[OR]baz:1"
/>
Es können auch Werte, die nicht übereinstimmen, abgefragt werden, wie z. B. hier: showon="field1!:1".
Hier die Syntax, um das Feld bar nur dann anzuzeigen, wenn foo nicht gleich „1“ ist:
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
showon="foo!:1"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
Um ein Feld anzuzeigen, wenn ein anderes Feld (z.B. foo) ausgewählt wurde (sofern dieses andere Feld nicht leer ist), verwendet man showon="foo!:" (ohne Angabe eines Wertes).
Dies wurde mit einem PullRequest eingeführt und ist ab Joomla 3.2.4 verfügbar.
Fehlerbehebung: Attribute funktionieren nicht
Wenn du eine ältere Version unserer Entwicklerdokumentation gelesen oder den Code für die Formularanzeige von einer vorhandenen Erweiterung übernommen hast, funktionieren Attribute wie showon vielleicht nicht. Damit bestimmte Attribute funktionieren, müssen die Felder mit der Methode renderField() angezeigt werden. Zum Beispiel:
<div class="row-fluid">
<div class="span6">
<?php
foreach($this->form->getFieldset() as $field) {
echo $field->renderField();
}
?>
</div>
</div>