Magento 2 - Làm cách nào để nhận các giá trị cấu hình của tiện ích mở rộng trong tệp phtml?


21

Tôi đang làm việc với Magento 2 - beta.

Nhưng không thể tìm thấy làm thế nào để có được các giá trị cấu hình trong các tệp phtml.

ví dụ: Tôi muốn nhận các giá trị cấu hình mô-đun tùy chỉnh của mình trong Magento_Catalog/templates/product/list.phtmltệp.

Bất cứ ai biết làm thế nào để làm điều này?


bạn có thể đưa ra một ví dụ thực tế cuộc sống? chính xác những gì bạn đang cố gắng để lấy?
Marius

Câu trả lời:


43

Bạn có thể tạo một hàm để nhận các giá trị cấu hình trong trình trợ giúp của mô-đun tùy chỉnh.

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

Sau đó, bạn có thể nhận các giá trị cấu hình để gọi hàm này trong bất kỳ tệp phtml nào.

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

1
Cảm ơn bạn đã chỉ ra rằng ScopeConfigInterface có sẵn từ lớp trình trợ giúp trừu tượng! Cứu tôi xác định lại nó.
Robbie Averill

Làm thế nào điều này sẽ làm việc với một giá trị cấu hình mặc định? Tôi đang cố gắng tìm ra cách lấy số điện thoại được đặt trong cấu hình cửa hàng và hiển thị nó trong tiêu
đề.phtml

@Dmitry Tôi nghĩ bạn vẫn cần tiêm \Magento\Framework\App\Config\ScopeConfigInterfacevào trình xây dựng của người trợ giúp
fmsthird

6

Một cách khác là như dưới đây

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

Bạn không bao giờ nên sử dụng trình quản lý đối tượng để khởi tạo mô hình
Dave

Điều này ở đây là quá sai.
medina

0

Sửa lỗi trong câu trả lời của Rushvi: section/group/field

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

Ngoài ra nếu bạn muốn thêm bộ lọc cửa hàng, ví dụ muốn hiển thị văn bản nếu lưu ở cấp cấu hình cửa hàng thì chỉ cần thêm vào sau:

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

Thứ hai cho các bài phê bình: thật tốt khi đưa vào hàm tạo của lớp khối của bạn thông qua DI. Đây chỉ là khái niệm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.