Magento 2-如何在phtml文件中获取扩展的配置值?


21

我正在使用Magento 2-Beta。

但是找不到如何在phtml文件中获取配置值。

例如:我想在Magento_Catalog/templates/product/list.phtml文件中获取我的自定义模块配置值。

有人知道怎么做吗?


你能举一个真实的例子吗?您到底要检索什么?
马里斯(Marius)

Answers:


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可从抽象帮助器类获得!重新定义它,救了我。
罗比·阿夫里尔

如何使用默认配置值?我试图弄清楚如何在商店配置中获取设置的电话号码并将其显示在header.phtml中
Philip Deatherage '16

@Dmitry我认为您仍然需要注入\Magento\Framework\App\Config\ScopeConfigInterface助手的构造函数
fmsthird

6

另一种方法如下

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

您永远不要使用对象管理器来实例化模型
Dave

这里的这个太糟糕了。
麦地那

0

更正拉什维的答案: 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将其包含在您的块类的构造函数中是很不错的。这只是概念

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.