覆盖商店控制器Magento管理员
-
16-10-2019 - |
题
我想覆盖商店的默认功能(添加一些字段,例如佣金,交付位置等),但我无法对其进行配置。我的配置文件如下
<config>
...
<admin>
<routers>
<adminhtml>
<args>
<modules>
<store before="Mage_Adminhtml">Mycompany_Store_Adminhtml_Store</store>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</global>
....
</config>
它根本不起作用。
解决方案 3
终于我想出了一个解决方案。
<global>
<rewrite>
<mycompany_store_adminhtml_system_storecontroller>
<from><![CDATA[#^/admin/system_store/#]]></from> <!-- Mage_Adminhtml_System_StoreController -->
<to>/store/adminhtml_system_store/</to> <!-- Mycompany_Store_Adminhtml_System_StoreController -->
</mycompany_store_adminhtml_system_storecontroller>
</rewrite>
</global>
其他提示
通过我对Marius的回答的评论,他的解决方案应该起作用。
但是,您应该使用 system.xml
, ,这使您可以在系统配置中指定字段。然后,您可以使用 Mage::getStoreConfig()
并执行您需要的逻辑。
<sections>
<general>
<groups>
<store_information>
<fields>
<commission>
<label>Commission</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>
</commission>
</fields>
</store_information>
</groups>
</general>
</sections>
尝试使用此配置:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Mycompany_Store before="Mage_Adminhtml">Mycompany_Store_Adminhtml</Mycompany_Store>
</modules>
</args>
</adminhtml>
</routers>
</admin>
您的控制器应该在此文件中:Mycompany/Store/controllers/Adminhtml/System/StoreController.php
它应该看起来像这样:
<?php
require_once 'Mage/Adminhtml/controllers/System/StoreController.php';
class Mycompany_Store_Adminhtml_System_StoreController extends Mage_Adminhtml_System_StoreController{
//your methods here
}
这就是您应该覆盖商店控制器的方式。我不明白的是为什么您需要这样做。您可以使用一个模块中的System.xml文件在系统 - >配置部分中添加所需的所有设置,您可以轻松地使用它们读取它们 Mage::getStoreConfig('path/to/setting')
.
或者,如果您想要商店实体中的额外字段,只需在表中添加它们 core_store
和它们的字段以添加/编辑存储的形式为它们。 这是你的做法.
我真的建议将您的值放在配置部分。