"अमान्य ब्लॉक प्रकार .." त्रुटि का निदान कैसे करें?


19

निश्चित नहीं है कि इस त्रुटि का कैसे पता लगाया जाए, मैं एक सप्ताह से गुगली कर रहा हूं और मैं इसका हल नहीं ढूंढ सकता। कोई विचार?

2013-06-10T04:04:28+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type: ' in /home/xxxxxxx/public_html/app/Mage.php:594
Stack trace:
#0 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('', Array)
#2 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('', 'checkout.cart')
#3 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('', 'checkout.cart')
#4 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#5 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#7 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(269): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#8 /home/xxxxxxx/public_html/app/code/core/Mage/Checkout/controllers/CartController.php(159): Mage_Core_Controller_Varien_Action->loadLayout()
#9 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Checkout_CartController->indexAction()
#10 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#11 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#12 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#13 /home/xxxxxxx/public_html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#14 /home/xxxxxxx/public_html/index.php(89): Mage::run('', 'store')
#15 {main}

जवाबों:


20

आपके द्वारा पोस्ट किए गए स्टैक ट्रेस के आधार पर, यह ऐसा दिखता है जब मैगेंटो लेआउट अपडेट xml फ़ाइलों को लोड कर रहा है, और ब्लॉक बनाने के लिए उनका उपयोग कर रहा है जो पृष्ठ के लिए HTML को प्रस्तुत करेगा।

ये रेखाएँ समस्या प्रतीत होती हैं

#1 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('', Array)
#2 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('', 'checkout.cart')
#3 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('', 'checkout.cart')

addBlock, createBlock, और _getBlockInstanceतरीकों सब उम्मीद पहले पैरामीटर ब्लॉक के लिए एक वर्ग उर्फ स्ट्रिंग किया जाना है। कुछ इस तरह checkout/cart। हालाँकि, आपके सिस्टम में, यह स्ट्रिंग गायब है।

->addBlock('', 'checkout.cart')

क्योंकि Magento के इतने विस्तार योग्य, वहाँ असंख्य कारणों से यह हो सकता है। सबसे आम कारण यह है catalog.xmlकि आपकी फ़ाइल को इस तरह बदल दिया गया है

<block type="checkout/cart" name="checkout.cart">

गायब है इसकी typeविशेषता। जो इस तरह दिख सकता है

<block name="checkout.cart">

या यह एक टाइपो हो सकता है

<block typeX="checkout/cart" name="checkout.cart">

उम्मीद है की वो मदद करदे। यदि समस्या समाप्त हो रही है तो कुछ और वापस आना सुनिश्चित करें और सही उत्तर पोस्ट करें।


5
<block name="checkout.cart">इसके बजाय शायद कुछ ऐसा है <reference name="checkout.cart">। मैंने इसे कुछ विषयों में देखा है जो इंटरनेट पर हैं (मुफ्त या भुगतान)। layoutथीम के फ़ोल्डर में एक सरल खोज को इस सिद्धांत की पुष्टि (या खारिज) करनी चाहिए।
मारीस

2
ठीक है, एक referenceटैग उस कॉल स्टैक का कारण नहीं होगा - जिसे कॉल किया createBlockजा रहा है, जिसका अर्थ है एक blockटैग।
एलन स्टॉर्म

3

अपने मूल पोस्ट से टिप्पणियों की मदद से, मैं अपमानजनक कोड को ट्रैक करने में सक्षम था!

यहां वह स्निपेट है जो अपवाद पैदा कर रहा था:

<checkout_cart_index>
    <reference name="content">
        <block name="checkout.cart">            
            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.bottom" as="snippet_cart_bottom">
                <action method="setBlockId"><block_id>snippet_cart_bottom</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.coupon.below" as="snippet_cart_coupon_below">
                <action method="setBlockId"><block_id>snippet_cart_coupon_below</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.empty.bottom" as="snippet_cart_empty_bottom">
                <action method="setBlockId"><block_id>snippet_cart_empty_bottom</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.list.below" as="snippet_cart_list_below">
                <action method="setBlockId"><block_id>snippet_cart_list_below</block_id></action>
            </block>
        </block>
    </reference>
</checkout_cart_index>

संशोधित कोड अब अपवाद का कारण नहीं है:

<checkout_cart_index>
    <reference name="checkout.cart">        
            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.bottom" as="snippet_cart_bottom">
                <action method="setBlockId"><block_id>snippet_cart_bottom</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.coupon.below" as="snippet_cart_coupon_below">
                <action method="setBlockId"><block_id>snippet_cart_coupon_below</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.empty.bottom" as="snippet_cart_empty_bottom">
                <action method="setBlockId"><block_id>snippet_cart_empty_bottom</block_id></action>
            </block>

            <!-- Add CMS Static Block -->
            <block type="cms/block" name="snippet.cart.list.below" as="snippet_cart_list_below">
                <action method="setBlockId"><block_id>snippet_cart_list_below</block_id></action>
            </block>            
    </reference>
</checkout_cart_index>

0

मैं ब्लॉक को हटाकर सिर्फ सादे पुराने द्वारा अपने मुद्दों को हल करने में कामयाब रहा। मैंने यह किया है:

Mage::log($className . ' - ' $blockName, null, 'logfile.log');/App/code/core/core/Mage/Core/Model/Layout.php में '_generateBlock' फ़ंक्शन में लाइन जोड़ना

इस तरह:

$block = $this->addBlock($className, $blockName);
if (!$block) {
    Mage::log($className . ' - ' $blockName, null, 'logfile.log');
    return $this;
}

मैंने तब अपनी थीम / लेआउट में अपने स्थानीय.एक्सएमएल फ़ाइल में निम्न पंक्ति जोड़कर ब्लॉकों को हटा दिया

<remove name="fb8cd356f514800e782dfca09d40465d"/>
<remove name="1f0592cf88e12e898c194d5d18250c51"/>
<remove name="downloads.product"/>

आशा है कि यह किसी की मदद करता है। मेरे अपवाद.लॉग फ़ाइल में लिखी जा रही सभी बकवास को बर्दाश्त नहीं कर सका।

अपडेट करें:

मैंने पाया है कि _generateBlock फ़ंक्शन में /app/code/core/core/Mage/Core/Model/Layout.php में '$ $ इस' से पहले इस कोड का उपयोग करना

if ($_SERVER['HTTP_X_FORWARDED_FOR'] == '00.00.00.00') {
    Mage::log(Zend_Debug::dump($parentBlock, null, false), null, 'export_all_xml.log');
}

अगर आपको जरूरत है तो जाहिर तौर पर 'HTTP_X_FORWARDED_FOR' को 'REMOTE_ADDR' में बदलें।

अद्यतन २

मैंने अपनी साइट को जोड़कर समस्या को गलत पाया:

if ($_SERVER['HTTP_X_FORWARDED_FOR'] == '00.00.00.00') {
    Mage::setIsDeveloperMode(true);
}

'Mage :: throwException (Mage :: helper (' core ') -> __ (' अमान्य ब्लॉक प्रकार:% s ', $ ब्लॉक) के ठीक ऊपर;' ' फ़ाइल में '_getBlockInstance' फ़ंक्शन '/app/code/core/Mage/Core/Model/Layout.php'

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