2016-05-18 10 views
0

これは奇妙なものです。なぜMagentoは何をしているのか理解したいと思います。Magento 1.9.0.1 Mage_Catalog_Model_Resource_Resource_Product_Collectionオブジェクトの使用Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collectionが期待されるとき

承認された顧客グループ以外の顧客から特定のカテゴリの製品を表示しない拡張機能によってフィルタリングされたカテゴリページに商品を掲載しようとしています。

フィルタは、処理のために製品コレクションを渡す必要があります。ヘルパークラスは、Mage_Catalog_Model_LayerのprepareProductCollection関数をオーバーライドすることによってこれを行うために使用されます。

は、収集は、この時点で型Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collectionあることが期待されるが、コレクションは、ヘルパークラスが失敗する原因となっているタイプのものであるMage_Catalog_Model_Resource_Product_Collection Mage_Catalog_Model_Layerを拡張クラスに渡されます。以下のスタックトレースを見ると、関数の前に使用されているすべての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

_リトルヘルプ_リカバリー可能! – RiggsFolly

+0

これは*あなたの*モジュールかサードパーティの拡張機能ですか? –

+0

@RobbieAverillサードパーティの拡張機能です。与えられたMage_Catalog_Model_Resource_Product_Collectionオブジェクトを使用するようにメソッドシグネチャを変更することで動作させることができましたが、MagentoがMage_Catalog_Model_Resource_Eav_Mysql4_Product_Collectionが期待されるときにMagentoがこのオブジェクトをどのような環境で提供するかを理解したいと思います。 オーバーライドはMage_Catalog_Model_Layerから始まりますが、/app/code/core/Mage/Catalog/Block/Product/List.phpは予期しないオブジェクトタイプを渡しているようです。 – wickedskaman

答えて

0

Mysql4クラスは、Magentoの1.5または1.6から非推奨とだけ後方compatiblityのために存在しています。あなたはそれらのソースコードを見れば、あなたは彼らがどんな独自のコードなし「新しい」リソース・モデルを拡張していることがわかります:

class Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection extends Mage_Catalog_Model_Resource_Product_Collection 
{ 
} 

は今、これは古いクラスに対する拡張タイプのヒントまで、正常に動作しますが、Magentoのは、実際にインスタンス化新しいもの。

現在のMagentoバージョンと互換性のある最新の拡張機能をお試しください。それが不可能な場合は、Mysql4タイプのヒントをすべて置き換えることで、自分でパッチを適用することができます。

関連する問題