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.