Url Parameter verwenden, um Default Werte im Formular zu setzen
Url Parameter stellen ein interessantes Feature da, weil sie die Möglichkeit eröffnet Felder in einem Formular während der Laufzeit mit individuellen Defaultwerten zu versehen.
Da URL-Parameter sehr einfach zugänglich sind, biete das Feature aber andererseits theoretisch auch böswilligen Nutzern eine Möglichkeit, ein Formular einfach zu manipulieren und zu missbrauchen. Deshalb haben wir bei der Entwicklung dieses Features einige besondere Sicherheitsmaßnahmen ergriffen.
Verwendung von URL-Parametern für ein Formular Feld 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 Defaultwertes verwenden wollen müssen Sie dies in den Einstellungen des Feldes im Backend explizit aktivieren. Dies ist eine Sicherheitsmassnahme. Sie finden den Parameter unter dem Tab "Erweitert".
Format der URL-Parameter
An eine URL können - ganz allgemein - beliebig viele Parameter der Form Parametername=Parameterwert angehängt werden. Vor dem ersten Parametername/Parameterwert Paar in einer UrL muss ein Fragezeigen (?) stehen. Zwischen Parmetername/Parameterwert Paaren ein kaufmännisches und (&).
Der Parametername, den Sie in Ihrer Url verwenden müssen, um einen Defaultwert in einem ausgewählten Feld programatisch zu setzen, variiert, je nachdem wie Sie das Formular veröffentlicht haben.
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 Name-Option des Feldes.
Haben Sie beispielsweise im Formular mit der Id 3 ein Feld, das in der Option "Name" den Wert "vorname" stehen hat, dann können Sie dieses über den Parameternamen form3vorname ansprechen.
Ist das Formular über ein Visforms Modul veröffentlicht, dann setzt sich der Parametername folgendermaßen zusammen:
"modvisform" + Id des Moduls + Wert in der Name-Option des Feldes.
Haben Sie bespielsweise oben genanntes Formular (mit der Id 3) über ein Visforms Modul veröffentlich, das die Modul-Id 318 hat, dann können Sie das oben genannte Feld in diesem Formular über den Parameternamen modvisform318vorname ansprechen.
Der Parameterwert ist eine Zeichenkette die als Defaultwert übernommen werden soll. Aus Sicherheitsgründen können nur Strings als Parameterwert übergeben werden.
Handelt es sich bei dem Feld, für das Sie einen Defaultwert via URL-Parameter setzen wollen, um ein Eingabefeld, in das Text eingegeben werden kann, dann können Sie einen beliebigen Defaultwert festlegen. Handelt es sich dagegen um eine Listboxen, ein Radio Button, eine Checkbox Gruppe oder eine Checkbox so besitzen dieses Felder eine Liste von erlaubten Parameterwerten und Sie müssen einen solchen erlaubten Wert übergeben. Erlaubt sind alle Werte, die Sie in der Feldkonfiguration als "Wert" eingegeben haben. Im Formular ist dann die zu diesem Wert passende Option(en) ausgewählt.
Besonderheiten bei Listboxen und Checkbox Gruppen
Bei Listboxen und Checkboxgruppen 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 Parametername[]/Parameterwert Paare übergeben. Jedes Parametername[]/Parameterwert Paar, entspricht einer vorselektierten Option.
Wurde beispielsweise im Formular mit der Id 1, das über einen Menüeintrag veröffentlicht ist, eine Listbox mit dem Namen "select" angelegt, die die Optionen s1||auswahl1, s2||auswahl2, s3||auswahl3 enthält und es sollen die ersten beiden Optionen vorselektiert sein, dann lautet die Zeichenkette, die an die Url angehängt werden muss: &form1select[]=s1&orm1select[]=s2 bzw. ?orm1select[]=s1&orm1select[]=s2, wenn die URL verher keine Parameter enthalten hat.
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 evtl. vorhandener Defaultwert mit dem Wert des URL-Parameters überschrieben.
Wurde ein Formular bereits ausgefüllt und abgeschickt, wird aber aufgrund eines Fehlers, der bei der PHP-seitigen Validierung gefunden wurde, erneut angezeigt, so werden die Benutzereingaben als Defaultwerte erneut angezeigt.
Woher kommt die URL?
Links mit URL-Parametern müssen z.Zt. 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 z.B. aus Artikeln heraus aufrufen und um URL-Parameter erweitern.
Mögliche Anwendungsbereiche - Beispiel
Sie sind Anbieter von Veranstaltungen. Für jede Veranstaltung haben Sie ein Seite, auf der diese beschrieben wird und auf der es einen Link zu einem Anmeldeformular gibt. Sie haben ein Anmeldformular, dass Sie zur Anmeldung für alle Veranstaltungen verwenden wollen. Um dem Nutzer Ihrer Webseite die Anmeldung so einfach wie möglich zu machen, wollen Sie, dass bestimmte Formularfelder, wie das Datum der Veranstaltung und der Veranstaltungsnamen automatisch mit den korrekten, zur jeweiligen Veranstaltung passenden Daten gefüllt sind, je nachdem von welcher Veranstaltung aus das Formular aufgerufen wurde.
Sie können den oben beschriebenen Anwendungsfall leicht mir URL-Parametern realisieren. Legen Sie im Formular ein Datumsfeld für das Veranstaltungsdatum und ein Feld vom Typ Listbox an, in dem Sie für jede Veranstaltung eine Option anlegen. Geben Sie für das Datumfeld 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 für den Link zum Anmeldeformular, den Sie auf der jeweiligen Veranstaltungsseite anbieten (und dort von Hand eintragen). Hängen Sie jeweils die veranstaltungsspezifischen Informationen als URL-Parameter an diesen Basislink zum Anmeldeformular an. Wenn der Benutzer auf den Link klickt wird er auf das Formular geleitet und das Datum und der Veranstaltungsnamen sind bereits korrekt gesetzt.