Доброго времени суток!
Magento начал использовать не так давно, потому застопорился на наверное не сильно сложном вопросом для бывалых, однако ответ на него найти не могу нигде, потому прошу о помощи.
Суть задания - необходимо переопределить один из методов контроллера Core/Mage/Customer/controllers/AccountController.php и добавить новый метод. Так как редактировать данный контроллер является неправильно - его необходимо переопределить. Согласно требований проекта переопределенный контроллер должен находиться по адресу local/New/Mage/Customer/controllers/AccountController.php Для этого создал файлы конфигов, но адреса customer/account/test, customer/account/ajax не отзываются, и customer/account/login не переопределяется. Прошу помощи в данной реализации.
Коды:
app/app/etc/modules/New_Mage_Customer.xml
<?xml version="1.0"?> <config> <modules> <New_Mage_Customer> <active>true</active> <codePool>local</codePool> </New_Mage_Customer> </modules> </config>
app/code/local/New/Mage/Customer/etc/config.xml
<?xml version="1.0"?>
<config>
    <modules>
        <New_Mage_Customer>
            <version>0.0.1</version>
        </New_Mage_Customer>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <new_customer before="Mage_Customer">New_Mage_Customer</new_customer>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>app/code/local/New/Mage/Customer/controllers/AccountController.php
<?php
/**
 * Customer account controller
 */
require_once 'Mage/Customer/controllers/AccountController.php';
class New_Mage_Customer_AccountController extends Mage_Customer_AccountController {
    public function ajaxAction() {
        echo 'ajax!!';
    }
    public function testAction() {
        echo 'test222';
    }
    public function loginAction() {
        echo 'index';
    }
}
Solved! Go to Solution.
Попробуйте уменьшить вложенность папок своего модуля, должно помочь.
Т.е. как то так:
app/code/local/PavelMorgun/Customer/etc/config.xml
<?xml version="1.0"?>
<config>
    <modules>
        <PavelMorgun_Customer>
            <version>0.1.0</version>
        </PavelMorgun_Customer>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <pm_customer before="Mage_Customer">PavelMorgun_Customer</pm_customer>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>app/app/etc/modules/PavelMorgun_Customer.xml:
<?xml version="1.0"?>
<config>
     <modules>
          <PavelMorgun_Customer>
               <active>true</active>
               <codePool>local</codePool>
          </PavelMorgun_Customer>
      </modules>
</config>app/code/local/PavelMorgun/Customer/controllers/AccountController.php
<?php
require_once(Mage::getModuleDir('controllers','Mage_Customer').DS.'AccountController.php');
class PavelMorgun_Customer_AccountController extends Mage_Customer_AccountController
{
    /**
     * Customer login form page
     */
    public function loginAction()
    {
        if ($this->_getSession()->isLoggedIn()) {
            $this->_redirect('*/*/');
            return;
        }
        $this->getResponse()->setHeader('Login-Required', 'true');
        $this->loadLayout();
        $this->_initLayoutMessages('customer/session');
        $this->_initLayoutMessages('catalog/session');
        $this->renderLayout();
    }
}
					
				
			
			
				
			
			
				
			
			
				
			
			
			
			
			
		Так и сделал. Спасибо. Работает.
Просто думал может не хватает способностей реализовать данную процедуру с таким количеством вложений
Попробуйте уменьшить вложенность папок своего модуля, должно помочь.
Т.е. как то так:
app/code/local/PavelMorgun/Customer/etc/config.xml
<?xml version="1.0"?>
<config>
    <modules>
        <PavelMorgun_Customer>
            <version>0.1.0</version>
        </PavelMorgun_Customer>
    </modules>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <pm_customer before="Mage_Customer">PavelMorgun_Customer</pm_customer>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>app/app/etc/modules/PavelMorgun_Customer.xml:
<?xml version="1.0"?>
<config>
     <modules>
          <PavelMorgun_Customer>
               <active>true</active>
               <codePool>local</codePool>
          </PavelMorgun_Customer>
      </modules>
</config>app/code/local/PavelMorgun/Customer/controllers/AccountController.php
<?php
require_once(Mage::getModuleDir('controllers','Mage_Customer').DS.'AccountController.php');
class PavelMorgun_Customer_AccountController extends Mage_Customer_AccountController
{
    /**
     * Customer login form page
     */
    public function loginAction()
    {
        if ($this->_getSession()->isLoggedIn()) {
            $this->_redirect('*/*/');
            return;
        }
        $this->getResponse()->setHeader('Login-Required', 'true');
        $this->loadLayout();
        $this->_initLayoutMessages('customer/session');
        $this->_initLayoutMessages('catalog/session');
        $this->renderLayout();
    }
}