Magento 2のカスタムモジュールにアクセスしようとすると404ページが見つかりませんというエラー


8

ベンダーフォルダー内に2つのカスタムモジュールを作成しました。これは私のレイアウト構造です。

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

どちらも有効です。

これはroutes.xmlHelloWorldモジュールの私のコードです。

 <?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エラーが発生します。


モジュールのレイアウトファイルとツリーフォルダー構造を表示できますか
Bilal Usean

私は質問を更新しました。現在、私は終了しました。コントローラのexecute()メソッドではありますが、コントローラには含まれていません
user2431224 16

magento2では、app/codeフォルダ内にモジュールを作成できます
MaYaNk

app / code内でのみ作成しました。
user2431224 2016

私はあなたのレイアウト構造を完全に理解できません。
MaYaNk

回答:


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 2016

変更setup_version="1.0.0" して みてくださいsetup_version="2.0.1"
MaYaNk 2016


1

コントローラーを作成していないため、URLが見つからないため、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;
    }   



}

これで、URLを確認できます helloworld/index/index


もちろん、コントローラーを作成しました。問題のコードを貼り付けなかっただけです
user2431224

質問にコントローラーコードを追加しました。
user2431224

どのURLを試していますか?
Prashant Valanda 16

今度はコントローラのexecute()メソッドになりますが、空白のページしか表示されません。localhost / magento-demo / helloworld / hello / world
user2431224

キャッシュフラッシュコマンドを実行した後に機能しました。
user2431224

0

2つのファイルのコードを変更する必要があります。

app / code / Company / 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>

私はこの2つの変更を実行してphp bin / magento setup:upgradeを実行し、正常に動作しました。

localhost / magento-demo / index.php / helloworld / hello / world /

ここに画像の説明を入力してください


0

私はbin \ magento cache:flushを実行しました&明らかに動作しました。これはキャッシュの問題でした。


0

コンテンツをデプロイしてセットアップをアップグレードしてみてください

php bin / magento setup:upgrade

php bin / magento setup:static-content:deploy

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.