Magento, как переопределить контроллер сообщества в локальном коде

Я бы хотел переопределить AW Blog BlogController из сообщества в мою папку local_MyCompany, чтобы изменить метод saveAction. Может кто-то помочь мне, пожалуйста.

Вот путь для класса контроллера сообщества:

app\code\community\AW\Blog\controllers\Manage\BlogController.php

И вот мой путь local_Business:

require_once 'AW/Blog/controllers/Manage/BlogController.php';

class MyCompany_MyAwBlog_Manage_BlogController extends AW_Blog_Manage_BlogController
{
    public function editAction()
    {
        echo 'hello'; die();
    }

}

Вот мой файл config.xml:

<config>
<modules>
    <MyCompany_MyAwBlog>
        <version>0.1.0</version>
    </MyCompany_MyAwBlog>
</modules>
<frontend>
    <routers>
        <myawblog>
            <use>standard</use>
            <args>
                <module>MyCompany_MyAwBlog</module>
                <frontName>myawblog</frontName>
            </args>
        </myawblog>
    </routers>
</frontend>
<global>
    <rewrite>        
        <mycompany_myawblog_blog_manage_blogcontroller>
            <from><![CDATA[#^/blog/manage_blog/#]]></from>
            <to>/myawblog/blog_manage_blog/</to>
        </mycompany_myawblog_blog_manage_blogcontroller>
    </rewrite>
</global>
<admin>
    <routers>
        <myawblog>
            <use>admin</use>
            <args>
                <module>MyCompany_MyAwBlog</module>
                <frontName>admin_myawblog</frontName>
            </args>
        </myawblog>
    </routers>
</admin>

2 ответа

Попробуй это

1) файл контроллера

require_once 'AW/Blog/controllers/Manage/BlogController.php';

class MyCompany_MyAwBlog_Manage_BlogController extends AW_Blog_Manage_BlogController
{
    public function editAction()
    {
        echo 'hello'; die();
    }

}

2) Config.xml

<frontend>
    <routers>
        <myawblog>
            <use>standard</use>
            <args>
                <modules>
                    <MyCompany_MyAwBlog before="AW_Blog">MyCompany_MyAwBlog</MyCompany_MyAwBlog>
                </modules>
            </args>
        </myawblog>
    </routers>
</frontend> 

Обновление для контроллера администратора:

Попробуйте следующее -

1) файл контроллера

<?php
require_once 'AW/Blog/controllers/Manage/BlogController.php';

class MyCompany_MyAwBlog_Manage_BlogController extends AW_Blog_Manage_BlogController
{
    public function editAction()
    {
        echo 'Hi'; 
        die();
    }
}

2) config.xml

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <myawblog before="AW_Blog">MyCompany_MyAwBlog_Adminhtml</myawblog>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

НОТА:

1) require_once 'AW/Blog/controllers/Manage/BlogController.php';

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

2) class MyCompany_MyAwBlog_Manage_BlogController extends AW_Blog_Manage_BlogController

Ссылка URL SUPEE-6788 ТЕХНИЧЕСКИЕ ДАННЫЕ

Первоначальный ответ, предоставленный Muk, не работает для меня (переопределение контроллера внешнего интерфейса).

Но с заменой узла сразу после от к он работает.

Потому что это переписанный маршрут. Но цель здесь - поймать базовый маршрут, значит.

Итак, последний файл config.xml, который работал для меня:

<frontend>
<routers>
    <awblog>
        <use>standard</use>
        <args>
            <modules>
                <MyCompany_MyAwBlog before="AW_Blog">MyCompany_MyAwBlog</MyCompany_MyAwBlog>
            </modules>
        </args>
    </awblog>
</routers>

Другие вопросы по тегам