'नाम' का उपयोग कब करें और 'के रूप में' का उपयोग कब करें


26

मैंने पाया है कि जब unsetChildविधि का उपयोग करने की कोशिश की जाती है, तो कभी-कभी मुझे 'नाम' की विशेषता और अन्य का उपयोग करना पड़ता है। ऐसा लगता है कि यदि कोई ब्लॉक सामान्य रूप से जोड़ा जाता है, तो आप 'as' का उपयोग करते हैं, लेकिन यदि यह appendविधि का उपयोग करके किसी ब्लॉक में जोड़ा जाता है , तो आपको 'name' का उपयोग करना पड़ सकता है। क्या यह धारणा सही है?

इसके पीछे क्या तर्क है और यह समझने का एक मानक तरीका है कि आपको किस विशेषता का उपयोग करना चाहिए?

जवाबों:


15

ब्लॉक को हमेशा संदर्भित किया जा सकता है name। एलियास ( as) का उपयोग ब्लॉक के लंबे नाम को सरल बनाने के लिए किया जाता है और केवल क्षेत्र के साथ भिन्न होता है। Nameपृष्ठ के aliasभीतर और एक मूल ब्लॉक के भीतर अद्वितीय होना चाहिए ।


5
मुझे डर है कि इनमें से कोई भी सच नहीं है। यदि यह एक उपनाम सेट है, तो टेम्पलेट में, आप इसके नाम से किसी ब्लॉक का संदर्भ नहीं दे सकते। आप केवल उपनाम का उपयोग कर सकते हैं। उपनाम की विशिष्टता के लिए, यह बिल्कुल विपरीत है - उपनाम को एक अलग ब्लॉक के लिए संभव बनाने के लिए पेश किया गया था जो कि बिना बदलते टेम्पलेट को प्रदान किया जा सकता है।
जन तोमका

5
@JanTomka ने अलायस का मुख्य उपयोग दिया है। यह इंगित किया जाना चाहिए कि जबकि यह कथन कि "आप इसके नाम से किसी ब्लॉक का संदर्भ नहीं दे सकते हैं यदि यह एक उपनाम सेट है" आम तौर पर सच है, एक विधि है जिसका नाम getBlockHtml()कभी-कभी नाम से ब्लॉक को प्रस्तुत करने के लिए उपयोग किया जाता है।
18

6

जब आप उपयोग करते हैं , तो आप $ $ इस- phCml टेम्पलेट पर getChildHtml ("as_value") कह सकते हैं।

नाम अद्वितीय होना चाहिए, और के लिए इस्तेमाल किया जा सकता <संदर्भ> ब्लॉक, <निकालने> , आदि

उदाहरण के लिए (कैटलॉग। Xml):

<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
    <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
</block>

यदि आप कैटलॉग / उत्पाद / view.phtml खोलते हैं, तो आप देखेंगे:

<div class="product-img-box">
    <?php echo $this->getChildHtml('media') ?>
</div>

आप समझ सकते हैं? as = "media", और फिर $ यह-> getChildHtml ('मीडिया') ...


5

किसी ने unsetChildअभी तक किसी विशेष प्रश्न का उत्तर नहीं दिया है। एक ब्लॉक के बच्चों से संबंधित तरीके हमेशा उर्फ द्वारा बाल ब्लॉकों को संदर्भित करते हैं, जो केवल माता-पिता के लिए जाना जाता है और नाम के विपरीत, वैश्विक रूप से अद्वितीय नहीं है।

लेकिन अगर ब्लॉक एक उपनाम को परिभाषित किए बिना बनाया गया था, तो उपनाम नाम की चूक करता है।

तो संक्षेप में, यदि बच्चे के ब्लॉक में एक स्पष्ट उपनाम है, तो आपको अन्य नाम का उपयोग करना चाहिए। यदि नहीं, तो नाम का उपयोग करें।

उपनाम तब दिए जाते हैं as="..."यदि ब्लॉक को XML के माध्यम से चाइल्ड ब्लॉक के रूप में बनाया गया था, या एक्शन पैरामीटर द्वारा अगर उन्हें इधर-उधर ले जाया गया या डायनामिक तरीके से जोड़ा गया append(), insert()या setChild()

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