2. Magento - Eklentinin yapılandırma değerlerini phtml dosyalarında nasıl bulabilirim?


21

Magento 2 - beta ile çalışıyorum.

Ancak phtml dosyalarında yapılandırma değerlerini nasıl elde edeceğinizi bulamıyorum.

örneğin: Özel modüllerim yapılandırma değerlerini Magento_Catalog/templates/product/list.phtmldosyada almak istiyorum .

Bunu nasıl yapacağını bilen var mı?


gerçek bir hayat örneği verebilir misin? tam olarak ne almaya çalışıyorsun?
Marius

Yanıtlar:


43

Özel modülünüzün yardımcısında yapılandırma değerleri almak için bir işlev oluşturabilirsiniz.

<?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
        );
    }
}

Daha sonra bu işlevi çağırmak için herhangi bir phtml dosyasında yapılandırma değerlerini alabilirsiniz.

$this->helper('Vendor\Module\Helper\Data')->getConfig('section/group/field');

1
ScopeConfigInterface’in soyut bir yardımcı sınıftan alınabileceğini belirttiğiniz için teşekkür ederiz! Beni yeniden tanımlayarak kurtardım.
Robbie Averill

Bu, varsayılan bir yapılandırma değeri ile nasıl çalışır? Mağaza konfigürasyonunda ayarlanan telefon numarasının nasıl alınacağını ve header.phtml'de nasıl gösterileceğini anlamaya çalışıyorum
Philip Deatherage 22:06

@Dmitry Hala \Magento\Framework\App\Config\ScopeConfigInterfaceyardımcının kurucusuna enjekte etmeniz gerektiğini düşünüyorum
fmsthird

6

Başka bir yol aşağıdaki gibidir

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

Bir modelin somutlaştırılması için nesne yöneticisini asla kullanmamalısınız
Dave

Buradaki çok yanlış.
medina

0

Rushvi'nin cevabındaki düzeltme: section/group/field

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

Ayrıca mağaza filtresi eklemek istiyorsanız, örneğin mağaza yapılandırma düzeyinde kaydettiğinizde metni görüntülemek istiyorsanız, ardından aşağıdakileri ekleyin:

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

İkincisi, eleştiriler için: blok sınıfınızın yapıcısına DI yoluyla dahil edilmesi iyidir. İşte sadece kavram

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.