Ich verwende Webform 4. Es werden Drupal-Token verwendet, keine eigenen% -Token wie in Version 3, und so ziemlich alles, was ich gefunden habe, befasste sich mit Webform 3.
Angenommen, ich möchte ein mehrseitiges Anmeldeformular erstellen. Auf der ersten Seite gibt es nur ein E-Mail-Feld. In der zweiten möchte ich ein Markup, das ungefähr so aussieht:
Detaillierte Abonnementkonfiguration für molot@example.com
Ebenso möchte ich sie als Standardwerte für zukünftige Felder verwenden können, z. B. Benutzer nach der Rechnungsadresse und dann nach der Lieferadresse fragen.
Gibt es dafür Token? Was ich jetzt gemacht habe ist:
function mymodule_token_info() {
$type = array(
'name' => t('Webform submitted values'),
'description' => t('Tokens related to $_POST[\'submitted\'].'),
);
$tokens = array();
if(isset($_POST['submitted'])) {
foreach($_POST['submitted'] as $key => $val) { //discard $val now
$tokens[$key] = array(
'name' => $key,
'description' => "\$_POST['submitted']['$key']",
);
}
}
return array(
'types' => array('webform_submitted' => $type),
'tokens' => array('webform_submitted' => $tokens),
);
}
function mymodule_tokens($type, $tokens, $data, $options) {
if($type == 'webform_submitted') {
$replacements = array();
foreach ($tokens as $name => $original) {
//Hide errors below. We don't care if it really exists yet. If empty, so be it.
@$replacements[$original] = (string)$_POST['submitted'][$name];
}
return $replacements;
}
}
Es funktioniert, zeigt jedoch nur Werte aus einem Schritt zuvor an. Daher sind einige schmutzige Tricks mit ausgeblendeten Feldern erforderlich, um den E-Mail-Wert über mehrere Schritte zu übertragen. Ich gebe zu - es war nur schnell und dreckig. Gibt es eine eingebaute Möglichkeit, dies zu tun, oder ein ordnungsgemäß gewartetes Modul , das dazu beigetragen hat? Oder eine Möglichkeit, diesen Code unabhängig $_POST['submitted']
zu machen, Werte in mehreren Schritten zu übertragen und seine Token (aus verfügbaren Webform-Elementen) in der Token-Liste in Bearbeitungsfenstern sichtbar zu machen?