-
Formularfelder befüllen
Hi,
ich habe mit dem Formulargenerator ein Buchungsformular erstellt. Der Seite mit dem Formular werden diverse GET-Parameter übergeben, die dann als Bedingungen für eine SQL-Query genutzt werden sollen. Soweit alles einfach, aber gibt es eine Möglichkeit, die Formularfelder mit den Ergebnissen der SQL-Abfrage zu füllen? Also quasi irgendwie ein onLoadFormular-Hook, wo man die Defaultwerte des Formulars überschreiben kann.
Vielen Dank und viele Grüße
Chris
-
Du kannst den Wert zwischen dem Aufruf von validate() und parse() wie folgt ändern:
PHP-Code:
$objWidget = new $strClass(...);
// ...
$objWidget->validate(); // hier wird (falls vorhanden) der im Formular eingegebene Wert als value gesetzt
// ...
$objWidget->value = 'Neuer Wert'; // value ändern
// ...
$objWidget->parse(); // Feld mit value == 'Neuer Wert' parsen
Viele Grüße
Torben
-
Hi Torben,
vielen Dank, was mir aber leider noch nicht so ganz klar ist, wo baue ich das ein? :(
Viele Grüße
Chris
-
Ah, ich hatte überlesen, dass Du es mit dem Formulargenerator erzeugt hast. Ich war davona ausgegangen, dass Du das Formular in einem eigenen Modul erzeugst und dann müsstest Du exakt die obigen Codezeilen haben. Beim Formulargenerator ist mir keine Möglichkeit bekannt, das Problem zu lösen.
Torben
-
Ok, das wäre auch ne Möglichkeit ... hättest du ein Beispiel wie ich so ein Formular im eigenen Modul bauen kann? Ist mir leider noch nicht so wirklich klar.
-
-
Leider habe ich den Hook nicht gefunden, gibt es dazu noch einen besseren Link?
Benötige das für den Fall im Thema
https://community.contao.org/de/show...ntragen-lassen
-
Hallo zusammen,
ich möchte das Thema gerne noch einmal kurz auffrischen.
Ich habe etwas ähnliches vor. Ich habe ein normales Registrierungs-Formular (Contao Registrieren Modul), bei dem ich den Feldern optional mittels GET-Parameter vordefinierte Werte mitgeben möchte.
Also im Normalfall sind die Felder wie z.B. Vorname oder Nachname leer und müssen ausgefüllt werden, wenn jedoch ein Parameter ?lastname='Mustermann' übergeben wird, soll dieser Wert im Feld Nachname erscheinen.
Hierzu habe ich den Hook loadFormField ausprobiert (https://docs.contao.org/books/api/ex...FormField.html). Leider bekomme ich es nicht hin für die Input-Felser Werte vorauszufüllen.
Ist dies so (oder anders) überhaupt möglich?
Danke und viele Grüße!
-
Also möglich ist es, dazu musst du das registrierungstemplate anpassen. Kannst dich gern bei mir melden, dann können wir was zusammen bauen.
-
Seh gerade, dass es kein direktes template gibt zu dem Registrierungsformular. Sollte aber mit js möglich sein, den Feldern zusätzliche Attr. zu geben.
-
Jupp, mit JS ist es natürlich möglich.
Genau, im Core-Template member_default wird lediglich die variable $this->fields ausgegeben.
Diese könnte man natürlich auch manipulieren, im Template oder im Module selbst. Am schönsten wäre denke ich aber der Weg über einen Hook, ohne sich durch die Module / Template Struktur friemeln zu müssen.
-
Hast recht. Aber wenn du Interesse hast gib bescheid, da hab ich dann vielleicht für dich einen Lösungsansatz.
-
Ich hätte mir jetzt über eine Funktion (z.B. https://www.sitepoint.com/url-parameters-jquery/ (bisher ungetestet)) die Parameter geladen und in die Input-Felder eingefügt, sofern diese leer sind.
Oder hast du etwas Contao spezifisches auf Lager, was ich bedenken sollte?