Magento - URL-адрес администратора показывает интерфейс 404 (модуль Csutom)

Я создаю модуль Magento, чтобы можно было сообщать о товарах. Я сделал переднюю часть хорошо, и все там работает.

Я пришел, чтобы создать админку для модуля, и у меня много проблем. Когда я нажимаю пункт меню для своего модуля (Каталог> Сообщенные продукты), он отображает интерфейс веб-сайта. (URL-адрес выглядит как "domain.com/index.php/admin/reported_products/adminhtml/key/76f4724a69.../"). Это отображает страницу 404.

Я пробовал много вариантов действия пункта меню, но ничего не помогло. Я также изменил front_name под узлом admin, но ничего: /

Я постараюсь представить файлы в хорошем порядке ...

приложение / код / ​​локальные / Tbe / Report / etc / config.xml

<modules>
    <Tbe_Report>
        <version>0.1.0</version>
    </Tbe_Report>
</modules>

<global>

    <helpers>
        <report>
            <class>Tbe_Report_Helper</class>
        </report>
    </helpers>

    <blocks>
        <report>
            <class>Tbe_Report_Block</class>
        </report>
    </blocks>


    <models>

        <report>
            <class>Tbe_Report_Model</class>
            <resourceModel>report_mysql4</resourceModel>
        </report>

        <report_mysql4>
            <class>Tbe_Report_Model_Mysql4</class>
            <entities>
                <report>
                    <table>report</table>
                </report>
            </entities>
        </report_mysql4>

    </models>


    <resources>

        <report_setup>
            <setup>
                <module>Tbe_Report</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </report_setup>

        <report_write>
            <connection>
                <use>core_write</use>
            </connection>
        </report_write>

        <report_read>
            <connection>
                <use>core_read</use>
            </connection>
        </report_read>

    </resources>

</global>


<frontend>

    <routers>
        <report>
            <use>standard</use>
            <args>
                <module>Tbe_Report</module>
                <frontName>report</frontName>
            </args>
        </report>
    </routers>

    <layout>
        <updates>
            <report>
                <file>report.xml</file>
            </report>
        </updates>
    </layout>  

</frontend>



<adminhtml>

    <routers>
        <report>
            <use>admin</use>
            <args>
                <module>Tbe_Report</module>
                <frontName>reported_products</frontName>
            </args>
        </report>
    </routers>

   <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Tbe_Report after="Mage_Adminhtml">Tbe_Report</Tbe_Report>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

</adminhtml>

app/code/local/Tbe/Report/etc/adminhtml.xml

<?xml version="1.0"?>
    <config>
        <menu>
            <catalog translate="title" module="report">
                <title>Catalog</title>
                <sort_order>30</sort_order>
                <children>
                    <report>
                        <title>Reported Products</title>
                        <sort_order>100</sort_order>
                        <action>adminhtml/reported_products/reported/</action>
                    </report>
                </children>
            </catalog>
        </menu>

        <acl>
            <resources>
                <admin>
                    <children>                
                        <tbe translate="title" module="report">
                            <title>View Reported Products</title>
                            <sort_order>1</sort_order>
                        </tbe>
                    </children>
                </admin>
            </resources>
        </acl>

    </config>

приложение / код / ​​ядро ​​/ локальные / Tbe / Отчет / контроллеры / ReportedController.php

class Tbe_Report_ReportedController extends Mage_Adminhtml_Controller_Action {

    public function indexAction() {

        $this->loadLayout();
        $this->renderLayout();

    }

}

Да, у меня есть пустой Data.php в Tbe / Report / Helpers /

Любая помощь приветствуется.

ОБНОВЛЕНИЕ

Мне удалось заставить его работать (несколько). Единственная проблема сейчас - это узел <action> в adminhtml.xml.

Если я НЕ добавляю к действию adminhtml, страница отображается, показывая верхний и нижний колонтитулы администратора (я еще не создавал никакого контента). Однако URL-адрес не содержит / admin. Вместо этого URL-адрес выглядит следующим образом: http://domain.com/index.php/reported_products/reported/key/88bf4.../ ".

Если я добавлю к действию adminhtml, он отобразит верхний и нижний колонтитулы интерфейса, но перейдет к правильному URL-адресу "http://domain.com/index.php/admin/reported_products/reported/key/88bf4.../".

Я бы очень хотел, чтобы URL-адрес был с / admin. Вот мой обновленный код:

приложение / код / ​​локальные / Tbe / Report / etc / config.xml

<?xml version="1.0"?>
<config>

...

<!-- NOTHING HAS CHANGED HERE -->
<!-- I HAVE GOTTEN RID OF THE <adminhtml> NODE -->


<frontend>

    <routers>
        <report>
            <use>standard</use>
            <args>
                <module>Tbe_Report</module>
                <frontName>report</frontName>
            </args>
        </report>
    </routers>

    <layout>
        <updates>
            <report>
                <file>report.xml</file>
            </report>
        </updates>
    </layout>  

</frontend>


<admin>

    <routers>
        <tbe_report>
            <use>admin</use>
            <args>
                <module>Tbe_Report</module>
                <frontName>reported_products</frontName>
                <modules>
                    <Tbe_Report after="Mage_Adminhtml">Tbe_Report_Reported</Tbe_Report>
                </modules>
            </args>
        </tbe_report>
    </routers>

</admin>

</config>

приложение / код / ​​локальные / Tbe / Report / etc / adminhtml.xml

<?xml version="1.0"?>
<config>
<menu>
    <catalog translate="title" module="report">
        <title>Catalog</title>
        <sort_order>30</sort_order>
        <children>
            <report>
                <title>Reported Products</title>
                <sort_order>100</sort_order>
                <action>adminhtml/reported_products/reported/index</action>
            </report>
        </children>
    </catalog>
</menu>

...

</config>

приложение / код / ​​локальный / Tbe / Report / controllers / ReportedController.php

class Tbe_Report_ReportedController extends Mage_Adminhtml_Controller_Action {

    public function indexAction() {
        $this->loadLayout();
        $this->renderLayout();
    }
}

person Josh-Mason    schedule 14.07.2015    source источник


Ответы (2)


Поскольку ваш контроллер находится в /Tbe/Report/controllers/Adminhtml/IndexController.php, а не в /Tbe/Report/controllers/IndexController.php, вам необходимо использовать <Tbe_Report after="Mage_Adminhtml">Tbe_Report_Adminhtml<...

Пытаться

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <Tbe_Report after="Mage_Adminhtml">Tbe_Report_Adminhtml</Tbe_Report>
                </modules>
            </args>
        </adminhtml>

Предполагая следующую структуру папок.

app/code/local/Tbe/Report/controllers/Adminhtml/ReportedController.php

Меню

<action>adminhtml/reported/index/</action>
person Renon Stewart    schedule 14.07.2015
comment
Теперь я переместил файл Adminhtml / IndexController.php в ReportedController.php, чтобы избежать путаницы. Нужно ли мне изменить его на Tbe_Report_Reported? - person Josh-Mason; 14.07.2015
comment
Если он находится в папке корневых контроллеров, тогда это должно быть просто Tbe_Report. - person Renon Stewart; 14.07.2015
comment
Также действие в должно начинаться с adminhtml, поскольку вы используете Mage_Adminhtml. Взгляните на stackoverflow.com/a/16510952/1191288 - person Renon Stewart; 14.07.2015
comment
Мне не очень повезло с этой ссылкой. Он не очень хорошо это объяснил. Имеет ли значение, что мой URL не содержит / admin? - person Josh-Mason; 14.07.2015
comment
Есть два способа создать модуль администратора в magento, и вы, кажется, смешиваете их. Единственные изменения, которые вам следует сделать, это те, которые я перечислил выше, и они должны работать. - person Renon Stewart; 14.07.2015
comment
Можете ли вы отменить все изменения, кроме того, что я перечислил выше, и сообщить мне, что произойдет? - person Renon Stewart; 14.07.2015
comment
Конечно, сейчас я не могу это сделать. Я дам тебе знать, как у меня дела завтра. Спасибо :) Следует ли мне повторить свои изменения согласно моему первоначальному сообщению или моему обновлению? - person Josh-Mason; 14.07.2015

Сделайте так, чтобы ссылка в меню выглядела так:

<action>reported_products/adminhtml/index</action>

или еще лучше, объявите свой маршрутизатор администратора как RS, описанный в другом ответе, и в этом случае вам нужно переместить контроллер из Tbe/Report/controllers/Adminhtml/IndexController.php на Tbe/Report/controllers/Adminhtml/Reported/IndexController.php (также измените имя класса соответственно), и вы можете иметь ссылку на свое меню следующим образом:

<action>adminhtml/reported/index</action>
person Marius    schedule 14.07.2015
comment
Ни одно из ваших предложений не сработало. Без adminhtml в начале действия URL-адрес не будет содержать URL-адрес администратора. Примечание. Я изменил расположение и имя контроллеров / Adminhtml / IndexController.php на controllers / ReportedController.php. - person Josh-Mason; 14.07.2015