Magento 1.9.0.1 с использованием объекта Mage_Catalog_Model_Resource_Product_Collection, когда ожидается Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection

Это странно, и я хочу понять, почему Magento делает то, что делает.

Я пытаюсь перечислить товары на странице категории, отфильтрованной по расширению, которое скрывает товары в данной категории от покупателей, за исключением товаров из утвержденных групп покупателей.

Фильтр требует, чтобы коллекция продуктов была передана для обработки. Класс Helper используется для этого путем переопределения функции prepareProductCollection в 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}

0

Решение

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 Тип подсказки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]