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.