La dépendance incorrecte ScopeConfigInterface existe déjà dans l'objet contextuel dans la compilation de magento2


9
<?php
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Ortho\Featuredproduct\Helper;

use Magento\Framework\App\Helper\AbstractHelper;
/**
 * Search helper
 */
class Data extends AbstractHelper
{


   /** * @var \Magento\Framework\App\Config\ScopeConfigInterfac */
    protected $_scopeConfig;
    protected $_config;
    protected $_storeManager;
    protected $_productFactory;
    CONST FEATURED_ENABLE = 'featured_settings/general/isenable';
    CONST FEATURED_TITLE = 'featured_settings/general/title';
    CONST FEATURED_LIMIT = 'featured_settings/general/limit';
    CONST FEATURED_SIDEENABLE = 'featured_settings/general/isleftenable';
    CONST FEATURED_SIDELIMIT = 'featured_settings/general/sidebarlimit';
    CONST FEATURED_METATITLE = 'featured_settings/featured_metadata/meta_title';
    CONST FEATURED_METAKEYWORD = 'featured_settings/featured_metadata/meta_keyword';
    CONST FEATURED_MTEADESC = 'featured_settings/featured_metadata/meta_description';


    /**
     * Initialize
     *
     * @param Magento\Framework\App\Helper\Context $context
     * @param Magento\Catalog\Model\ProductFactory $productFactory
     * @param Magento\Store\Model\StoreManagerInterface $storeManager
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\App\Helper\Context $context, 
        \Magento\Catalog\Model\ProductFactory $productFactory,
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, 
        \Magento\Store\Model\StoreManagerInterface $storeManager, 
        array $data = []
    ) {
        $this->_productFactory = $productFactory;
        $this->_storeManager = $storeManager;
        $this->_scopeConfig = $scopeConfig;
        parent::__construct($context, $data);
    }

    public function getFeaturedstatus()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_ENABLE,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    public function getFeaturedlimit()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_LIMIT,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    public function getFeaturedTitle()
    {
        ///echo 'check';
        return $this->_scopeConfig->getValue(self::FEATURED_TITLE,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    public function getFeaturedleftstatus()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_SIDEENABLE,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    public function getFeaturedleftlimit()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_SIDELIMIT,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }


    public function getMetaTitle()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_METATITLE,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }


    public function getMetaKeyword()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_METAKEYWORD,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }


    public function getMetaDescription()
    {
        return $this->_scopeConfig->getValue(self::FEATURED_MTEADESC,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }



    public function getBreadcrumbs(\Magento\Framework\View\Result\Page $resultPage) {

        ///echo 'check breadcumbs';
        $breadcrumbs = $resultPage->getLayout()->getBlock('breadcrumbs');

        $breadcrumbs->addCrumb(
             'home', [
            'label' => __('Home'),
            'title' => __('Home Page'),
            'link' => $this->_storeManager->getStore()->getBaseUrl()
                ]
        );
        $breadcrumbs->addCrumb(
                'cms_page', ['label' => __('Featured Product'), 'title' => __('Featured Product')]
        );
    }
}

Réponses:


17

Votre erreur vient du fait que vous injectez \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfigdans le constructeur alors que cette classe fait déjà partie de la Magento\Framework\App\Helper\AbstractHelperclasse parente . Voir les éléments suivants de la classe parent:

protected $scopeConfig;

public function __construct(Context $context)
{
    $this->_moduleManager = $context->getModuleManager();
    $this->_logger = $context->getLogger();
    $this->_request = $context->getRequest();
    $this->_urlBuilder = $context->getUrlBuilder();
    $this->_httpHeader = $context->getHttpHeader();
    $this->_eventManager = $context->getEventManager();
    $this->_remoteAddress = $context->getRemoteAddress();
    $this->_cacheConfig = $context->getCacheConfig();
    $this->urlEncoder = $context->getUrlEncoder();
    $this->urlDecoder = $context->getUrlDecoder();
    $this->scopeConfig = $context->getScopeConfig();
}

Ainsi, vous n'avez pas besoin d'injecter cette classe, vous pouvez supprimer la ligne suivante:

protected $_scopeConfig;

Et mettez à jour votre constructeur comme ceci:

public function __construct(
    \Magento\Framework\App\Helper\Context $context, 
    \Magento\Catalog\Model\ProductFactory $productFactory,
    \Magento\Store\Model\StoreManagerInterface $storeManager, 
    array $data = []
) {
    $this->_productFactory = $productFactory;
    $this->_storeManager = $storeManager;
    parent::__construct($context, $data);
}

Enfin, vous pouvez remplacer chacun des appels suivants:

$this->_scopeConfig

Avec:

$this->scopeConfig

Travaillez comme un charme merci beaucoup j'apprécie votre réponse.
user3921091

@ user3921091 vous devez cocher cette réponse. Parce que celui-ci est aussi du travail pour moi
Gujarat Santana
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.