लेआउट में <निकालें नाम = "" /> और <कार्रवाई विधि = "अनसेट चाइल्ड" के बीच अंतर


21

बीच क्या अंतर है <action method=”unsetChild”>और <remove name=""/>?

दोनों फ़ंक्शन का उपयोग लेआउट से एक ब्लॉक को हटाने के लिए किया जाता है।

क्या कोई उदाहरण के साथ समझा सकता है?

जवाबों:


21

<remove name="" />के वैश्विक ब्लॉक दायरे में काम करता है Mage_Core_Model_Layout। इन्हें ब्लॉक में निर्दिष्ट नाम के साथ ब्लॉक करने से रोकने के लिए एकत्र किया जाता है Mage_Core_Model_Layout::generateXml()और उपयोग किया जाता है । साथ ही, <remove />एड ब्लॉक के लिए घोषित किसी भी चाइल्ड ब्लॉक को भी तत्काल नहीं किया जाएगा

<action method="" />उर्फ Mage_Core_Block_Abstract::unsetChild()एक ब्लॉक-स्तरीय पद्धति है जो अभिभावक ब्लॉक उदाहरण से संकेतित बाल ब्लॉक ( उपनाम से , नाम से नहीं ) को सूचीबद्ध करता है , जिस पर कार्रवाई कहा जा रहा है। यह सबसे अधिक बार ब्लॉक किए गए आउटपुट से "गायब" होने के परिणामस्वरूप होता है, भले ही ब्लॉक उदाहरण अभी भी बना हो। ::append()या ::insert()विधियों के साथ संयोजन में उपयोग किया जाता है, इसका उपयोग "चाल" करने के लिए किया जाता है।


बस इससे जोड़ने के लिए, यदि ब्लॉक में एक उपनाम नहीं है, तो यह नाम से मेल खाएगा।
बेन क्रुक

2
सही, जब कोई उर्फ ​​प्रदान नहीं किया जाता है, तो aliasएक बच्चे के लिए इसके लिए निर्धारित है name। 👍
benmarks

2

<remove name="" />, जब सभी लेआउट के साथ समाप्त हो गया, तो Magento पूरी तरह से संकेतित नाम = "" के साथ ब्लॉक को हटा देगा, इसके बावजूद कि इसमें किस लेआउट हैंडल को जोड़ा गया है। इस पद्धति का उपयोग करके एक स्थान से एक ब्लॉक को निकालना और फिर इसे दूसरे में जोड़ना असंभव है

<action method="unsetChild">केवल उस संदर्भ में संचालित होता है जहां इसका उपयोग किया जा रहा है। unsetChild मौजूदा ब्लॉकों को एक स्थान से दूसरे स्थान पर ले जाने के लिए बनाया गया है। यदि आप किसी विशिष्ट लेआउट हैंडल से किसी विशिष्ट ब्लॉक को निकालना चाहते हैं और फिर इसे किसी अन्य स्थिति या लेआउट हैंडल में सम्मिलित करना चाहते हैं, तो आपको इस विधि का उपयोग करने की आवश्यकता है।


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