magento 当需要Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection时,如何使用 Mage _Catalog_Model_Resource_Product_Collection对象?

fnvucqvd  于 2022-11-12  发布在  Mysql
关注(0)|答案(1)|浏览(152)

我 试图 在 类别 页面 上 列出 产品 , 该 页面 由 一 个 扩展 过滤 , 该 扩展 对 客户 隐藏 给定 类别 中 的 产品 , 但 批准 的 客户 组 中 的 产品 除外 。
筛选 器 要求 传递 产品 集合 以 进行 处理 。 Helper 类 用于 通过 重写 prepareProductCollection 函数 in Mage_Catalog_Model_Layer 来 完成 此 操作 。
此时 , 集合 的 类型 应为 Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection , 但 传递 给 扩展 Mage_Catalog_Model_Layer 的 类 的 集合 的 类型 为 Mage_Catalog_Model_Resource_Product_Collection , 这 将 导致 Helper 类 失败 。 如果 查看 下面 的 堆栈 跟踪 , 则 在 函数 之前 使用 的 所有 Magento 类 都 应 返回 Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection

Recoverable Error: Argument 1 passed to Netzarbeiter_GroupsCatalog_Helper_Data::addGroupsFilterToProductCollection() must be an instance of Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection, instance of Mage_Catalog_Model_Resource_Product_Collection given, called in /home/namespace/public_html/b2b/app/code/community/Netzarbeiter/GroupsCatalog/Model/Catalog/Layer.php on line 37 and defined  in /home/namespace/public_html/b2b/app/code/community/Netzarbeiter/GroupsCatalog/Helper/Data.php on line 475

# 0 /home/namespace/public_html/b2b/app/code/community/Netzarbeiter/GroupsCatalog/Helper/Data.php(475): mageCoreErrorHandler(4096, 'Argument 1 pass...', '/home/namespace/...', 475, Array)

# 1 /home/namespace/public_html/b2b/app/code/community/Netzarbeiter/GroupsCatalog/Model/Catalog/Layer.php(37): Netzarbeiter_GroupsCatalog_Helper_Data->addGroupsFilterToProductCollection(Object(Mage_Catalog_Model_Resource_Product_Collection))

# 2 /home/namespace/public_html/b2b/app/code/core/Mage/Catalog/Model/Layer.php(103): Netzarbeiter_GroupsCatalog_Model_Catalog_Layer->prepareProductCollection(Object(Mage_Catalog_Model_Resource_Product_Collection))

# 3 /home/namespace/public_html/b2b/app/code/core/Mage/Catalog/Block/Product/List.php(87): Mage_Catalog_Model_Layer->getProductCollection()

# 4 /home/namespace/public_html/b2b/app/code/core/Mage/Catalog/Block/Product/List.php(142): Mage_Catalog_Block_Product_List->_getProductCollection()

# 5 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(918): Mage_Catalog_Block_Product_List->_beforeToHtml()

# 6 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()

# 7 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('product_list', true)

# 8 /home/namespace/public_html/b2b/app/code/core/Mage/Catalog/Block/Category/View.php(90): Mage_Core_Block_Abstract->getChildHtml('product_list')

# 9 /home/namespace/public_html/b2b/app/design/frontend/safes/default/template/local/catalog/category/view.phtml(87): Mage_Catalog_Block_Category_View->getProductListHtml()

# 10 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(241): include('/home/namespace/...')

# 11 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/safes/...')

# 12 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()

# 13 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml()

# 14 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()

# 15 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Text_List->_toHtml()

# 16 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()

# 17 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true)

# 18 /home/namespace/public_html/b2b/app/design/frontend/safes/default/template/page/1column.phtml(48): Mage_Core_Block_Abstract->getChildHtml('content')

# 19 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(241): include('/home/namespace/...')

# 20 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/safes/...')

# 21 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()

# 22 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml()

# 23 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()

# 24 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()

# 25 /home/namespace/public_html/b2b/app/code/local/Aserty/Filter/controllers/CategoryController.php(34): Mage_Core_Controller_Varien_Action->renderLayout()

# 26 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Aserty_Filter_CategoryController->viewAction()

# 27 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view')

# 28 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))

# 29 /home/namespace/public_html/b2b/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()

# 30 /home/namespace/public_html/b2b/app/Mage.php(684): Mage_Core_Model_App->run(Array)

# 31 /home/namespace/public_html/b2b/index.php(90): Mage::run('', 'store')

# 32 {main}

中 的 每 一 个

2izufjch

2izufjch1#

Mysql4类在Magento 1.5或1.6之后就被弃用了,它们的存在只是为了向后兼容。如果你看一下它们的源代码,你会发现它们扩展了“新”的资源模型,而没有任何自己的代码:

class Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection extends Mage_Catalog_Model_Resource_Product_Collection
{
}

现在,这工作正常,直到一个扩展类型提示对旧类,但Magento实际上示例化新的。
尝试获取与当前Magento版本兼容的扩展的更新版本。如果不可能,您可以通过替换所有Mysql4类型提示来自己修补它。

相关问题