Magento 2 - Wie bekomme ich die Konfigurationswerte der Erweiterung in die PHP-Dateien?

21

Ich arbeite mit Magento 2 - Beta.

Aber kann nicht finden, wie man die Konfigurationswerte in den phtml Akten erhält.

Beispiel: Ich möchte meine benutzerdefinierten Modulkonfigurationswerte in einer Magento_Catalog/templates/product/list.phtmlDatei abrufen.

Weiß jemand, wie das geht?

John
quelle
Können Sie ein reales Beispiel geben? Was genau versuchst du abzurufen?
Marius

Antworten:

43

Sie können eine Funktion zum Abrufen von Konfigurationswerten im Hilfsprogramm Ihres benutzerdefinierten Moduls erstellen.

<?php
namespace Vendor\Module\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    public function getConfig($config_path)
    {
        return $this->scopeConfig->getValue(
            $config_path,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
        );
    }
}

Anschließend können Sie die Konfigurationswerte abrufen, um diese Funktion in beliebigen HTML-Dateien aufzurufen.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');
Mike
quelle
1
Vielen Dank für den Hinweis, dass das ScopeConfigInterface in der Klasse abstract helper verfügbar ist! Hat mich gerettet, es neu zu definieren.
Robbie Averill
Wie würde das mit einem Standardkonfigurationswert funktionieren? Ich versuche herauszufinden, wie ich die Telefonnummer in der Store-Konfiguration festlegen und in der header.phtml anzeigen kann
Philip Deatherage
@Dmitry Ich denke, Sie müssen noch \Magento\Framework\App\Config\ScopeConfigInterfacein Helfer Konstruktor spritzen
fmsthird
6

Ein anderer Weg ist wie folgt

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('group/field/value');
Rushvi
quelle
Sie sollten den Objektmanager niemals zum Instanziieren eines Modells verwenden
Dave
Dieser hier ist sooo falsch.
Medina
0

Korrektur in Rushvis Antwort: its section/group/field

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('section/group/field');

Auch wenn Sie einen Store-Filter hinzufügen möchten, um beispielsweise Text anzuzeigen, wenn Sie auf Store-Konfigurationsebene speichern, fügen Sie einfach Folgendes hinzu:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES;
$conf = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('carriers/freeshipping/extra_info',$storeScope);

Zweitens für Kritiker: Es ist gut, über DI in den Konstruktor Ihrer Blockklasse aufzunehmen. Hier ist nur ein Konzept

Hassan Ali Shahzad
quelle