Ich kann ScopeConfigInterface $scopeConfig
bestimmte Objekte nicht erweitern
di.xml
<preference for="Magento\Framework\Logger\Monolog" type="Foo\Log\Logger\FooLog" />
<virtualType name="helper" type="Foo\Log\Helper\Data" />
<type name="Foo\Log\Logger\FooLog">
<arguments>
<argument name="helper" xsi:type="object">Foo\Log\Helper\Data</argument>
</arguments>
</type>
FooLog.php
public function __construct(
\Foo\Log\Helper\Data $dataHelper
)
{
$this->_scopeConfig = $scopeConfig;
}
Data.php
public function __construct(ScopeConfigInterface $scopeConfig)
{
$this->_scopeConfig = $scopeConfig;
}
$this->_scopeConfig->getValue('dev/debug/foo_bar_config', 'default');
Error:
Circular dependency: Magento\Store\Model\ResourceModel\Config\Collection\Scoped depends on Magento\Store\Model\ResourceModel\Config\Collection\Scoped and vice versa.
Ich kann nicht einmal vorhandene Konfigurationen wie in CreateOrder.php erhalten
$this->scopeConfig->getValue(self::CONFIG_PATH_MERCHANT_ID, $this->sessionQuote->getStoreId());
Das Problem ist, dass die Verwendung ScopeConfigInterface $scopeConfig
nur für bestimmte Objekte nicht möglich ist, wenn ich versuche, einige andere Objekte wie zu erweitern
<preference for="Magento\Cms\Controller\Index\Index" type="Foo\Log\Helper\Data" />
Es klappt
*AKTUALISIEREN
Versucht mit Proxy-Klasse - Erfolg
<type name="Foo\Log\Helper\Data">
<arguments>
<argument name="configinterface" xsi:type="object">Magento\Framework\App\Config\ScopeConfigInterface\Proxy</argument>
</arguments>
</type>
Data.php
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface\Proxy $scopeConfig)
{
$this->_scopeConfig = $scopeConfig;
$host = $this->_scopeConfig->getValue('dev/debug/remote_server_host');
// error after getValue
}
}
quelle
In di.xml können Sie Einstellungen oder ein virtuelles Typ-Tag verwenden, mit denen die zirkuläre Abhängigkeit von di.xml überprüft wird
quelle