Переопределить Контроллер контактов 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>

Я очистил кэш, но моя смерть; не работает,

Спасибо за любую помощь

Author: Nolwennig, 2015-05-27

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

 3
Author: Nolwennig, 2018-04-23 08:31:25

Пройдя через это, он переопределяет IndexController.php из Mage_Contacts http://www.amitbera.com/how-to-override-a-controller-in-magento/

 0
Author: Manashvi Birla, 2015-05-27 08:44:36

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');
}
}
 0
Author: alexey boltynov, 2018-08-06 18:14:51

Прежде чем перейти к ответу, который я хочу знать, необходимо определить свой пользовательский модуль в файле 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>`

Надеюсь, это решит вашу проблему.

 -1
Author: aton1004, 2015-08-13 00:34:46