Расширить контроллер ядра magento (Checkout / OnepageController) - PullRequest
3 голосов
/ 27 октября 2011

У меня проблемы при переопределении основного контроллера.Я хочу добавить новую функцию, но она работает только в том случае, если я делаю это в основном файле (code / core / checkout / controllers / onepagecontroller.php).

Я просмотрел какой-то пост, но он не работает.Вот некоторые из них:

(я не могу добавить больше ссылок, извините)

Я не знаю, что происходит ... может быть, вы можете мне помочь;).

Я использую magento 1.5 и у меня есть 3 файла:


local -> Arias -> CoreExtended -> etc -> config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <version>0.1.0</version>
        </Arias_CoreExtended>
    </modules>

    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended_Checkout</Arias_CoreExtended>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

app-> и т. д. -> модули -> Arias_CoreExtended.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <active>true</active>
            <codepool>local</codepool>
        </Arias_CoreExtended>
    </modules>
</config>

локально -> Arias -> CoreExtended -> контроллеры -> Оформить заказ -> OnepageController.php

<?php

require_once 'Mage/Checkout/controllers/OnepageController.php';

class Arias_CoreExtended_Checkout_OnepageController extends Mage_Checkout_OnepageController
{
    public function collectAction()
    {
        echo 'WTF?';
    }

    public function indexAction()
    {
        echo "This controller has been overridden.";
    }
}

Заранее спасибо за ваше время, привет.

Ответы [ 3 ]

1 голос
/ 15 августа 2012

Сначала я отразил бы ту же структуру каталогов контроллера, который вы перезаписываете, поэтому в этом случае измените: local/Arias/CoreExtended/controllers/Checkout/OnepageController.php на local/Arias/CoreExtended/controllers/OnepageController.php

Вы должны ввести строчное имя вашего пространства имен / имя модуля и вам нужно удалить_Checkout, поскольку он перезаписывает контроллеры в целом и ищет все, что существует в модуле, чтобы использовать их вместо того, чтобы не вернуться к стандарту.Правильный код будет:

<arias_coreextended before="Mage_Checkout">Arias_CoreExtended</arias_coreextended>

Я успешно использовал эту точную настройку для перезаписи контроллера Onepage!

0 голосов
/ 05 августа 2014

Ваш подход в основном правильный @satumo.Единственное, что вы должны изменить, это строка

<Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended</Arias_CoreExtended>

Таким образом, ваша полная конфигурация должна выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Arias_CoreExtended>
            <version>0.1.0</version>
        </Arias_CoreExtended>
    </modules>  

    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Arias_CoreExtended before="Mage_Checkout">Arias_CoreExtended</Arias_CoreExtended>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>
0 голосов
/ 28 октября 2011

Я бы попробовал опустить нижний регистр вашего пространства имен / имени модуля так:

<arias_coreextended before="Mage_Checkout">Arias_CoreExtended_Checkout</arias_coreextended>

...