एक घटक स्थापित / सक्षम है या नहीं यह जांचने के लिए सबसे अच्छी विधि?


12

जूमला 2.5 और 3.x के बीच यह जांचने का सबसे अच्छा तरीका है कि क्या कोई अन्य घटक स्थापित है और / या सक्षम है? वहाँ एक सहायक वर्ग मौजूद है, JComponentHelperलेकिन मुझे विश्वास है कि isEnabledफ़ंक्शन वास्तव में एक त्रुटि को फेंक देगा यदि जाँच की जा रही घटक कुछ जूमला संस्करणों पर स्थापित नहीं है।

यह सीधे डेटाबेस को हिट करने के रूप में सरल हो सकता है लेकिन मैं यह देखना चाहता था कि क्या अन्य वर्ग / सहायक / विधियाँ उपयोग करते हैं।

जवाबों:


12

मैं इस तरह से उपयोग करता हूं:

// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}

<component name> - "com_" उपसर्ग के बिना


4

इसे इस्तेमाल करे,

घटक स्थापित और सक्षम है या नहीं यह देखने के लिए अपने डेटाबेस की जाँच करें।

$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_name'");
$is_enabled = $db->loadResult();

यदि $ is_enabled का मान 1 है, तो आपका घटक सक्षम है। अन्यथा,

if (!JComponentHelper::isEnabled('com_mycomp', true))
{
    JError::raiseError('404', JText('Component not installed / enabled'));
}

3

आप सही हैं कि कुछ संस्करणों में त्रुटि दिखाई देगी यदि घटक मौजूद नहीं है। जहाँ तक मुझे पता JComponentHelper::getComponent('com_name', true)->enabledहै कि एक घटक सक्षम होने पर सबसे अच्छी जाँच है।

जूमला 3.0 और इसके बाद के संस्करण का उपयोग कर सकते हैं, भले ही घटक स्थापित न हो।

जूमला 2.5 में, यहां तक ​​कि नवीनतम रिलीज (2.5.19) एक JError::raiseWarningसंदेश फेंक देगा जो घटक स्थापित नहीं होने पर अंतिम उपयोगकर्ता के लिए आउटपुट होगा। यदि आप J2.5 का समर्थन करना चाहते हैं, तो ऐसा लगेगा कि आपको घटक को लोड करने के लिए अपने स्वयं के सहायक का उपयोग करना होगा। (आप शायद एक नया सहायक बना सकते हैं जो JComponentHelper का विस्तार करता है और सिर्फ _loadमामूली बदलाव के साथ समान सुविधाएं प्राप्त करने के लिए फ़ंक्शन को ओवरराइड करता है।)

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