Magento:我如何在Magento扩展中拥有“调试标志”?

时间:2011-04-20 16:34:31

标签: php debugging magento

我想在我正在开发的Magento扩展中有一个调试标志。我想在开发时将它设置为true,当我向用户发布扩展时将其删除(默认为false)。实现这个的最佳方法是什么?

首先想到的是将此标志默认为false并在我的app / etc / local.xml文件中将其设置为true。但是,我如何将新的XML节点引入local.xml并让Magento基础架构解析,如果对我来说并使其可用于我的PHP代码?还有其他更简单的方法吗?

3 个答案:

答案 0 :(得分:3)

通过管理面板对其进行配置,默认情况下将其设置为false。如果它在代码中,用户可以切换它,所以你也可以把它放在设置面板的开发者部分。

答案 1 :(得分:3)

Magento ECG在Magento论坛上给了我一个很好的解决方案:http://www.magentocommerce.com/boards/viewthread/226496/

引用它们:

  

设置和获取的解决方案之一   模块中的debug标志是添加它   到模块的config.xml等   。目录

     

您可以将其添加到部分。   所以你的部分将如下所示:

<default>
    <your_module>
        <debug>1</debug>     
    </your_module> 
</default>
     

从代码中你可以得到这个:

     

$debugFlag = Mage::getStoreConfig('your_module/debug');

我要做的是将相同的XML块放在我的local.xml文件中。这样它只能在我的开发机器上启动,并且不会使用我的Magento扩展(与扩展自己的config.xml一样)发布

答案 2 :(得分:1)

我会使用Magento的admin/system/config

在您的模块中添加适当的etc/system.xml,例如:

<config>
    <!-- : -->
    <tabs>
        <!-- : -->
        <mycompany>
            <label>My Company Tab</label>
            <sort_order>99</sort_order>
        </mycompany>
        <!-- : -->
    </tabs>
    <!-- : -->
    <sections>
        <!-- : -->
        <mymodule>
            <label>My Module</label>
            <tab>mycompany</tab>
            <frontend_type>text</frontend_type>
            <sort_order>99</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <mygroup>
                    <label>My Group</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>99</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>
                        <debug>
                            <label>Debug</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>99</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </debug>
                    </fields>
                </mygroup>
            </groups>
        </mymodule>
        <!-- : -->
    </sections>
</config>

如果以前不存在mymodule部分,您还需要最初为模块定义访问控制(必须放入模块的etc/config.xml):

</config>
    <!-- : -->
    <adminhtml>
        <!-- : -->
        <acl>
            <resources>
                <admin>
                    <children>
                        <system>
                            <children>
                                <config>
                                    <children>
                                        <mymodule >
                                            <title>My Module</title>
                                        </mymodule>
                                    </children>
                                </config>
                            </children>
                        </system>
                    </children>
                </admin>
            </resources>
        </acl>
        <!-- : -->
    </adminhtml>
    <!-- : -->
</config>

现在,管理员可以通过选择

来改变定义的调试标志通过Magento后端

System -> Configuration - My Module - My Group - Debug - Yes|No

要以编程方式获取调试标志的当前值,您可以使用:

$sFlag = Mage::getStoreConfig('mymodule/mygroup/debug');     // null | '0' | '1'
$bFlag = Mage::getStoreConfigFlag('mymodule/mygroup/debug'); // true | false