Переопределить контроллер магазина Magento Admin
-
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>
Другие советы
С моим комментарием ответа Мариуса его решение должно работать.
Тем не менее, вы должны делать это, используя 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-> Configuration, используя файл System.xml из одного из ваших модулей, и вы можете легко прочитать их с помощью Mage::getStoreConfig('path/to/setting')
.
или если вы хотите дополнительные поля в объекте магазина, просто добавьте их в таблицу core_store
и поля для них в форме для магазина добавить/редактировать. Вот как ты можешь это сделать.
Я действительно рекомендую поместить ваши значения в раздел конфигурации.