Magento 2-etc / config.xmlの値を読み取る方法は?


回答:


12

から直接値を読み取ることはできませんetc/config.xml
つまり、できますが、stores-> configurationセクションから値が上書きされて値がconfig.xml役に立たなくなるため、そこから直接読み取る意味はありません。
代わりに、マージされたグローバル構成から読み取ることができますconfig.xml。構成セクションで値が上書きされていない場合は、から値を取得します。

そして、次のように構成値を読み取る必要があるクラスに依存関係を追加することでそれを行うことができます:

ネームスペースYour \ Namespace \ Here;

class YourClassName
{
    protected $scopeConfig;
    public function __construct(
        ....
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
        ....
    ) {
        ....
        $this->scopeConfig = $scopeConfig;
        ....
    }
}

次に、このような設定値を読み取ることができます

$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);

または、それがyes / noフラグであり、true/false値を取得したい場合は、次のように行うことができます。

$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);

$pathスラッシュ(/)で連結された、ユーザーの値までのすべてのタグを表します(M1と同様)。

それらを定義するにはconfig.xml、これをファイルに追加する必要があります

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default><--! reserved word -->
        <section><!-- anything goes here -->
            <group><!-- anything goes here -->
                <value1>1</value1><!-- anything goes here -->
                <value2>some text</value2><!-- anything goes here -->
            </group>
        </section>
    </default>
</config>

上記のコードを使用して、

$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);  

戻ります1と、

$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);  

戻りtrueます。


ありがとう。私は試し、例を作りました。github.com/zzpaul/magento2-module-custom-config-demo
Paul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.