Antworten:
Sie können die Werte nicht direkt von lesen etc/config.xml
.
Ich meine, Sie können, aber es macht keinen Sinn, direkt von dort zu lesen, da die Werte möglicherweise aus dem Abschnitt store-> configuration überschrieben werden, wodurch der Wert config.xml
unbrauchbar wird.
Stattdessen können Sie aus der global zusammengeführten Konfiguration lesen. Wenn der Wert im Konfigurationsabschnitt nicht überschrieben wird, erhalten Sie den Wert von config.xml
.
Und Sie können dies tun, indem Sie Ihrer Klasse eine Abhängigkeit hinzufügen, die den Konfigurationswert wie folgt lesen muss:
Namespace Ihr \ Namespace \ Here;
class YourClassName
{
protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
....
$this->scopeConfig = $scopeConfig;
....
}
}
Dann können Sie den Konfigurationswert wie folgt lesen
$path = 'path/to/value';
$value = $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
Oder wenn es sich um ein Ja / Nein-Flag handelt und Sie einen true/false
Wert erhalten möchten, können Sie dies folgendermaßen tun:
$flag = $this->scopeConfig->isSetFlag($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$path
repräsentiert alle von slash ( /
) verketteten Tags bis zu Ihrem Wert (ähnlich wie M1).
Um sie in zu definieren, müssen config.xml
Sie dies in Ihre Datei einfügen
<?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>
Verwenden Sie den obigen Code,
$value = $this->scopeConfig->getValue('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
wird zurückkehren 1
und
$value = $this->scopeConfig->isSetFlag('section/group/value1', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
wird zurückkehren true
.