函数构建问题

5.91K 浏览M2交流区

函数构建问题

我想在一个程序里面,调用reindex,我查过调用应该是MagentoCatalogModelIndexerProductFlatProcessor->reindexRow($id)

所以我想在程序调用它,根据老大们意思要么就在构建函数里面声明,要么就用objectManager, 但2个办法我都试了,不行,求高手们帮忙看看

class Action extends MagentoCatalogModelResourceModelAbstractResource {     
  /**      * @var MagentoCatalogModelIndexerProductFlatProcessor      */     
  protected $_productFlatIndexerProcessor;     
  /**      * @var MagentoCatalogModelIndexerProductPriceProcessor      */     
  protected $_productPriceIndexerProcessor;     
  /**      * Initialize connection      *      * @return void      */
  /**      * @param MagentoCatalogModelIndexerProductFlatProcessor $productFlatIndexerProcessor      */
       protected function _construct(         
           MagentoCatalogModelIndexerProductFlatProcessor $productFlatIndexerProcessor     
       ) {         
           $resource = $this->_resource;         
           $this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;         
           $this->setType(MagentoCatalogModelProduct::ENTITY)->setConnection($resource->getConnection('catalog'));
      }

但这样写,程序会报错

Fatal error : Declaration of MagentoCatalogModelResourceModelProductAction::_construct(MagentoCatalogModelIndexerProductFlatProcessor $productFlatIndexerProcessor) must be compatible with MagentoFrameworkModelResourceModelAbstractResource::_construct() in  /magento2/vendor/magento/module-catalog/Model/ResourceModel/Product/Action.php  on line  180

但如果用objectManager的调用:

$objectManager = MagentoCatalogModelIndexerProductFlatProcessor::reindexRow();         
$categoryRepository = $objectManager->create('MagentoCatalogModelResourceModelProduct');

但还是报错

Exception #0 (Exception): Deprecated Functionality: Non-static method MagentoCatalogModelIndexerProductFlatProcessor::reindexRow() should not be called statically in /home/Little/magento2/vendor/magento/module-catalog/Model/ResourceModel/Product/Action.php on line 125

求高手帮忙看看,谢谢!

0

$objectManager  =  MagentoFrameworkAppObjectManager::getInstance();
用这个类去调用你想要的类。
比如
$categoryRepository  =  $objectManager->create('MagentoCatalogModelResourceModelProduct');

0

哈哈,原来自己迷糊了,哎,怪自己,但构建的方法还是不会,希望指教

0

当然,reindexRow()  这个并不是静态,因为要加一个而改动太多东西,我个人是不喜欢的,但对于php的认识不多,不知道各位高手有啥建议。

0