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?


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');

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');

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.