Magento module system.xml复选框不会保存

时间:2011-08-26 15:05:37

标签: magento magento-1.5

在Magento v1.5.0.1中,有没有人知道在system.xml中使用<frontend_type>checkbox</frontend_type>配置指令的问题?即使是最简单的哑模块,只有一个配置变量而且没有块/模型,如果我勾选方框并点击&#34; Save&#34;它重新加载页面并取消选中复选框,即使它表示配置已成功保存。我搜索了代码,它只在几个地方使用过。大多数情况下,人们将<frontend_type>select</frontend_type><source_model>adminhtml/system_config_source_yesno</source_model>一起使用。这有效,但为什么复选框也不起作用?或者我误解了Magento复选框假定如何工作?

如果有帮助,这是我的文件。在这种情况下,我也添加了一个文本字段变量。如果我输入文本并点击保存,则会保存,但复选框不会:

config.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Brian_Stupid>
            <version>0.1.0</version>
        </Brian_Stupid>
    </modules>
    <adminhtml>
        <acl>
            <resources>
                <admin>
                    <children>
                        <system>
                            <children>
                                <config>
                                    <children>
                                        <stupid translate="title">
                                            <title>Stupid Crap</title>
                                        </stupid>
                                    </children>
                                </config>
                            </children>
                        </system>
                    </children>
                </admin>
            </resources>
        </acl>
    </adminhtml>
</config>

的system.xml:

<?xml version="1.0"?>
<config>
    <sections>
        <stupid translate="label">
            <label>Stupid Test</label>
            <tab>catalog</tab>
            <frontend_type>text</frontend_type>
            <sort_order>998</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <debug translate="label">
                    <label>Debugging</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>5</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>
                        <debugmode translate="label">
                            <label>Debug Mode Enable</label>
                            <comment>If enabled, does not alter database. Prints debug messages and dies</comment>
                            <frontend_type>checkbox</frontend_type>
                            <sort_order>5</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </debugmode>
                        <texttest translate="label">
                            <label>Text Test</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>10</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </texttest>
                    </fields>
                </debug>
            </groups>
        </stupid>
    </sections>
</config>

2 个答案:

答案 0 :(得分:6)

我发布了我的解决方案,因为我面临着类似的情况

基本上问题是magento只保存db中的输入参数'value',而在输入复选框中,重要值是'Checked'。

我尝试将一些js设置为当复选框更改时根据此设置输入值以及当页面加载相反时...这不起作用。

替代解决方案:使用下拉列表

 <debugmode translate="label">
                        <label>Debug Mode Enable</label>
                        <comment>If enabled, does not alter database. Prints debug messages and dies</comment>
                        <frontend_type>select</frontend_type>                                                                     
                        <source_model>adminhtml/system_config_source_yesno</source_model>     
                        <sort_order>10</sort_order>
                        <show_in_default>1</show_in_default>
                        <show_in_website>1</show_in_website>
                        <show_in_store>1</show_in_store>
                    </debugmode>

答案 1 :(得分:0)

我花了一些时间来获得解决方案,但没有一个,除了一个。

查看Mage-Folder中的PayPal模块。这是唯一使用Checkboxed的模块,但是它们设置得非常困难。

我想这就是每个人都使用带有yesno或enabledisable源的select的原因。