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

时间:2011-05-05 03:50:02

标签: php magento

我只是想知道如何获取自定义模块的配置数据。可以从admin system->configuration设置配置以及如何在前端提取它?

4 个答案:

答案 0 :(得分:150)

$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');
模块的 etc / system.xml 文件中包含

sectionName groupName fieldName 。< / p>

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

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

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

答案 1 :(得分:23)

您应该使用以下代码

$configValue = Mage::getStoreConfig(
                   'sectionName/groupName/fieldName',
                   Mage::app()->getStore()
               ); 

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

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

答案 2 :(得分:19)

Magento 1.x

(下面提供的magento 2示例)

sectionName groupName fieldName 出现在模块的etc / system.xml文件中。

PHP语法:

Mage::getStoreConfig('sectionName/groupName/fieldName');

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

{{config path="sectionName/groupName/fieldName"}}

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

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

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

Magento 2.x

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

$this->_scopeConfig->getValue('sectionName/groupName/fieldName');

任何其他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...

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

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

答案 3 :(得分:2)

例如,如果您想从config-&gt;存储电子邮件地址获取EMAIL ADDRESS。 您可以从wich商店指定您需要的地址:

$store=Mage::app()->getStore()->getStoreId(); 
/* Sender Name */
Mage::getStoreConfig('trans_email/ident_general/name',$store); 
/* Sender Email */
Mage::getStoreConfig('trans_email/ident_general/email',$store);