Переопределить Контроллер контактов Magento
Я пытаюсь переопределить Mage/Contacts/IndexController.php
Я создал папку в локальной и создал Mynamespace/CustomContacts/controllers/IndexController.php
<?php
require_once 'Mage/Contacts/controllers/IndexController.php';
class Mynamespace_CustomContacts_IndexController extends Mage_Contacts_IndexController {
protected function indexAction () {
die;
}
}
Я также вставил этот код в Mynamespace/CustomContacts/etc/config.xml
<config>
<frontend>
<routers>
<contacts>
<args>
<modules>
<Mynamespace_CustomContacts before="Mage_Contacts">Mynamespace_CustomContacts</Mynamespace_CustomContacts>
</modules>
</args>
</contacts>
</routers>
</frontend>
</config>
Я очистил кэш, но моя смерть; не работает,
Спасибо за любую помощь
4 answers
1. Лучшие практики
Ваш файл config.xml
выглядит следующим образом:
<?xml version="1.0"?>
<config>
<modules>
<Mynamespace_CustomContacts>
<version>0.1.0</version>
</Mynamespace_CustomContacts>
</modules>
<frontend>
<routers>
<contacts>
<args>
<modules>
<Mynamespace_CustomContacts before="Mage_Contacts">Mynamespace_CustomContacts</Mynamespace_CustomContacts>
</modules>
</args>
</contacts>
</routers>
</frontend>
</config>
2. Плохая практика
Вы можете переместить свой контроллер в app/local/Mage/Contacts/controllers/IndexController.php
для жесткого переопределения.
И не забудьте включить свой модуль в xml-файле в каталоге app/etc/modules
Пройдя через это, он переопределяет IndexController.php
из Mage_Contacts
http://www.amitbera.com/how-to-override-a-controller-in-magento/
IndexController.php файл (локальный/ваша компания/имя_блока/контроллеры/
<?php
require_once Mage::getModuleDir('controllers','Mage_Contacts').DS.'IndexController.php';
class IGN_Siteblocks_IndexController extends Mage_Contacts_IndexController
{
public function indexAction()
{
}
}
Local/your_company/your_block_name/etc/config.xml
<contacts>
<args>
<modules>
<siteblocks before="Mage_Contacts">IGN_Siteblocks</siteblocks>
</modules>
</args>
</contacts>
И давайте создадим ваш пример кода следующим образом:
class IGN_Siteblocks_IndexController extends Mage_Contacts_IndexController
{
public function createAction()
{
return $this->_redirect('noroute');
}
}
Прежде чем перейти к ответу, который я хочу знать, необходимо определить свой пользовательский модуль в файле config.xml
.
Я думаю, что здесь этого не хватает.
Добавить
<modules>
<Mynamespace_CustomContacts>
<version>1.0.0</version>
</Mynamespace_CustomContacts>
</modules>
После узла конфигурации в файле config.xml
.
Также
<Mynamespace_CustomContacts before="Mage_Contacts">
Mynamespace_CustomContacts
</Mynamespace_CustomContacts>`
Это должно быть написано маленькими буквами, как показано ниже
<mynamespace_customcontacts before="Mage_Contacts">
Mynamespace_CustomContacts
</mynamespace_customcontacts>`
Надеюсь, это решит вашу проблему.