2013-10-24 2 views
2

Я хочу, чтобы переопределить следующий контроллер, который создает заказы в интерфейсе:Magento - Override контроллер порядка

app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php 

Я скопировал сам файл в:

app/code/community/Pinto/PartnerSystem/Adminhtml/controllers/Sales/Order/CreateController.php 

Ради не будучи где и как точно скопировать файл/структуру каталогов, я также скопировал его в:

app/code/community/Pinto/PartnerSystem/controllers/AdminControllers/Sales/Order/CreateController.php 

Затем я переименовал класс:

class PartnerSystem_Adminhtml_Sales_Order_CreateController extends Mage_Adminhtml_Sales_Order_CreateController 
{ 
// functions 
} 

В моей config.xml я добавил следующее:

<admin> 
     <routers> 
      <partnersystem> 
       <use>admin</use> 
       <args> 
        <module>Pinto_PartnerSystem_AdminControllers</module> 
        <frontName>partnersystemadmin</frontName> 
       </args> 
      </partnersystem> 
      <adminhtml> 
       <args> 
        <modules> 
         <partnersystem before="Mage_Adminhtml">PartnerSystem_Adminhtml_Sales_Order_CreateController</partnersystem> 
        </modules> 
       </args> 
      </adminhtml> 
     </routers> 
    </admin> 

Я не совсем уверен, как к тому, что я должен поставить между сделать он использует мой CreateController.php вместо базового.

Совершенно новый для Magento так мог использовать некоторую помощь :)

ответ

3

Правильный путь Вашего нового контроллера: app/code/community/Pinto/PartnerSystem/controllers/Adminhtml/Sales/Order/CreateController.php (переключатель папки controllers и Adminhtml). Эта линия от конфигурации:

<partnersystem before="Mage_Adminhtml">PartnerSystem_Adminhtml_Sales_Order_CreateController</partnersystem> 

должен быть

<partnersystem before="Mage_Adminhtml">Pinto_PartnerSystem_Adminhtml</partnersystem> 

и в новом файле контроллера, прежде чем определения классов добавить этот

require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php' 

[EDIT]
новое имя класса контроллера должно быть Pinto_PartnerSystem_Adminhtml_Sales_Order_CreateController.

+0

Привет, Мариус, спасибо за быстрый ответ! Кажется, теперь он распознает новый файл контроллера, однако я включил исходный класс перед определением класса, как вы сказали, и я получил следующую ошибку: «Файл контроллера был загружен, но класс не существует». – Daniel

+0

@ DanielPaul. О да ... Я забыл другое. Новое имя класса контроллера должно быть «Pinto_PartnerSystem_Adminhtml_Sales_Order_CreateController». Я добавлю его к ответу – Marius

+0

Ах, забыли пространство имен! Спасибо, что сейчас работает. – Daniel

2

Это небольшое уведомление о включении пути контроллера.

Это включает путь может привести к ошибкам если режим Magento Compiler включен.

require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php'; 

Вместо того, что хорошо использовать

require_once Mage::getModuleDir('controllers', 'Mage_Adminhtml').DS.'Sales_Order_CreateController.php'; 

Это будет безопаснее. Надеюсь, что это поможет.

+1

Я использовал этот модифицированный код: require_once Mage :: getModuleDir ('controllers', 'Mage_Adminhtml'). DS.'Sales'.DS.'Order'.DS.'CreateController.php '; –