cancel
Showing results for 
Search instead for 
Did you mean: 

Переопределение контроллера AccountController

SOLVED

Переопределение контроллера AccountController

Доброго времени суток!

 

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';
    }

}

 

2 ACCEPTED SOLUTIONS

Accepted Solutions

Re: Переопределение контроллера AccountController

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

Т.е. как то так:

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();
    }
}

View solution in original post

Re: Переопределение контроллера AccountController

Так и сделал. Спасибо. Работает.

Просто думал может не хватает способностей реализовать данную процедуру с таким количеством вложений 

View solution in original post

2 REPLIES 2

Re: Переопределение контроллера AccountController

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

Т.е. как то так:

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();
    }
}

Re: Переопределение контроллера AccountController

Так и сделал. Спасибо. Работает.

Просто думал может не хватает способностей реализовать данную процедуру с таким количеством вложений