Исключение Magento ‘Mage_Core_Exception’ с сообщением ‘Недопустимый тип блока

#magento #magento-1.9 #magento-1.13

#magento #magento-1.9 #magento-1.13

Вопрос:

Я пытаюсь расширить корпоративный блок модуля GoogleAnalyticsUniversal. Все прошло нормально. Я также добавил свой пользовательский шаблон через файл макета, как показано ниже.

 <layout version="0.1.0">

    <default>
        <!-- Remove Mage_GoogleAnalytics -->
        <remove name="google_analytics" />
        <reference name="head">
            <action method="addJs" ifconfig="google/analytics/active"><script>google/ga.js</script></action>
        </reference> 
        <reference name="after_body_start">
                    <reference name="content">
            <block type="Test_Googleanalyticsuniversal/Ga" name="google_analyticsuniversal" as="google_analyticsuniversal"
                   template="googleanalyticsuniversal/ga.phtml" />
            </reference>
        </reference>
    </default>
</layout>
  

Мой Config.xml как:

 <config>
    <modules>
        <Test_Googleanalyticsuniversal>
            <version>0.0.1</version>
        </Test_Googleanalyticsuniversal>
                     <depends>
                <Enterprise_GoogleAnalyticsUniversal />
            </depends>
    </modules>
    <global>
        <helpers>
            <enterprise_googleanalyticsuniversal>
                <rewrite>
                    <data>Test_Googleanalyticsuniversal_Helper_Data</data>
                </rewrite>
            </enterprise_googleanalyticsuniversal>
        </helpers>
        <blocks>
            <test_googleanalyticsuniversal>
                <class>Test_Googleanalyticsuniversal_Block</class>
            </test_googleanalyticsuniversal>
            <enterprise_googleanalyticsuniversal>
                <rewrite>
                    <ga>Test_Googleanalyticsuniversal_Block_Ga</ga>
                </rewrite>
            </enterprise_googleanalyticsuniversal>
        </blocks>       
    </global>
    <frontend>
        <layout>
            <updates>
                <test_googleanalyticsuniversal>
                    <file>googleanalyticsuniversal.xml</file>
                </test_googleanalyticsuniversal>
            </updates>
        </layout>
    </frontend>    
</config>
  

Мой блок Ga.php как:

 class Test_Googleanalyticsuniversal_Block_Ga extends Enterprise_GoogleAnalyticsUniversal_Block_Ga
{

    protected function _getContainerSnippet()
    {
        // Get the container ID.
        $containerId = Mage::helper('googleanalyticsuniversal')->isTagManagerId();

        // Render the container snippet JavaScript.
        return "<noscript><iframe src="//www.googletagmanager.com/ns.html?id=".$containerId.""
                    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
                    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
                    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
                    j=d.createElement(s),dl=l!='dataLayer'?'amp;l=' l:'';j.async=true;j.src=
                    '//www.googletagmanager.com/gtm.js?id=' i dl;f.parentNode.insertBefore(j,f);
                    })(window,document,'script','dataLayer','".$containerId."');</script>n";
    }

    /**
     * Generate JavaScript for the data layer.
     *
     * @return string|null
     */
    protected function _getDataLayer()
    {
        // Initialise our data source.
        $data = array();

        $data = $data;

        // Enable modules to add custom data to the data layer
        $data_layer = new Varien_Object();
        $data_layer->setData($data);

        $data = $data_layer->getData();

        // Generate the data layer JavaScript.
        if (!empty($data)) return "<script>dataLayer = [".json_encode($data)."];</script>nn";
        else return '';
    }
}
  

Но когда я запускаю интерфейс, он выдает следующую ошибку в Exception.log..

 exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Test_Googleanalyticsuniversal_Block_Ga' in /var/www/tbstr-dev/html/app/Mage.php:595
Stack trace:
#0 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('Alshaya_Googlea...', Array)
#2 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('Alshaya_Googlea...', 'google_analytic...')
#3 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('Alshaya_Googlea...', 'google_analytic...')
#4 /var/www/tbstr-dev/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 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#7 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#8 /var/www/tbstr-dev/html/app/code/core/Mage/Catalog/controllers/CategoryController.php(148): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#9 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Catalog_CategoryController->viewAction()
#10 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view')
#11 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#12 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#13 /var/www/tbstr-dev/html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#14 /var/www/tbstr-dev/html/index.php(83): Mage::run('', 'store')
#15 {main}
  

В журнале добавляется дополнительное Mage ключевое слово перед Test_Googleanalyticsuniversal_Block_Ga as Mage_Test_Googleanalyticsuniversal_Block_Ga

Я попытался изменить тип блока макета в googleanalytics.xml ко многим различным методам. Но ничего не получилось. Итак, кто-нибудь может предложить мне это.

Комментарии:

1. Я бы предположил, что это проблема с путем. Последний запасной вариант Magento — поиск базового класса (таким образом, он добавляет Mage_). Не могли бы вы опубликовать обзор своей структуры каталогов и файлов?

2. Test_Googleanalyticsuniversal/Ga не совпадает с test_googleanalyticsuniversal/ga . Всегда используйте нижний регистр для псевдонимов Magento