J'utilise Webform 4. Il utilise les jetons de Drupal, pas ses propres jetons% comme dans la version 3, et à peu près tout ce que j'ai trouvé concernait le Webform 3.
Dites que je veux faire un formulaire d'abonnement de plusieurs pages. Sur la première page, il n'y a qu'un champ email. Sur le second, je veux un balisage qui dira quelque chose comme:
Configuration détaillée de l'abonnement pour molot@example.com
De même, j'aimerais pouvoir les utiliser comme valeurs par défaut pour les futurs champs, comme demander à l'utilisateur l'adresse de facturation, puis l'adresse de livraison.
Y a-t-il des jetons pour cela? Ce que j'ai fait pour l'instant, c'est:
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;
}
}
Cela fonctionne, mais il n'affiche que les valeurs d'une étape précédente, il nécessite donc quelques astuces avec des champs masqués pour transporter la valeur de l'e-mail sur plusieurs étapes. J'avoue - c'était juste rapide et sale. Existe-t-il un moyen intégré de le faire ou un module de contribution correctement entretenu pour cela? Ou un moyen de faire fonctionner ce code indépendamment $_POST['submitted']
, de lui faire porter des valeurs sur plusieurs étapes et de rendre ses jetons (à partir des éléments de formulaire Web disponibles) visibles sur la liste de jetons dans les fenêtres d'édition?