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>