Magento 2 - วิธีรับค่าการตั้งค่าของส่วนขยายในไฟล์ phtml


21

ฉันทำงานกับ Magento 2 - เบต้า

แต่ไม่พบวิธีรับค่าการกำหนดค่าในไฟล์ phtml

เช่น: ฉันต้องการได้รับการกำหนดค่าโมดูลที่กำหนดเองของฉันในMagento_Catalog/templates/product/list.phtmlไฟล์

ใครรู้วิธีการทำเช่นนี้?


คุณยกตัวอย่างชีวิตจริงได้ไหม คุณพยายามดึงข้อมูลอะไร
Marius

คำตอบ:


43

คุณสามารถสร้างฟังก์ชั่นเพื่อรับค่าการกำหนดค่าในตัวช่วยของโมดูลที่คุณกำหนดเอง

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

จากนั้นคุณสามารถรับค่าการกำหนดค่าเพื่อเรียกใช้ฟังก์ชันนี้ในไฟล์ phtml ใด ๆ

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

1
ขอบคุณสำหรับการชี้ให้เห็นว่า ScopeConfigInterface พร้อมใช้งานจากคลาสตัวช่วยที่เป็นนามธรรม! ช่วยฉันนิยามใหม่มัน
Robbie Averill

สิ่งนี้จะทำงานกับค่ากำหนดเริ่มต้นได้อย่างไร ฉันกำลังพยายามหาวิธีตั้งค่าหมายเลขโทรศัพท์ในการกำหนดค่าร้านค้าและแสดงใน header.phtml
Philip Deatherage

@Dmitry ฉันคิดว่าคุณยังคงต้องฉีด\Magento\Framework\App\Config\ScopeConfigInterfaceใน
คอนสตรัคเตอร์

6

อีกวิธีคือด้านล่าง

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

คุณไม่ควรใช้ตัวจัดการวัตถุสำหรับการสร้างตัวอย่างของโมเดล
Dave

อันนี้ผิดเลย
medina

0

การแก้ไขคำตอบของ Rushvi: section/group/field

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

นอกจากนี้หากคุณต้องการเพิ่มตัวกรองร้านค้าเช่นต้องการแสดงข้อความหากบันทึกในระดับการกำหนดค่าร้านค้าเพียงเพิ่มต่อไปนี้:

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

ประการที่สองสำหรับการวิพากษ์วิจารณ์: มันดีที่จะรวมไว้ในคอนสตรัคเตอร์ของคลาสบล็อกของคุณผ่าน DI นี่เป็นเพียงแนวคิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.