【问题标题】:Magento system.xml cache issueMagento system.xml 缓存问题
【发布时间】:2011-11-11 21:14:50
【问题描述】:

到目前为止,我一直在构建一个模块并进行了大量更改,没有任何问题:

我从扩展的 system.xml 文件中删除了一个配置变量,但该字段仍在配置中。我禁用了所有缓存,刷新了所有缓存(通过 magento 管理员和手动删除目录中的所有内容),但它仍然不会消失。

作为测试,我使用相同的节点名称将其添加回 system.xml 文件,但更改了标签,它获取了更改。我还可以通过将<show_in_...> 设置为 0 来隐藏它。但是,在它消失后,我将它从 system.xml 文件中删除,它再次出现在管理员中。我不得不想象这是一个缓存问题,但我不知道要刷新什么才能让它消失。

有什么想法吗?

【问题讨论】:

    标签: magento-1.5 magento


    【解决方案1】:

    有两件事要检查。当您保存配置值时,magento(当前)将其保存到 core_config_data 表中。即使您从 system.xml 配置中删除了配置字段。该路径/值对仍将存储在此数据库中。做一个

    SELECT * FROM core_config_data WHERE path = '/foo/baz/bar'
    

    看看里面是否还有值。如果是,对Mage::getStoreConfig 的调用仍将返回一个值,同样不管system.xml 中的内容是什么

    其次,Magento 允许您将每个配置路径的默认值存储在 config.xml 中。看下

    <default>
       <foo>
           <baz>
               <bar>1</bar>
           </baz>
       </foo>
    </default>
    

    与您的配置路径匹配的嵌套树路径的节点。如果这个节点存在,那么这个值将被返回给Mage::getStoreConfig的请求。

    【讨论】:

    • 对不起,我没有澄清。我知道它存储值的位置......这不是问题。我知道如果我从我的扩展配置中删除它,然后请求 getStoreConfig 以获得该值,我会得到它。没关系。问题是,当我从我的扩展的 system.xml 中删除它时,当我在管理员中查看我的扩展配置时,该字段并没有消失。我删除了core_config_data 表中的条目,并且该字段在扩展配置中被空白,但该字段本身不会消失。它也没有在我们的实时网站上这样做......很奇怪......
    • 您没有编辑您认为正在编辑的文件,或者另一个模块也配置了该字段。如果失败,请在 app/code/core/Mage/Core/Model/Config/System.php 中跟踪 system.xml 的加载。 Magento 认为你在那里有一个节点。你需要弄清楚原因。
    • 感谢您的指导。我终于找到了。不知何故(我将把这归咎于淘气的互联网仙女),该扩展名的system.xml 被复制到另一个扩展名的 etc 目录中。我可能是罪魁祸首,但这肯定不是故意的。总之,谜团解开了:)
    【解决方案2】:

    system.xml 值存储在数据库中,core_config_data:你在那里删除了吗?

    【讨论】:

    • 是的,我做到了(请参阅对艾伦回答的评论)。存储的值消失了,但字段本身仍然存在....太奇怪了....
    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多