MagoDB ODM को Magento से जोड़ना


15

मैं Mago Doctrine ODM को Magento से जोड़ने का प्रयास कर रहा हूं। मैंने मोंगोडब के साथ ज़ेड को सफलतापूर्वक जोड़ा है। और मुझे नहीं पता कि दोनों को कैसे जोड़ा जाए। मैंने Magento के "lib" फोल्डर में Mongodb odm को रखा है और मुझे magento के लिए lib लिंक करने का इशू आ रहा है। मैं लाइब्रेरी बेस क्लास को "शामिल" करने की कोशिश कर रहा हूं। लेकिन पुस्तकालय में कई नाम स्थान हैं। मुझे नहीं लगता कि Magento नेमस्पेस का समर्थन करता है। इसलिए इसकी त्रुटि दिखाई दे रही है। । मदद की बहुत सराहना की जाती है। अग्रिम में धन्यवाद।

जवाबों:


4

मुझे लगता है कि यह एक बहुत अच्छा सवाल है, जो मैगेंटो लोड कक्षाओं के साथ जुड़ा हुआ है।

Magento फ़ाइलों को बदले बिना इसे ठीक करने का कोई अच्छा तरीका नहीं है।

तो मुख्य समस्या lib / Varien / Autoload.php में है

public function autoload($class)
{
    if ($this->_collectClasses) {
        $this->_arrLoadedClasses[self::$_scope][] = $class;
    }
    if ($this->_isIncludePathDefined) {
        $classFile =  COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . $class;
    } else {
        $classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
    }
    $classFile.= '.php';
    return include $classFile;
}

Varien_Autoload::autoload - यह विधि केवल उन वर्गों को लोड कर सकती है जो "नाशपाती नामकरण सम्मेलनों" का पालन करते हैं - Mage_Core_Model_Config

लेकिन अगर नाम स्थान का उपयोग किया जाता $classहै Mage\\Core\\Model\\Config

तो हम एक और चेक जोड़ सकते हैं और नाम स्थान की समस्या को ठीक कर सकते हैं

public function autoload($class)
{
    if ($this->_collectClasses) {
        $this->_arrLoadedClasses[self::$_scope][] = $class;
    }
    if ($this->_isIncludePathDefined) {
        $classFile =  COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . $class;
    } else if (strpos($class, "\\") !== false) {
        $classFile = str_replace("\\", DIRECTORY_SEPARATOR, $class);
    } else {
        $classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
    }
    $classFile.= '.php';
    return include $classFile;
}

अब आप पुस्तकालयों का उपयोग कर सकते हैं जो नाम स्थान का उपयोग करते हैं।

इसके अलावा यहां आपको Magento में नामस्थान का उपयोग करने के लिए कोड परिवर्तन सूची मिलेगी।


ओलेक्सी, मैंने यह कोशिश की। यह काम नहीं कर रहा है। मैं यह सीधे में कह रहा हूं। मैं आपको भ्रमित नहीं करना चाहता। क्या आप एमजीओ को सिद्धांतकार ओडीएम की मदद से कनेक्ट कर सकते हैं। यदि आपके पास कोई विचार है, तो कृपया मेरे साथ साझा करें ..
सुंदर

3

इन दृष्टिकोणों को आज़माएं, मैं एकल मैगनेटो सेटअप पर दो अलग-अलग डेटाबेस का उपयोग करने में सक्षम था।

इसके लिए आपको कॉन्फ़िगरेशन बनाना होगा, नीचे दिए गए चरणों का पालन करना होगा।

में app/etc/modules

<?xml version="1.0"?>
<config>
    <modules>
        <Deph_Externaldb>
            <active>true</active>
            <codePool>local</codePool>
        </Deph_Externaldb>
    </modules>
</config>

में app/code/localऔर यहाँ नीचे डेटाबेस विवरण अद्यतन सुनिश्चित करें

<?xml version="1.0"?>
<config>
    <modules>
        <Deph_Externaldb>
            <version>0.1.0</version>
        </Deph_Externaldb>
    </modules>
    <global>
        <resources>
            <externaldb_write>
                <connection>
                    <use>externaldb_database</use>
                </connection>
            </externaldb_write>
            <externaldb_read>
                <connection>
                    <use>externaldb_database</use>
                </connection>
            </externaldb_read>
            <externaldb_setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </externaldb_setup>
            <externaldb_database>
                <connection>
                    <host><![CDATA[localhost]]></host>
                    <username><![CDATA[db_username]]></username>
                    <password><![CDATA[db_password]]></password>
                    <dbname><![CDATA[db_name]]></dbname>
                    <model>mysql4</model>
                    <type>pdo_mysql</type>
                    <active>1</active>
                </connection>
            </externaldb_database>
        </resources>
    </global>
</config>

आपका कॉन्फिग तैयार है, आप db को एक्सेस करने के लिए नीचे दिए गए कनेक्शन स्ट्रिंग का उपयोग करते हैं

<?php

    $resource   = Mage::getSingleton('core/resource');
    $conn       = $resource->getConnection('externaldb_read');
    $results    = $conn->query('SELECT * FROM tblName');

    print_r($results)

क्या आप जानते हैं कि इसका उपयोग एक मोंगोडब कॉन्फ़िगरेशन के साथ उस दृष्टिकोण का उपयोग करना संभव है? जैसे: <document_db> <connection_string> <!! CDATA [mongodb: // localhost: 27017 /]]> </ कनेक्शन_string> <dbname> <!! CDATA [db]]> </ dbname> </ document_db>
s_hh!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.