Estoy usando Webform 4. Utiliza los tokens de Drupal, no sus propios tokens% como solía hacerlo en la versión 3, y casi todo lo que encontré fue sobre el formulario web 3.
Digamos que quiero hacer un formulario de suscripción de varias páginas. En la primera página solo hay un campo de correo electrónico. En el segundo, quiero un marcado que diga algo como:
Configuración de suscripción detallada para molot@example.com
Del mismo modo, me gustaría poder usarlos como valores predeterminados para futuros campos, como pedirle al usuario la dirección de facturación y luego la dirección de entrega.
¿Hay alguna ficha para eso? Lo que hice por ahora es:
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;
}
}
Funciona, pero solo muestra valores de un paso anterior, por lo que requiere algunos trucos sucios con campos ocultos para llevar el valor del correo electrónico a través de múltiples pasos. Lo admito, fue rápido y sucio. ¿Hay alguna forma integrada de hacerlo, o un módulo contribuido mantenido adecuadamente para esto? ¿O una forma de hacer que este código funcione de manera independiente $_POST['submitted']
, para que lleve valores a través de muchos pasos y hacer que sus tokens (de los elementos de formulario web disponibles) sean visibles en la lista de tokens en las ventanas de edición?