2012-12-22 14 views
6

कई एक्सटेंशन (जिसमें मैंने लिखा है समेत) में एक सहायक वर्ग शामिल है जो किसी भी कार्यक्षमता को जोड़ने के बिना केवल सार आधार वर्ग का विस्तार करता है। सहायक आमतौर पर इस तरह दिखता है:सभी Magento एक्सटेंशन के लिए सहायक वर्ग अनिवार्य हैं?

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract { 
} 

विस्तारित वर्ग इसलिए सिर्फ चीजें हैं जो अमूर्त वर्ग, प्रदान करता है विशेष रूप से अनुवाद के लिए के लिए प्रयोग किया जाता है। दूसरी तरफ, Magento में सभी ब्लॉक और नियंत्रक वर्गों के अनुवाद के लिए __() विधि का उत्तराधिकारी है - और एक विस्तार में मैं वर्तमान में विकास कर रहा हूं मुझे एक बार भी सहायक वर्ग को कॉल करने की आवश्यकता नहीं है।

क्या मैं सिर्फ सहायक वर्ग को हटा सकता हूं और config.xml से इसे हटा सकता हूं? मैंने कोशिश की है और विस्तार बिना ठीक काम करता प्रतीत होता है, लेकिन Magento की जटिलता के कारण मैं हमेशा थोड़ा चिंतित हूं कि ऐसे प्रभाव हैं जिनके बारे में मुझे पता नहीं है।

उत्तर

9

यदि आप स्क्रैच से मॉड्यूल बना रहे हैं, तो सहायक कक्षाएं सख्ती से जरूरी नहीं हैं। मैं आमतौर पर इसकी आवश्यकता होने तक एक बनाने को छोड़ देता हूं।

हालांकि, यदि कोई हो एक्सएमएल फ़ाइल एक अनुवाद मॉड्यूल निर्दिष्ट करने के लिए module विशेषता का उपयोग करता, उस गुण एक वैध सहायक को हल करने की जरूरत है। उदाहरण के लिए, इस कोर फ़ाइल में

<!-- File: app/code/core/Mage/Catalog/etc/system.xml --> 
<tabs> 
    <catalog translate="label" module="catalog"> 
     <label>Catalog</label> 
     <sort_order>200</sort_order> 
    </catalog> 
</tabs> 

module="catalog" है। इस विशेषता को निर्दिष्ट करके, Magento प्रणाली कोड है कि लेबल तब्दील इस

Mage::helper('catalog')->__('Label'); 

तो कुछ इस तरह दिखाई, सूची मॉड्यूल से सहायक को हटाने Magento के कुछ हिस्सों टूट जाएगा होगा।

यह "समूह अनुवाद करने के लिए सहायक" सुविधा Magento के एक्सएमएल फाइल के कई ही नहीं, system.xml (लेआउट में प्रयोग किया जाता है, (एकल हिस्सा वर्ग उर्फ ​​catalog स्वचालित रूप से Mage::helper('catalog/data') लिए Magento प्रणाली कोड से बदल जाती है) विजेट, आदि)। इसके अतिरिक्त, Magento में कुछ सिस्टम हैं जो अनुवाद के लिए एक सहायक मॉड्यूल के अस्तित्व को अनुमानित और/या आवश्यकता होगी (एक्सेस कंट्रोल, बाहरी एपीआई सिस्टम इत्यादि।)

लॉन्ग स्टोरी शॉर्ट: यदि आप स्क्रैच से मॉड्यूल बना रहे हैं, तो जब तक आप त्रुटियों को शुरू नहीं करते हैं, तब तक सहायक को छोड़ने के लिए स्वतंत्र महसूस करें कि Magento एक सहायक को तत्काल नहीं कर सकता है। मॉड्यूल से मौजूदा हेल्पर को कभी भी न हटाएं, और यदि आप यह सुनिश्चित करना चाहते हैं कि आप अन्य लोगों द्वारा धारणाओं के साथ 100% संगत हो, तो हमेशा Data.php सहायक वर्ग शामिल करें।

4

Magento के हेल्पर कक्षाओं में उपयोगिता विधियां होती हैं जो आपको वस्तुओं और चर पर सामान्य कार्यों को करने की अनुमति देती हैं। http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento#6

यह मानते हुए कि हेल्पर फ़ाइल खाली नहीं है जैसे कि कोई कस्टम तरीका नहीं है।

<?php 
class MagePal_SomeModule_Helper_Data extends Mage_Core_Helper_Abstract 
{ 
} 

तो चीजें हैं जो अभी भी प्रभावित हो सकता है में से कुछ हैं:

  • System.Xml - व्यवस्थापक में अपने मॉड्यूल के लिए खाली स्क्रीन -> प्रणाली -> config
  • $ इस -> __ ('') - आपके .phtml टेम्पलेट में त्रुटि (अंतर्राष्ट्रीयकरण/अनुवाद के लिए)

तो यदि आपका सहायक खाली है, सिस्टम कॉन्फ़िगरेशन अनुभाग के बिना और कोई अनुवाद नहीं तो यह 'शायद' हटाना ठीक है।

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