尝试访问Magento 2中的“自定义”模块时出现“ 404页面未找到”错误


8

我在供应商文件夹中创建了2个自定义模块。这是我的布局结构:

-app
  -code
    -Company
      -Blog
      -HelloWorld
        -Controller
          -Hello
            -World.php
        -registration.php
        -etc
          -module.xml
          -frontend
            -routes.xml

两者都启用。

这是我routes.xml的HelloWorld模块代码:

 <?xml version="1.0"?>
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
  <router id="standard">
    <route id="helloworld" frontName="helloworld">
        <module name="Company_HelloWorld"/>
    </route>
 </router>
</config>

这是我的代码module.xml

 <?xml version="1.0"?>
   <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Company_HelloWorld" setup_version="1.0.0">
   </module>
   </config>

这是我的registration.php文件:

<?php 
   \Magento\Framework\Component\ComponentRegistrar::register(
   \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Company_HelloWorld',
    __DIR__
);

这是我的控制器代码:

 <?php
 namespace Company\HelloWorld\Controller\Hello;


 class World extends \Magento\Framework\App\Action\Action
 {
   public function __construct(
    \Magento\Framework\App\Action\Context $context)
  {
      return parent::__construct($context);
  }

  public function execute()
  {
    echo 'Hello World';
    exit;
  } 
} 

这是我的布局代码:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>

</body>
</page>

&对于另一个模块相同。我已经执行了setup:upgrade命令,但是尝试访问这些模块中的任何一个模块时,仍然出现404错误。


您可以显示模块的布局文件和树文件夹结构
吗?

我已经更新了我的问题。目前我已经退出;在控制器的execute()方法中,但我猜它甚至没有出现在控制器中。
user2431224 '16

在magento2中,您可以创建模块Inside app/code文件夹
MaYaNk

我仅在app / code内部创建。
user2431224 '16

我不能完全理解您的布局结构。
MaYaNk '16

Answers:


5

尝试这个 module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Company_HelloWorld" setup_version="1.0.0" active="true">


还是一样的错误。
user2431224 '16

我编辑了答案
MaYaNk '16

尝试更改setup_version="1.0.0"setup_version="2.0.1"
MaYaNk '16


1

您尚未创建任何控制器,因此它将找不到任何网址,因此会给您404错误

创建控制器文件夹

在Controller文件夹内创建Index文件夹

在Index文件夹内创建Index.php文件,在其中添加以下代码。

<?php

namespace  Company\HelloWorld\Controller\Index;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\Action\Context;
class Index extends \Magento\Framework\App\Action\Action
{
    protected $resultPageFactory;
     public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    ) {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }
    /**
     * Index action
     *
     * @return $this
     */
    public function execute()
    {
        echo "helloworld";exit;
    }   



}

现在您可以检查网址 helloworld/index/index


当然,我已经创建了控制器。我只是没有粘贴有问题的代码
user2431224 2016年

我在问题中添加了控制器代码。
user2431224 '16

您正在尝试哪个网址?
Prashant Valanda '16

现在谈到控制器的execute()方法,但仅显示空白页。localhost / magento-demo / helloworld / hello / world
user2431224 '16

我执行了缓存刷新命令后,它起作用了。
user2431224 '16

0

您需要在2个文件中更改代码,

应用程序/代码/公司/HelloWorld/etc/frontend/routes.xml

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
  <router id="standard">
    <route id="company_helloworld" frontName="helloworld">
        <module name="Company_HelloWorld"/>
    </route>
 </router>
</config>

app / code / Company / HelloWorld / etc / module.xml

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Company_HelloWorld" setup_version="2.1.1">
   </module>
   </config>

我刚刚做了这两个更改,运行php bin / magento setup:upgrade及其工作正常。

本地主机/magento-demo/index.php/helloworld/hello/world/

在此处输入图片说明


0

我执行bin \ magento cache:flush&显然有效,这是一个缓存问题。


0

只需尝试部署内容并升级设置

php bin / magento设置:升级

php bin / magento设置:静态内容:部署

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.