Адресация во frontend и backend

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

30.07.2011 00:09

Работали в админке, в config.xml настроили роуты
    <admin>
        <routers>
            <mymodule>
                <use>admin</use>
                <args>
                    <module>Mynamespace_Mymodule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>
    </admin>

Все было хорошо, страницы открываются корректно, т.е. для /mymodule/manager/index работает контроллер manager и действие index
Понадобилось работать во frontend, был создан новый контроллер IndexController, в config.xml добавлен код
<frontend>
        <routers>
            <mymodule>
                <use>standart</use>
                <args>
                    <module>Mynamespace_Mymodule</module>
                    <frontName>frontmymodule</frontName>
                </args>
            </mymodule>
        </routers>
</frontend>
однако по линку /frontmymodule/index/index вылетает ошибка 404. Что сделано неверно?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

30.07.2011 10:40

Содержимое тега use написано с орфографической ошибкой.

#3 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

30.07.2011 10:53

Как только начинал писать модуль,все было понятно и получалось. Были написаны роуты для фронтэнда где просто выводилось "Hello, world.". Затем наал работать с админкой, все хорошо. Теперь, когда нужно добавить роут для фронтэнда, система все равно бросает в админку, т.е. при файле config.xml
<?xml version="1.0"?>
<config>    
    <modules>
        <Mynamespace_Mymodule>
            <version>0.1.0</version>
        </Mynamespace_Mymodule>
    </modules>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>Mynamespace_Mymodule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>  
    </frontend>
</config>

и при IndexController
<?php 
class Mynamespace_Mymodule_IndexController extends Mage_Adminhtml_Controller_Action {        

    public function indexAction() {

        echo 'Hello, World!';

    }


} 

вводя в адресной строке /mymodule перебрасывает на страницу входа в админку, и если ввести данные и войти то увидим долгожданное "Hello, World!". Причем если будучи авторизованным ввести снова /mymodule, то перебросит на главную админки. Не могу понять почему так происходит. Кэш на всякий случай почистил, хотя он и отключен, все равно.

#4 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

30.07.2011 11:28

Все невнимательность. После работы в backend часто думаешь что и во frontend аналогично, и многие вещи просто копируешь. В данном случае, например, я скопировал класс контроллера, но для работы в frontend нужно наследовать не от Mage_Adminhtml_Controller_Action, а от Mage_Core_Controller_Front_Action

Поделиться темой: