Webform 4 kullanıyorum. Drupal'ın jetonlarını kullanıyor, sürüm 3'te olduğu gibi kendi% jetonları değil ve bulduğum hemen hemen tüm webform 3'le ilgiliydi.
Çok sayfalı abonelik formu oluşturmak istediğimi varsayalım. İlk sayfada sadece bir e-posta alanı var. İkincisi, şöyle bir şey söyleyecek bir biçimlendirme istiyorum:
Molot@example.com için ayrıntılı abonelik yapılandırması
Benzer şekilde, bunları gelecekteki alanlar için varsayılan değer olarak kullanabilmek isterim. Kullanıcıdan fatura adresi ve ardından teslimat adresi için istemek gibi.
Bunun için jeton var mı? Şimdilik ne yaptım:
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;
}
}
Çalışır, ancak yalnızca bir adım önceki değerleri gösterir, bu nedenle e-posta değerini birden çok adımda taşımak için gizli alanlara sahip bazı kirli numaralar gerektirir. Kabul ediyorum - sadece hızlı ve kirli. Herhangi var mı dahili bunu yapmak için yolu olarak veya düzgün katkıda sürdürdü bunun için modül? Veya bu kodu bağımsız olarak çalıştırabilmenin $_POST['submitted']
, birçok adımda değerler taşımasını ve (kullanılabilir Webform öğelerinden) jetonlarını düzenleme pencerelerinde jeton listesinde görünür kılmanın bir yolu mu?