【问题标题】:Edit configuration values in magento (magento extension)在 magento 中编辑配置值(magento 扩展)
【发布时间】:2012-12-17 23:15:25
【问题描述】:

我创建了一个 Magento 扩展,它使用我的 /etc/ 目录(用于我的模块)中的 system.xml 文件将字段添加到我的配置中。 Magento 1.5 是我目前的目标系统,但我也打算将兼容性扩展到 1.4 和 .16

<merchantid translate="label">
      <label>Merchant ID</label>
      <frontend_type>text</frontend_type>
      <sort_order>20</sort_order>
      <show_in_default>1</show_in_default>
      <show_in_website>1</show_in_website>
      <show_in_store>0</show_in_store>
</merchantid>

我正在尝试在运行时填充此字段的值。目前,我在我的插件中运行它:Mage::getStoreConfig('payment/mymerchant/merchantid');,它返回字段中填充的值。

我需要能够以编程方式更新这个字段,我试过这个:

 $installer = new Mage_Core_Model_Resource_Setup();
                $installer->startSetup();
                $installer->setConfigData("payment/mymerchant/merchantid", "TEST");
                $installer->endSetup();

但是没有成功。我也无法在谷歌上搜索该问题,因为大多数结果似乎并不相关。

有人知道如何设置这些值吗?

【问题讨论】:

  • 您是否正在寻找这些配置的默认值?还是该值需要根据其他因素而有所不同?
  • 需要根据情况不同。无论如何如何设置默认值?

标签: magento


【解决方案1】:

如果您正在寻找默认值,您可以这样做:

<config>
...
    <default>
        <payment>
            <ezimerchant>
                <merchantid>TEST</merchantid>
            </ezimerchant>
        </payment>
    </default>
</config>

如果您真的在寻找程序化解决方案,您可以执行以下操作:

$configModel = Mage::getModel('core/config');
$configModel->saveConfig('payment/ezimerchant/merchantid','TEST');

第三个参数是用来保存它的,'default','website','store'。第四个参数定义您要保存它的网站 ID 或商店 ID。

编辑:您必须在执行此操作时禁用缓存或之后刷新/刷新缓存才能使更改生效。

【讨论】:

  • 太棒了。你知道吗?我使用的 $installer 代码确实有效,你只需要刷新两次,因为如果你先设置然后再进入 magento,它将忽略数据库并从内存中读取。无论如何+1,因为这看起来不错。将来会使用。谢谢
  • 不是DB设置被忽略,只是配置已经解析到当前执行范围的内存中。这可以通过设置配置 XML 和安装脚本数据来克服,或者通过在安装脚本末尾显式调用配置对象上的loadDb()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2012-03-23
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多