Magento:覆盖配置控制器?

时间:2011-09-18 05:08:30

标签: magento config

任何人都可以告诉我如何在magento中覆盖config控制器。我已经在下面找到了我的配置代码:

<config>
<modules>
    <Adodis_Themechooser>
        <version>0.1.0</version>
    </Adodis_Themechooser>
</modules>
    <adminhtml>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <Adodis_Themechooser>
                        <title>Themechooser Module</title>
                        <sort_order>10</sort_order>
                    </Adodis_Themechooser>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <themechooser>
                                        <title>Themechooser</title>
                                    </themechooser>
                                </children>
                            </config>
                        </children>
                    </system>
                </children>
            </admin>
        </resources>
    </acl>
</adminhtml> 
<global>


            <adminhtml> 
                 <rewrite>
                    <themechooser_config>
                        <from><![CDATA[#^/admin/system_config/#]]></from>
                        <to>/themechooser/config/</to>
                    </themechooser_config>
                </rewrite>
            </adminhtml>

    <models>
        <themechooser>
            <class>Adodis_Themechooser_Model</class>
        </themechooser>
    </models>
    <helpers>
        <themechooser>
            <class>Adodis_Themechooser_Helper</class>
        </themechooser>
    </helpers>
 </global>  
 </config>

1 个答案:

答案 0 :(得分:3)

配置控制器的覆盖意味着您将处理所有按下“保存配置”按钮的按钮,而不仅仅是您自己的themechooser页面。这种覆盖方法意味着没有其他模块可以进行自己的兼容覆盖,并且“from / to”语法无论如何都已过时。此外,根本不需要覆盖,您只对保存一个字段感兴趣,并且可以通过backend_model找到。

您的模块可能有etc/system.xml个文件,

<config>
    <sections>
        <themechooser>
            <groups>
                <themechooser>
                    <fields>
                        <example translate="label">
                            <label>This is a text field</label>
                            <frontend_type>text</frontend_type>
                            <backend_model>themechooser/config_example</backend_model>
                            <show_in_default>1</show_in_default>
                        </example>
                    </fields>
                </themechooser>
            </groups>
        </themechooser>
    </sections>
</config>

注意backend_model。现在创建适合themechooser/config_example

的类
class Adodis_Themechooser_Model_Config_Example extends Mage_Core_Model_Config_Data {

    protected function _afterSave() {
        $value = $this->getValue();
        // $value is the text in the text field
    }

}

剩下的就是使用$value来设置前端主题。该字段可以是任何类型,也不必是文本。