如何从Magento系统配置中获取数据

Jor*_*rge 60 php magento

我只是想知道如何获取自定义模块的配置数据.配置可以从管理员设置system->configuration,如何在前端拉它?

Muk*_*ain 151

$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');
Run Code Online (Sandbox Code Playgroud)

sectionName,groupNamefieldName存在于模块的etc/system.xml文件中.

上面的代码将自动获取当前查看的商店的配置值.

如果要获取当前查看的商店之外的任何其他商店的配置值,则可以将商店ID指定为该getStoreConfig功能的第二个参数,如下所示:

$store = Mage::app()->getStore(); // store info
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName', $store);
Run Code Online (Sandbox Code Playgroud)

  • 以上答案是完美的.只是想补充一点.system.xml中指定的所有值都存储在core_config_data表中,例如,如果您希望unsecure base url的值搜索core_"web/unsecure/base_url"的core_config_data,则可以通过$ configValue = Mage以编程方式获取此值: :getStoreConfig( '网络/安全/ BASE_URL'); (6认同)

小智 23

你应该使用以下代码

$configValue = Mage::getStoreConfig(
                   'sectionName/groupName/fieldName',
                   Mage::app()->getStore()
               ); 
Run Code Online (Sandbox Code Playgroud)

Mage::app()->getStore() 这将在获取值中添加商店代码,以便您可以获得当前商店的正确配置值,这将避免不正确的商店值,因为magento也用于多个商店/视图,因此必须添加商店代码以获取magento中的任何内容.

如果我们配置了多个商店或多个视图,那么这将确保我们获得当前商店的价值

  • 我不认为这是必要的.`getStoreConfig()`方法看起来像`return self :: app() - > getStore($ store) - > getConfig($ path);`,所以如果你不传递第二个参数,它会得到相同的结果. (3认同)

Dar*_*ton 19

Magento 1.x

(下面提供的magento 2示例)

sectionName,groupNamefieldName存在于模块的etc/system.xml文件中.

PHP语法:

Mage::getStoreConfig('sectionName/groupName/fieldName');
Run Code Online (Sandbox Code Playgroud)

在管理员的编辑器中,例如CMS页面或静态块的内容; 目录类别,目录产品等的描述/简短描述

{{config path="sectionName/groupName/fieldName"}}
Run Code Online (Sandbox Code Playgroud)

对于"在编辑器内"工作方式,必须通过过滤器传递字段值,以便解析出{{...}}内容.开箱即用,Magento将针对类别和产品描述以及CMS页面和静态块执行此操作.但是,如果要在自己的自定义视图脚本中输出内容并希望解析这些变量,则可以这样执行:

<?php
    $example = Mage::getModel('identifier/name')->load(1);
    $filter  = Mage::getModel('cms/template_filter');
    echo $filter->filter($example->getData('field'));
?>
Run Code Online (Sandbox Code Playgroud)

标识符/名称替换为要加载的模型的适当值,并使用要输出的属性的名称替换字段,该字段可能包含需要解析的{{...}}次出现.

Magento 2.x

从任何扩展\ Magento\Framework\View\Element\AbstractBlock的Block类

$this->_scopeConfig->getValue('sectionName/groupName/fieldName');
Run Code Online (Sandbox Code Playgroud)

任何其他PHP类:

如果类(并且没有它的父级)不\Magento\Framework\App\Config\ScopeConfigInterface通过构造函数注入,则必须将其添加到您的类中.

// ... Remaining class definition above...

/**
 * @var \Magento\Framework\App\Config\ScopeConfigInterface
 */
protected $_scopeConfig;

/**
 * Constructor
 */
public function __construct(
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
    // ...any other injected classes the class depends on...
) {
  $this->_scopeConfig = $scopeConfig;
  // Remaining constructor logic...
}

// ...remaining class definition below...
Run Code Online (Sandbox Code Playgroud)

将它注入到类中后,现在可以使用上面给出的块类的相同语法示例来获取存储配置值.

请注意,在修改任何类的__construct()参数列表之后,您可能必须清除生成的类以及依赖项注入目录: var/generation&var/di