404 Seite nicht gefunden Fehler, wenn ich versuche, auf das benutzerdefinierte Modul in Magento 2 zuzugreifen


8

Ich habe 2 benutzerdefinierte Module im Herstellerordner erstellt. Dies ist meine Layoutstruktur:

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

Beide sind aktiviert.

Dies ist mein Code routes.xmlfür das HelloWorld-Modul:

 <?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>

Dies ist mein Code in 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>

Dies ist meine Registrierung.php-Datei:

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

Dies ist mein Controller-Code:

 <?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;
  } 
} 

Das ist mein Layoutcode:

<?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>

& Gleiches gilt für ein anderes Modul. Ich habe den setup:upgradeBefehl bereits ausgeführt, erhalte jedoch immer noch den Fehler 404, wenn ich versuche, auf eines dieser Module zuzugreifen.



Ich habe meine Frage aktualisiert. Derzeit habe ich exit gegeben; in execute () Methode des Controllers, aber es kommt nicht einmal in Controller, denke ich.
user2431224

In magento2 können Sie Modul Innerhalb app/codeOrdner erstellen
MaYaNk

Ich habe nur innerhalb der App / des Codes erstellt.
user2431224

Ich kann Ihre Layoutstruktur nicht perfekt verstehen.
MaYaNk

Antworten:


5

Versuche dies 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">


immer noch der gleiche Fehler.
user2431224

Ich habe meine Antwort bearbeitet
MaYaNk

versuchen , sich ändern setup_version="1.0.0" zu setup_version="2.0.1"
MAYANK


1

Sie haben keinen Controller erstellt, sodass keine URL gefunden wird und Sie einen 404-Fehler erhalten

Controller- Ordner erstellen

Erstellen Sie Index - Ordner im Controller - Ordner

Erstellen Sie die Datei Index.php im Ordner Index und fügen Sie den folgenden Code hinzu.

<?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;
    }   



}

Jetzt können Sie die URL überprüfen helloworld/index/index


Natürlich habe ich einen Controller erstellt. Ich habe den fraglichen Code einfach nicht
eingefügt

Ich habe in meiner Frage Controller-Code hinzugefügt.
user2431224

Welche URL versuchst du?
Prashant Valanda

Jetzt kommt es zur execute () -Methode des Controllers, zeigt aber nur eine leere Seite an. localhost / magento-demo / helloworld / hallo / world
user2431224

Es hat funktioniert, nachdem ich den Cache-Flush-Befehl ausgeführt habe.
user2431224

0

Sie müssen den Code in 2 Dateien ändern.

app / code / Company / HelloWorld / etc / frontend / route.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>

Ich habe gerade diese zwei Änderungen vorgenommen, um PHP Bin / Magento Setup auszuführen: Upgrade und es funktioniert gut.

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

Geben Sie hier die Bildbeschreibung ein


0

Ich habe bin \ magento Cache ausgeführt: Flush & Es hat anscheinend funktioniert. Es war ein Cache-Problem.


0

Versuchen Sie einfach, den Inhalt bereitzustellen und das Setup zu aktualisieren

PHP Bin / Magento Setup: Upgrade

PHP Bin / Magento Setup: Statischer Inhalt: Bereitstellen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.