Mage_Core_Exception:无效的块类型-仅在开发环境中运行块

时间:2018-09-18 13:29:30

标签: magento magento-1.9

我们有3个环境的设置,它们是当前的精确副本,并使用GIT进行管理。 环境:

  • 开发(开发)
  • 接受(测试)
  • 大师(现场)

我为展示一些产品的模块开发了一个自定义模块。该模块在所有3种环境中均处于活动状态,并通过管理员显示在模块列表中。

要显示块,我在CMS页面上使用XML更新,该页面在所有3种环境中也完全相同。 以某种方式,该块显示在Develop上,而不显示在AcceptanceMaster上,而Develop在其他环境中未记录任何错误或异常,我确实得到了以下异常:

2018-09-18T12:12:40+00:00 ERR (3): 
Mage_Core_Exception: Invalid block type: BeterSport_CustomUpsellList_Block_Customupselllist in /data/web/staging/app/Mage.php:595
Stack trace:
#0 /data/web/staging/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block ty...')
#1 /data/web/staging/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('BeterSport_Cust...', Array)
#2 /data/web/staging/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('customupselllis...', 'customupselllis...')
#3 /data/web/staging/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('customupselllis...', 'customupselllis...')
#4 /data/web/staging/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 /data/web/staging/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 /data/web/staging/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#7 /data/web/staging/app/code/core/Mage/Cms/Helper/Page.php(113): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#8 /data/web/staging/app/code/core/Mage/Cms/Helper/Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_PageController), '231')
#9 /data/web/staging/app/code/core/Mage/Cms/controllers/PageController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_PageController), '231')
#10 /data/web/staging/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Cms_PageController->viewAction()
#11 /data/web/staging/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('view')
#12 /data/web/staging/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#13 /data/web/staging/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#14 /data/web/staging/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#15 /data/web/staging/index.php(80): Mage::run('default', 'store')
#16 {main}

阻止该块的原因可能是什么,为什么它在Develop上起作用?

2 个答案:

答案 0 :(得分:0)

分支机构是否部署在不同的环境中? 如果是这种情况,则问题可能与环境及其数据库有关,而不仅与git分支有关。 您是否在CMS区块内显示区块,例如:{{block type=rss/order_new}}? 然后,您必须在Magento面板内为此块类型授予权限。

在这里您可以按照正确的步骤进行操作: https://docs.magento.com/m1/ce/user_guide/store-operations/permissions-content.html


如果问题发生在同一数据库中,而您正在直接显示块  通过XML,那么您应该在更改分支后刷新缓存,并检查模块是否已通过代码启用(尝试使用hello world控制器)。

希望它对您有帮助。 问候。

答案 1 :(得分:0)

Mage_Core_Exception: Invalid block type是由我的开发(Windows)和测试/实时(Linux)环境之间的区分大小写引起的。

解决方案:

将块的类名更改为正确的Magento命名约定,有关代码更改,请参见下文。

发件人:

class Vendor_Module_Block_BlockNameHere extends Mage_Core_Block_Template {

收件人:

class Vendor_Module_Block_Blocknamehere extends Mage_Core_Block_Template {
  

仅从大写字母开始,将BlockNameHere更改为Blocknamehere