2012-01-18 14 views
17

में getChildHtml() और getChildChildHtml() के बीच अंतर मैं इन दो कार्यों के बीच अंतर जानना चाहता हूं। मैं getChildHtml() के व्यवहार को समझता हूं। यदि आप किसी भी पैरामीटर को पास नहीं करते हैं तो यह ब्लॉक या सभी ब्लॉक का एचटीएमएल देता है। और मैंMagento

getChildHtml($name, $useCache, $sorted) 
getChildChildHtml($name, $childName,$useCache, $sorted) 
पहली नजर मैं एक $ useCache परम कि मैं माना जाता कैश का उपयोग है पर

देख सकते हैं।

उत्तर

41

मान लीजिए कि आप रूट ब्लॉक के phtml टेम्पलेट फ़ाइल में हैं, और आप एक सरलीकृत ब्लॉक संरचना है कि इस

root 
    left 
     promo_top 
     navigation 
     promo_bottom 
    center 
    right 

रूट ब्लॉक के टेम्पलेट फ़ाइल से की तरह लग रहा है, छोड़ दिया ब्लॉक आप चाहते मुद्रित करने के लिए getChildHtml का उपयोग करें।

echo $this->getChildHtml('left'); 

हालांकि, अगर किसी कारण से आप जड़ टेम्पलेट में promo_top ब्लॉक मुद्रित करने के लिए करना चाहता था, तो आप इस

$left = $this->getChildBlock('left') 
echo $left->getChildHtml('promo_top') 

getChildChildHtml विधि की तरह कुछ करने के लिए होगा तुम क्या करने की अनुमति देता है इस तरह की चीज एक साधारण विधि कॉल में। फिर, जड़ टेम्पलेट

echo $this->getChildChildHtml('left','promo_top'); 

तो से, अर्थ विज्ञान

  1. हैं नाम के साथ मेरा बच्चा ब्लॉक हासिल एक्स
  2. फिर, मिल यह वाई के साथ बच्चे ब्लॉक है
  3. प्रस्तुत एचटीएमएल

यदि आप स्रोत कोड देखते हैं तो आप इसे देख सकते हैं, आप ltimately, इस विधि सिर्फ getChildHtml

#File: app/code/core/Mage/Core/Block/Abstract.php 
public function getChildChildHtml($name, $childName = '', $useCache = true, $sorted = false) 
{ 
    if (empty($name)) { 
     return ''; 
    } 
    $child = $this->getChild($name); 
    if (!$child) { 
     return ''; 
    } 
    return $child->getChildHtml($childName, $useCache, $sorted); 
} 
+2

मेरे लिए बहुत उपयोगी के लिए एक कॉल, धन्यवाद एलन – davidselo

+1

बहुत बढ़िया स्पष्टीकरण गिर्द घूमती है। धन्यवाद एलन। – RIK

 संबंधित मुद्दे