URL Parameter verwenden, um Default Werte im Formular zu setzen
URL-Parameter stellen ein interessantes Feature dar. URL-Parameter eröffnen Möglichkeit, die Felder in einem Formular über den Link, mit dem das Formular aufgerufen wird, mit individuellen Defaultwerten zu füllen.
URL-Parameter sind sehr einfach zugänglich. Das Feature kann daher theoretisch durch böswillige Nutzer genutzt werden, um ein Formular zu manipulieren und zu missbrauchen. Deshalb hat dieses Feature bei der Entwicklung einige besondere Sicherheitsmaßnahmen erhalten.
Verwendung von URL-Parametern erlauben
Die Verwendung von URL-Parametern ist standardmäßig für alle Felder deaktiviert. Wenn Sie für ein Feld die Verwendung von URL-Parametern zum Setzen eines Defaultwerts verwenden wollen, müssen Sie dies in den Einstellungen des Feldes explizit aktivieren. Stellen Sie auf dem Reiter “Erweitert” den Parameter Url Parameter erlauben auf “ja”. Dies ist eine Sicherheitsmaßnahme.
Format der URL-Parameter
An eine URL können beliebig viele Parameter der Form name=wert angehängt werden.
In einer URL muss vor dem ersten Parameter ein Fragezeichen ? stehen.
Zwischen mehreren Parametern steht hingegen ein kaufmännisches &.
Die komplette URL sieht dann wie folgt aus:
https://www.domain.de/website?parameter1=value1¶meter2=value2¶meter3=value3
Der Parametername
Der genaue Parametername, den Sie in Ihrer URL verwenden müssen, um einen Defaultwert für ein bestimmtes Feld zu setzen, hängt davon ab, wie Sie das Formular veröffentlicht haben.
Formular als Menüeintrag veröffentlicht
Ist das Formular über einen Menüeintrag vom Typ Visforms » Formular veröffentlicht, dann setzt sich der Parametername folgendermaßen zusammen:
"form" + ID des Formulars + Wert in der Option "Name" des Feldes
Haben Sie beispielsweise im Formular mit der ID 3 ein Feld, das in der Option “Name” den Wert “name” stehen hat, dann können Sie dieses über den Parameternamen form3name ansprechen.
Formular als Visforms Modul veröffentlicht
Ist das Formular über ein Visforms Modul veröffentlicht, dann setzt sich der Parametername folgendermaßen zusammen:
"modvisform" + ID des Moduls + Wert in der Option "Name" des Feldes
Haben Sie beispielsweise oben genanntes Formular mit der ID 3 über ein Visforms Modul veröffentlicht, das die Modul-ID 318 hat, dann können Sie das oben genannte Feld in diesem Formular erreichen über den Parameternamen modvisform318name.
Der Parameterwert
Der Parameterwert ist eine Zeichenkette, die später im Formular-Feld als Defaultwert übernommen werden soll. Aus Sicherheitsgründen können nur Zeichenketten als Parameterwert übergeben werden.
Handelt es sich bei dem Feld um ein Eingabefeld, in das Text eingegeben werden kann, dann können Sie einen beliebigen Defaultwert festlegen. Handelt es sich dagegen um eine Listbox, ein Radio Button, eine Checkbox Gruppe oder eine Checkbox so besitzen diese Felder eine Liste von erlaubten Parameterwerten und Sie müssen einen solchen erlaubten Wert übergeben. Erlaubt sind alle Werte, die Sie in der Feldkonfiguration in der Optionsliste als jeweiligen Optionswert eingegeben haben. Im Formular ist dann die zu diesem Wert passende Option ausgewählt.
Besonderheiten bei Listboxen und Checkbox Gruppen
Hinweis: Bei Listboxen und Checkbox Gruppen muss an den Parameternamen '[]' angehängt werden.
Listboxen und Checkbox Gruppen können unter Umständen mehr als eine Option haben, die standardmäßig im Formular ausgewählt ist. Deshalb können Sie für eine Listbox oder ein Checkbox Gruppe auch mehrere Paare name[]=wert übergeben. Jedes Paar name[]=wert entspricht einer vorselektierten Option.
Als Beispiel dient ein Formular mit der ID 1. Es wird über einen Menüeintrag veröffentlicht und enthält eine Listbox mit dem Namen “select”. Die Listbox enthält die Optionen s1||auswahl1, s2||auswahl2, s3||auswahl3 und es sollen die ersten beiden Optionen vorselektiert sein.
Die komplette Zeichenkette, die an die URL angehängt werden muss, lautet dann
- für eine URL, die noch keine anderen Parameter enthält:
?form1select[]=s1&form1select[]=s2 - für eine URL, die bereits andere Parameter enthält:
?form1select[]=s1&form1select[]=s2
Welcher Wert wird im Formular letztlich angezeigt?
Ruft der Benutzer eine Webseite auf, die ein Visforms Formular enthält, so wird zuerst für jedes Formularfeld überprüft, ob in der Feldkonfiguration ein Defaultwert gesetzt wurde. Wenn ja, wird dieser Defaultwert übernommen.
Anschließend wird geprüft, ob URL-Parameter für das Feld erlaubt sind und wenn ja, ob in der URL ein Parameter gesetzt wurde. Wenn ja, wird ein eventuell vorhandener Defaultwert mit dem Wert des URL-Parameters überschrieben.
Wird ein bereits ausgefülltes und abgeschicktes Formular, aufgrund einer Verletzung während der PHP-seitigen Validierung erneut angezeigt, werden die bereits gemachten Benutzereingaben erneut angezeigt.
Sichtbarkeit des URL-Parameters im Formular
Sie können einen URL-Parameter auch nur dazu verwenden, um ihn nach dem Absenden Formulars, zusammen mit den anderen Feldwerten, in die Datentabelle des Formulars zu schreiben.
Benutzer soll den Wert weder sehen noch editieren können
Angenommen der Benutzer soll dabei den Wert des URL-Parameters nicht sehen und auch nicht editieren können. Sie müssen in diesem Fall ein Feld vom Typ ‘hidden’ verwenden.
Benutzer sollen den Wert sehen aber nicht editieren können
Angenommen der Benutzer soll dabei den Wert des URL-Parameters zwar sehen können aber nicht editieren können. Sie müssen in diesem Fall in der Konfiguration für das betroffene Feld, auf dem Reiter ‘Basic Options’ den Checkbox Parameter ‘Read Only’ aktivieren.
Zusammenbauen der URL
Links mit URL-Parametern müssen zurzeit immer von Hand erzeugt werden. Es ist nicht möglich, ein Menü zu einem Formular anzulegen und diesem Menü in der Konfiguration direkt URL-Parameter hinzuzufügen. Sie können aber die URL zum Menü als Basis verwenden und diese dann etwa aus Artikeln heraus aufrufen und manuell um gewünschte URL-Parameter erweitern.
Anwendungsbeispiel
Use-Case
Sie sind Anbieter von Veranstaltungen. Für jede einzelne Veranstaltung gibt es eine Seite. Auf diesen Seiten gibt es neben einer Beschreibung der Veranstaltung, einen Link zu einem gemeinsamen Anmeldeformular. Sie haben also ein zentrales Anmeldeformular, dass zur Anmeldung für alle Veranstaltungen verwenden wird.
Sie wollen dem Nutzer Ihrer Webseite die Anmeldung so einfach wie möglich gestalten. Bestimmte Felder des Anmeldeformulars, wie etwa das Datum der Veranstaltung und der Veranstaltungsname, sollen automatisch mit den zur jeweiligen Veranstaltung passenden Daten gefüllt werden. Je nachdem, von welcher Veranstaltung aus das Formular aufgerufen wurde.
Umsetzung
Sie können den oben beschriebenen Anwendungsfall leicht ausschließlich mit URL-Parametern realisieren.
Fügen Sie dem Formular ein Datumsfeld für das Veranstaltungsdatum ein. Fügen Sie dem Formular ein Feld vom Typ Listbox ein. Legen Sie für Feld vom Typ Listbox für jede der Veranstaltungen jeweils eine eigene Option an. Geben Sie nun für das Datumsfeld und die Listbox zur Veranstaltungsauswahl die Verwendung von URL-Parametern frei. Legen Sie ein Menü vom Typ Visforms an, das auf das Formular verlinkt.
Verwenden Sie den Link auf dieses Menü als Basis-Link für den eigentlichen Link zum Anmeldeformular. Tragen Sie den Basis-Link auf den jeweiligen Veranstaltungsseiten an gewünschter Stelle von Hand eint.
Hängen Sie abschließend jeweils die beiden Veranstaltungs-spezifischen Informationen als URL-Parameter an den Basis-Link zum Anmeldeformular an. Wenn der Benutzer nun auf den Link in einer der Veranstaltungsseiten klickt, wird er auf das Formular geleitet und das Datum sowie der Veranstaltungsname sind bereits korrekt gesetzt.