मल्टी-पेज वेबफॉर्म में पहले के चरणों से मूल्यों का उपयोग कैसे करें?


12

मैं वेबफॉर्म 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'], जिससे यह कई चरणों में मूल्यों को ले जाने और संपादित विंडो में टोकन सूची पर दिखाई देने वाले टोकन (उपलब्ध वेबफॉर्म तत्वों से) बनाने के लिए है?


जब आप पृष्ठ को उस पर वांछित मान के साथ जमा करते हैं तो क्या आप एक सत्र चर निर्धारित कर सकते हैं?
डार्वेन

@Darvanen संभवतः मैं कर सकता था, लेकिन मूल्य पहले से ही कहीं बचा हुआ है, है ना? इसलिए मैं वहां जो पहले से है उसका उपयोग करना पसंद करूंगा। और मुझे शायद ही विश्वास है कि मैं ऐसा करने वाला पहला व्यक्ति हूं। शायद मैं अभी समाधान खोजने में विफल रहा हूं जो वहां है?
मोलॉट

मुझे इस $ form_state ['भंडारण'] के बारे में निश्चित नहीं है, लेकिन मैंने 2 या 3 पदों की खोज की, उन्होंने $ form_state ['storage'] में संग्रहीत सभी डेटा का उल्लेख किया, इसलिए मुझे लगता है कि आप डेटा तक पहुँच सकते हैं, source stackoverflow.com/questions/ 6408170 /… और drupal.org/node/717750
बाला

2
@ यह सभी हुक परिवर्तन में काम करता है सभी ठीक रूपों। लेकिन मुझे टोकन में फॉर्म स्टेट कैसे मिलेगा? मेरा मतलब है, मैं इस नौकरी को दो सप्ताह में छोड़ रहा हूं। गाय जो इस फॉर्म की देखभाल करेगा, वह कोडर नहीं है, वह ऐसा कर सकता है, लेकिन यह उसका प्राथमिक कौशल नहीं है - इसलिए मुझे टोकन की आवश्यकता है।
मोलॉट

हाँ, आप भविष्य की जरूरतों के लिए उल्लेख किया है मैं पूरी तरह से भूल गया।
बाला

जवाबों:


1

यह आपके शीर्षक में प्रश्न का उत्तर नहीं देता है, लेकिन आपके उपयोग के मामले को पढ़कर ऐसा लगता है कि प्रोफ़ाइल 2 के लिए लिखा गया था। संबंधित stackoverflow पोस्ट

वेबफॉर्म सर्वेक्षणों और इस तरह के लिए बहुत अच्छा है, लेकिन जब आप "भविष्य के क्षेत्रों के लिए उन्हें डिफ़ॉल्ट मान के रूप में उपयोग करने में सक्षम होना चाहते हैं" तो उन्हें उपयोगकर्ता से कनेक्ट करने की आवश्यकता होती है। तो आपको अपने बिलिंग पते के रूप में इन मूल्यों को खींचने के लिए उपयोगकर्ता के ऐतिहासिक वेबफ़ॉर्म सबमिशन को लाने के लिए अधिक कस्टम कोड की आवश्यकता होगी। इस आसान को बनाने के लिए प्रोफ़ाइल (2) को सटीक रूप से लिखा गया है।

इसके अलावा, कम अंतिम मिनट कस्टम कोडिंग जिसे आप किसी और को सौंपने से पहले कर रहे हैं, कम है कि कुछ और जब आप अपडेट करने की कोशिश कर रहे हैं, तो उनके दिल में आपके लिए अभिशाप होगा।


सब ठीक है और अच्छा है, लेकिन एक बात यह है कि यह फ़ॉर्म एक प्रोफ़ाइल नहीं था :( मेरा मतलब है, हम सब्सक्रिप्शन के लिए लोगों के लिए प्रोफ़ाइल बनाना नहीं चाहते थे। जब आप करते हैं तो अलग-अलग कानून लागू होते हैं, अधिक सख्त होते हैं। या तो मैं। कानून विभाग ने कहा इसके अलावा, अब मैं यह पूरी तरह से असंबंधित उपयोग के मामलों के लिए, की जरूरत है सब :) पर अगर।
Mołot

ठीक है, यह दिलचस्प है कि आपकी कानूनी टीम ने क्या कहा। नीचे की रेखा, यदि आप उपयोगकर्ता से जुड़े डेटा के साथ प्रपत्रों को तैयार करना चाहते हैं, तो आपको उपयोगकर्ता से जुड़े डेटा की आवश्यकता होगी। प्रोफ़ाइल मॉड्यूल उस डेटा क्षमता को बनाए रखने का एक आसान तरीका था, और आपके द्वारा अनुरोध किए जा रहे कार्यों के लिए एक बहुत करीबी मैच। साइट की अनुमतियां बदलें ताकि कोई भी प्रोफ़ाइल न देख सके, और यह अब वही है जो आप चाहते हैं लेकिन अधिक-मानक कोड के साथ। सिर्फ इसलिए कि मॉड्यूल का नाम प्रोफ़ाइल है इसका मतलब यह नहीं है कि इसे इस तरह से तैनात किया जाना है।
डेवलपर २०

0

वैरिएबल को वैश्विक मानें और उनमें से [मान] [] पास करें। यह मेरे लिए काम किया, बहु मंच रूपों में ctools modal पॉपअप के साथ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.