"#" गुण क्या हैं?


22

अजाक्स ढांचे के दस्तावेज को पढ़ते समय मुझे #ajaxसंपत्ति का उल्लेख आया । मुझे कोड के माध्यम से पता चला है कि इनमें से अन्य गुण हैं जिनके सामने हैश संकेत हैं। हैश साइन क्या दर्शाता है? ये सभी गुण क्या हैं?


उम्मीद है कि मेरे लिए इस पृष्ठ पर कहीं न कहीं "पाउंड साइन" जोड़ना चाहते हैं (क्योंकि यह एक खोज शब्द है जो मैं यह जानने की कोशिश कर रहा था, जब "हैश" मुझे बहुत उपयोगी परिणाम नहीं मिल रहा था)।
मैक्स स्टार्कबर्ग

जवाबों:


23

यह सामान्य रूप से रेंडर सरणियों के साथ करना है , यह केवल AJAX या फॉर्म एपीआई के लिए विशिष्ट नहीं है (हालांकि फॉर्म एपीआई रेंडर सरणियों का उपयोग विशेष रूप से सामग्री बनाने के लिए करता है)।

सीधे शब्दों में कहें, बिना #नाम के सामने एक रेंडर सरणी में सरणी कुंजियों को रेंडर सरणी के बच्चों के रूप में देखा जाता है, और बाद में खुद को (पुनरावर्ती) प्रदान किया जाता है।

उन के साथ एक #उनके सामने उपयोग करने के लिए सरणी आवश्यक के रूप में प्रस्तुत करना के लिए मेटा डेटा / चर के रूप में देखा जाता है, और खुद को गाया नहीं कर रहे हैं।

रेंडर सरणी डॉक्स (ऊपर दिए गए) वास्तव में इस अच्छे और संक्षिप्त रूप से डालते हैं:

रेंडर सरणी एक क्लासिक ड्रुपल स्ट्रक्चर्ड एरे है जो संकेत के साथ डेटा (शायद नेस्टेड) ​​प्रदान करता है कि इसे कैसे प्रस्तुत किया जाना चाहिए (गुण, जैसे # टाइप)।

#कुंजी 'संकेत' है कि उपरोक्त अनुच्छेद के बारे में बात कर रही है, गैर कर रहे हैं #कुंजी नेस्टेड डेटा कर रहे हैं।

मैं उस पृष्ठ को अच्छी तरह से पढ़ने की सलाह देता हूँ, यह पूरी रेंडर सरणी चीज़ को डी-मिस्टीज करने का अच्छा काम करता है, और कोड उदाहरण प्रदान करता है।

Theming पृष्ठ डॉक्स पर एक और छोटा स्पष्टीकरण / कोड उदाहरण भी है जो उपयोगी हो सकता है।

Drupal (रूपों, विषयों, सामान्य मार्कअप इत्यादि) में सभी जगह रेंडर सरणियों का उपयोग किया जाता है, इसलिए उनके बारे में अच्छा सा जानने से भविष्य के Drupal के विकास में बहुत मदद मिलेगी।


खैर मुझे हरा दिया।

4

प्रपत्र API सभी गुणों के सामने एक # का उपयोग करता है, गुणों और बाल तत्वों के बीच अंतर करने के लिए। निम्नलिखित कोड में, $form['choice_wrapper']['choice']एक बाल तत्व है, जबकि $form['choice_wrapper']['#tree']एक संपत्ति है।

  // Add a wrapper for the choices and more button.
  $form['choice_wrapper'] = array(
    '#tree' => FALSE, 
    '#weight' => -4, 
    '#prefix' => '<div class="clearfix" id="poll-choice-wrapper">', 
    '#suffix' => '</div>',
  );

  // Container for just the poll choices.
  $form['choice_wrapper']['choice'] = array(
    '#prefix' => '<div id="poll-choices">', 
    '#suffix' => '</div>', 
    '#theme' => 'poll_choices',
  );

वे सभी गुण फ़ॉर्म एपीआई संदर्भ में सूचीबद्ध हैं । कई गुण हैं, लेकिन वे सभी प्रतिपादन, सत्यापन और प्रस्तुत करने के बारे में हैं।

गुणों के लिए एक उपसर्ग का उपयोग करने का कारण बाल तत्वों से गुणों को त्वरित रूप से फ़िल्टर करने में सक्षम है, जो उपयोगी है जब उन्हें प्रदान करने की आवश्यकता होती है, उदाहरण के लिए ड्रुपाल_रेंडर () के साथ , जिसमें निम्न कोड होता है।

  // Get the children of the element, sorted by weight.
  $children = element_children($elements, TRUE);

  // Initialize this element's #children, unless a #pre_render callback already
  // preset #children.
  if (!isset($elements['#children'])) {
    $elements['#children'] = '';
  }
  // Call the element's #theme function if it is set. Then any children of the
  // element have to be rendered there.
  if (isset($elements['#theme'])) {
    $elements['#children'] = theme($elements['#theme'], $elements);
  }
  // If #theme was not set and the element has children, render them now.
  // This is the same process as drupal_render_children() but is inlined
  // for speed.
  if ($elements['#children'] == '') {
    foreach ($children as $key) {
      $elements['#children'] .= drupal_render($elements[$key]);
    }
  }

यदि आप element_children () को देखते हैं, तो आप देखेंगे कि गुणों को फ़िल्टर करने के लिए कोड निम्नलिखित है।

  // Filter out properties from the element, leaving only children.
  $children = array();
  $sortable = FALSE;
  foreach ($elements as $key => $value) {
    if ($key === '' || $key[0] !== '#') {
      $children[$key] = $value;
      if (is_array($value) && isset($value['#weight'])) {
        $sortable = TRUE;
      }
    }
  }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.