Habe mir die Funktion noch einmal angeschaut.
Gute Idee!
Das Formular wird über folgenden Beispeillink aufgerufen:
/index.php?article_id=200&zeit=10.05.2008-18.05.2008
Folgende Zeile schreibe ich ins Formular:
hidden|zeit|nicht festgelegt|REQUEST|[no_db]
Und in den Mail-Body:
###zeit###
Gibt es keine Variable "zeit" so wird kein Hidden-Feld in Formular geschrieben und in der E-Mail steht anschließt der der Standard-Wert "nicht festgelegt". So soll es ja auch sein.
Gibt es die "zeit" so steht steht sie auch als Hidden-Feld im Quelltext des Formulars. Das ist prima. Aber warum wird der Platzhalter im Mail-Body nicht ersetzt. Es steht dort dann halt nur "###zeit###". Ein Bug? Wir stehen kurz vor dem Ziel. Meine ganzen anderen Überlegungen mit PHP sind eigentlich hinfällig, weil es diese value-Funktion lösen sollte. Wenn es nur in der Mail stehen würde.
Ich tippe auf einen Fehler in der class.xform.hidden.inc:
Code: Alles auswählen
function enterObject(&$email_elements,&$sql_elements,&$warning,&$form_output,$send = 0)
{
if (isset($this->elements[3]) && $this->elements[3]=="REQUEST" && isset($_REQUEST[$this->elements[1]]))
{
$this->value = $_REQUEST[$this->elements[1]];
$form_output[] = '<input type="hidden" name="'.$this->elements[1].'" value="'.$this->value.'" />';
}else
{
$this->value = $this->elements[2];
$email_elements[$this->elements[1]] = $this->value;
if (!isset($this->elements[4]) || $this->elements[4] != "no_db") $sql_elements[$this->elements[1]] = $this->value;
}
Fehlt in der "Request-Schleife" nicht schlicht weg die folgende Festlegung:
$email_elements[$this->elements[1]] = $this->value;