Seite 1 von 1
PIFA Formular-Assistent: Feld mit GET-Wert vorbelegen?
Verfasst: Mi 31. Aug 2016, 17:57
von wadahadadu
Ein PIFA-Kontaktformular soll als simples Bestellformular genutzt werden. Dabei soll einem der Formularfelder ein dynamischer Wert per GET übergeben werden, so dass es mit diesem Wert vorbelegt ist, etwa in dem Stil:
URL:
https://www.domain.tld/cms/front_conten ... t_id=12345
Code: Alles auswählen
<?php
$value = "Produkt-ID: ".$_GET['product_id'];
echo "<form>";
echo "<label>Bemerkungen:</label>";
echo "<textarea name='comments'>".$value."</textarea>
(...)
echo "</form>";
?>
Wie realisiert man sowas mit dem Formular-Assistenten?
Re: PIFA Formular-Assistent: Feld mit GET-Wert vorbelegen?
Verfasst: Mo 5. Sep 2016, 09:24
von rethus
Da brauchst du nichts in der Programmierung machen. Einfach in deinem Forumalr-Editor ein Textfeld mit einem Standadwert belegen.
Du könntest dann, wenn du es nicht anzeigen lassen möchtest auch eine CSS-Klasse definieren (z.B. hidde, die dann den Wert "display:none" hat. Dem besagten Feld ordnest du dann diese css-class hinzu, und e voila... ein hidden field mit einem Wunschwert

Re: PIFA Formular-Assistent: Feld mit GET-Wert vorbelegen?
Verfasst: Mo 5. Sep 2016, 14:48
von McHubi
Ich kann zwar in punkto Anpassung des PIFA-Codes keine Hilfestellung geben, aber mit
ein dynamischer Wert per GET
vs.
Standardwert
ist Dein Lösungsvorschlag aller Voraussicht nach falsch...
Trotzdem eine Idee, wenn Du nichts im Core ändern möchtest: Je nach Markup kannst Du nach Darstellung des Formulars über ein eigenes kleines Modul den Wert per GET auslesen und dann per JS den Value des Feldes über die ID manipulieren.
Code: Alles auswählen
<input name="last_name" value="" size="50" type="text" id="pifa-field-elm-6" />
Die ID scheint sich z. B. beim Verschieben des Feldes in der Reihenfolge des Formulars auch nicht zu verändern.
Re: PIFA Formular-Assistent: Feld mit GET-Wert vorbelegen?
Verfasst: Di 6. Sep 2016, 16:03
von wadahadadu
Herzlichen Dank euch beiden für eure Hilfe. Die Sache hab ich nun mit Javascript gelöst. Das funktioniert natürlich nur, wenn Javascript im Browser des Benutzers aktiviert ist, aber es ist besser als nichts.
Hier der Code, falls ihn jemand verwenden möchte:
HTML-Layout:
Code: Alles auswählen
<html>
<head>
<script type="text/javascript" language="javascript" src="js/scripts.js"></script>
</head>
<body onload="insertGetValue();">
(...Code des Formulars...)
</body>
</html>
scripts.js:
Code: Alles auswählen
/* get query string variables */
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0; i<vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
}
/* insert GET value into form field */
function insertGetValue()
{
var current_value = document.getElementsByName("comments")[0].value;
if (current_value == "" || current_value == null)
{
var new_value = getQueryVariable("product_id");
document.getElementsByName("comments")[0].value = new_value;
}
}
...wobei "comments" in diesem Beispiel der Name des Formularfeldes ist und "product_id" der Name des URL-Parameters. Mit der ID des Formularfeldes würde es auch gehen: document.getElementById("id_des_formularfeldes").value