Falsche Abhängigkeit ScopeConfigInterface existiert bereits im Kontextobjekt bei der Kompilierung von 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')]
        );
    }
}

Antworten:


17

Ihr Fehler beruht auf der Tatsache, dass Sie \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfigin den Konstruktor einfügen, während diese Klasse bereits Teil der übergeordneten Magento\Framework\App\Helper\AbstractHelperKlasse ist. Siehe Folgendes aus der übergeordneten Klasse:

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();
}

Damit Sie diese Klasse nicht injizieren müssen, können Sie die folgende Zeile entfernen:

protected $_scopeConfig;

Und aktualisieren Sie Ihren Konstruktor folgendermaßen:

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);
}

Schließlich können Sie jeden der folgenden Aufrufe ersetzen:

$this->_scopeConfig

Mit:

$this->scopeConfig

Arbeite wie Charme. Vielen Dank. Ich schätze deine Antwort.
user3921091

@ user3921091 Sie sollten diese Antwort markieren. Weil dieser auch für mich Arbeit ist
Gujarat Santana
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.