मैं वेबफॉर्म 4 का उपयोग कर रहा हूं। यह ड्रुपल के टोकन का उपयोग करता है, न कि यह खुद का% टोकन है जैसे कि यह संस्करण 3 में इस्तेमाल किया गया था, और वेब 3 के बारे में मुझे जो कुछ मिला वह बहुत ज्यादा था।
कहो मैं बहु-पृष्ठ सदस्यता फ़ॉर्म बनाना चाहता हूं। पहले पृष्ठ पर केवल एक ईमेल फ़ील्ड है। दूसरे एक पर, मुझे एक मार्कअप चाहिए जो कुछ कहेगा:
Molot@example.com के लिए विस्तृत सदस्यता कॉन्फ़िगरेशन
इसी तरह, मैं उन्हें भविष्य के फ़ील्ड के लिए डिफ़ॉल्ट मान के रूप में उपयोग करने में सक्षम होना चाहूंगा, जैसे बिलिंग पते के लिए उपयोगकर्ता से पूछना, और फिर वितरण पते के लिए।
क्या उसके लिए कोई टोकन हैं? मैंने अभी के लिए क्या किया है:
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;
}
}
यह काम करता है, लेकिन यह केवल एक कदम पहले के मूल्यों को दिखाता है, इसलिए कई चरणों में ईमेल मूल्य ले जाने के लिए छिपे हुए फ़ील्ड के साथ कुछ गंदे चालों की आवश्यकता होती है। मैं मानता हूँ - यह सिर्फ जल्दी और गंदा था। क्या इसके लिए कोई अंतर्निहित तरीका है, या इसके लिए उचित रूप से बनाए रखा योगदान मॉड्यूल है? या इस कोड को स्वतंत्र रूप से काम करने का एक तरीका है $_POST['submitted']
, जिससे यह कई चरणों में मूल्यों को ले जाने और संपादित विंडो में टोकन सूची पर दिखाई देने वाले टोकन (उपलब्ध वेबफॉर्म तत्वों से) बनाने के लिए है?