Tôi không thể sử dụng ScopeConfigInterface $scopeConfig
khi mở rộng một số đối tượng
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;
}
Dữ liệu.php
public function __construct(ScopeConfigInterface $scopeConfig)
{
$this->_scopeConfig = $scopeConfig;
}
$this->_scopeConfig->getValue('dev/debug/foo_bar_config', 'default');
Lỗi:
Circular dependency: Magento\Store\Model\ResourceModel\Config\Collection\Scoped depends on Magento\Store\Model\ResourceModel\Config\Collection\Scoped and vice versa.
Tôi thậm chí không thể có được các cấu hình hiện có như trong CreatOrder.php
$this->scopeConfig->getValue(self::CONFIG_PATH_MERCHANT_ID, $this->sessionQuote->getStoreId());
Vấn đề là, việc sử dụng ScopeConfigInterface $scopeConfig
chỉ không thể sử dụng cho một số đối tượng nhất định, nếu tôi cố gắng mở rộng một số đối tượng khác như
<preference for="Magento\Cms\Controller\Index\Index" type="Foo\Log\Helper\Data" />
nó hoạt động
* CẬP NHẬT
Đã thử với lớp proxy - thành công
<type name="Foo\Log\Helper\Data">
<arguments>
<argument name="configinterface" xsi:type="object">Magento\Framework\App\Config\ScopeConfigInterface\Proxy</argument>
</arguments>
</type>
Dữ liệu.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
}
}