【问题标题】:Magento custom module admin url returns to frontend and 404 error pageMagento 自定义模块管理 url 返回前端和 404 错误页面
【发布时间】:2014-05-22 09:12:08
【问题描述】:

我的自定义模块管理网址中出现 404 错误页面。

我的管理员结束网址如 magento1.9/index.php/admin/fortuneform/index/key/43a83958a538fd0a628c3236d4d059f7/

点击此网址后,它会转到具有相同网址的前端并显示 404 错误页面。

config.xml 文件:

<?xml version="1.0"?>
<config>
    <modules>
        <Fortunesoft_Fortuneform>
            <version>0.1.0</version>
        </Fortunesoft_Fortuneform>
    </modules>
    <frontend>
        <routers>
            <fortuneform>
                <use>standard</use>
                <args>
                    <module>Fortunesoft_Fortuneform</module>
                    <frontName>fortuneform</frontName>
                </args>
            </fortuneform>
        </routers>
        <layout>
            <updates>
                <fortuneform>
                    <file>fortuneform.xml</file>
                </fortuneform>
            </updates>
        </layout>
    </frontend>
    <admin>
    <routers>
        <fortuneform>
            <use>admin</use>
            <args>
                <modules>
                    <fortuneform before="Mage_Adminhtml">Fortunesoft_Fortuneform_Adminhtml</fortuneform>
                </modules>                  
            </args>
        </fortuneform>
    </routers>
</admin>
<global>
        <models>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Model</class>
                <resourceModel>fortuneform_mysql4</resourceModel>
            </fortuneform>
            <fortuneform_mysql4>
                <class>Fortunesoft_Fortuneform_Model_Mysql4</class>
                <entities>
                    <fortuneform>
                        <table>fortuneform</table>
                    </fortuneform>
                </entities>
            </fortuneform_mysql4>
        </models>
        <resources>
            <fortuneform_setup>
                <setup>
                    <module>Fortunesoft_Fortuneform</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </fortuneform_setup>
            <fortuneform_write>
                <connection>
                    <use>core_write</use>
                </connection>    
            </fortuneform_write>
            <fortuneform_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </fortuneform_read>
        </resources>
        <blocks>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Block</class>
            </fortuneform>
        </blocks>
        <helpers>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Helper</class>
            </fortuneform>
        </helpers>
    </global>
</config>   

adminhtml.xml 文件:

<?xml version="1.0"?>
<config>
    <menu><fortuneform module="fortuneform">
            <title>Fortuneform</title>
            <sort_order>71</sort_order>
            <children>
                <items module="fortuneform">
                    <title>Manage Items</title>
                    <sort_order>0</sort_order>
                  <action>adminhtml/fortuneform</action>
                </items>
            </children>
        </fortuneform></menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <fortuneform>
                        <title>Fortuneform Module</title>
                        <sort_order>200</sort_order>
                    </fortuneform>
                </children>
            </admin>
        </resources>   
    </acl>
    <layout>
        <updates>
            <fortuneform>
                <file>fortuneform.xml</file>
            </fortuneform>
        </updates>
    </layout>

adminhtml/default/default/layout/fortuneform.xml

<?xml version="1.0"?>
 <layout version="0.1.0">
    <fortuneform_adminhtml_fortuneform_index>
        <reference name="content">
            <block type="fortuneform/adminhtml_fortuneform" name="fortuneform" />
        </reference>
    </fortuneform_adminhtml_fortuneform_index>
 </layout>

Controllers/Adminhtml/FortuneformController.php 文件:

class Fortunesoft_Fortuneform_Adminhtml_FortuneformController extends  Mage_Adminhtml_Controller_Action
{

    protected function _initAction()
    {
        $this->loadLayout()
            ->_setActiveMenu('fortuneform/items')
            ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
        return $this;
    }   

    public function indexAction() {
        $this->_initAction();       
        $this->_addContent($this->getLayout()->createBlock('fortuneform/adminhtml_fortuneform'));
        $this->renderLayout();
    } }

请帮帮我....

【问题讨论】:

  • 请使用magento1.9/admin/index.php/fortuneform/index/
  • 我正在开发基于link这个教程的模块。它没有任何
  • 你已经创建 app/etc/modules/Fortunesoft_Fortuneform.xml 了吗?
  • 首先请检查您的模块是否会显示在管理员中。系统>确认>高级>以此名称为高级 Fortunesoft_Fortuneform
  • truelocal

标签: php magento


【解决方案1】:

您的 adminhtml.xml 应该如下所示。它的动作定义为

<action>adminhtml/fortuneform</action>

但应该是&lt;action&gt;fortuneform/adminhtml_fortuneform&lt;/action&gt;

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

    <menu>
    <fortuneform module="fortuneform">
            <title>Fortuneform</title>
            <sort_order>71</sort_order>
            <children>
                <items module="fortuneform">
                    <title>Manage Items</title>
                    <sort_order>0</sort_order>
                  <action>fortuneform/adminhtml_fortuneform</action> 
                </items>
            </children>
        </fortuneform>
    </menu>

    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <fortuneform>
                        <title>Fortuneform Module</title>
                        <sort_order>200</sort_order>
                    </fortuneform>
                </children>
            </admin>
        </resources>   
    </acl>
    <layout>
        <updates>
            <fortuneform>
                <file>fortuneform.xml</file>
            </fortuneform>
        </updates>
    </layout>

</config>

用下面的代码替换 config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Fortunesoft_Fortuneform>
            <version>0.1.0</version>
        </Fortunesoft_Fortuneform>
    </modules>
    <frontend>
        <routers>
            <fortuneform>
                <use>standard</use>
                <args>
                    <module>Fortunesoft_Fortuneform</module>
                    <frontName>fortuneform</frontName>
                </args>
            </fortuneform>
        </routers>
        <layout>
            <updates>
                <fortuneform>
                    <file>fortuneform.xml</file>
                </fortuneform>
            </updates>
        </layout>
    </frontend>


        <admin>
        <routers>
            <fortuneform>
                <use>admin</use>
                <args>
            <fortuneform before="Mage_Adminhtml">Fortunesoft_Fortuneform_Adminhtml</fortuneform>
                    <frontName>fortuneform</frontName>
                </args>
            </fortuneform>
        </routers>
    </admin>


<global>
        <models>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Model</class>
                <resourceModel>fortuneform_mysql4</resourceModel>
            </fortuneform>
            <fortuneform_mysql4>
                <class>Fortunesoft_Fortuneform_Model_Mysql4</class>
                <entities>
                    <fortuneform>
                        <table>fortuneform</table>
                    </fortuneform>
                </entities>
            </fortuneform_mysql4>
        </models>
        <resources>
            <fortuneform_setup>
                <setup>
                    <module>Fortunesoft_Fortuneform</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </fortuneform_setup>
            <fortuneform_write>
                <connection>
                    <use>core_write</use>
                </connection>    
            </fortuneform_write>
            <fortuneform_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </fortuneform_read>
        </resources>
        <blocks>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Block</class>
            </fortuneform>
        </blocks>
        <helpers>
            <fortuneform>
                <class>Fortunesoft_Fortuneform_Helper</class>
            </fortuneform>
        </helpers>
    </global>
</config>

您的控制器文件夹名称也应该是 controller 即小写

清空缓存试试

【讨论】:

  • 删除了缓存文件夹,清除了管理缓存,刷新了缓存存储并清除了我的浏览器历史记录和缓存......但仍然没有运气:-(
  • 是的,你是对的,当我将 Contollers 更改为控制器时,它的工作原理。但是我的管理端出现了一个空白页。即)页眉和页脚还可以,但内容部分变得空白/空。
  • 您可以按照上面的说明更改您的 adminhtml.xml 和 config.xml,这应该很好。
  • 我尝试了一切,我的链接看起来像 index.php/fortuneform/adminhtml_fortuneform/index/key/dfa53582fc64ac52bd084130a5fd4ee8/ 但它在内容区域显示为空白,我需要更改任何其他文件吗?跨度>
  • 在您的 indexAction 中,回显退出。如果调用该函数,则说明您走在正确的道路上。
【解决方案2】:

你的控制器路径应该是

controllers/Adminhtml/FortuneformController.php(控制器中的小写 c)

不是

控制器/Adminhtml/FortuneformController.php

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多