Erreur de page 404 introuvable lorsque j'essaie d'accéder au module personnalisé dans Magento 2

8

J'ai créé 2 modules personnalisés dans le dossier du fournisseur. Voici ma structure de mise en page:

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

Les deux sont activés.

Voici mon code pour le routes.xmlmodule 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>

Voici mon code dans 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>

Voici mon fichier registration.php:

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

Voici mon code de contrôleur:

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

Voici mon code de mise en page:

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

& Idem pour un autre module. J'ai déjà exécuté la setup:upgradecommande, mais j'obtiens toujours une erreur 404 lorsque j'essaie d'accéder à l'un de ces modules.

user2431224
la source
pouvez-vous montrer votre fichier de mise en page et la structure des dossiers arborescents de votre module
Bilal Usean
J'ai mis à jour ma question. Actuellement, j'ai donné la sortie; dans la méthode execute () du contrôleur, mais il ne vient même pas dans le contrôleur, je suppose.
user2431224
Dans magento2, vous pouvez créer un module à l'intérieur du app/codedossier
MaYaNk
J'ai créé à l'intérieur de l'application / du code uniquement.
user2431224
je ne comprends pas parfaitement votre structure de mise en page.
MaYaNk

Réponses:

5

Essaye ça 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">

MaYaNk
la source
toujours la même erreur.
user2431224
J'ai modifié ma réponse
MaYaNk
essayez de changer setup_version="1.0.0" pour setup_version="2.0.1"
MaYaNk
1

vous n'avez créé aucun contrôleur, il ne trouvera donc aucune URL, il vous donnera donc une erreur 404

Créer un dossier de contrôleur

Créer un dossier d' index dans le dossier Controller

Créez un fichier Index.php dans le dossier Index, ajoutez le code ci-dessous.

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



}

Vous pouvez maintenant vérifier l'URL helloworld/index/index

Prashant Valanda
la source
Bien sûr, j'ai créé un contrôleur. Je n'ai tout simplement pas collé son code en question
user2431224
J'ai ajouté le code du contrôleur dans ma question.
user2431224
Quelle URL essayez-vous?
Prashant Valanda
Maintenant, il s'agit de la méthode execute () du contrôleur, mais n'affiche qu'une page vierge. localhost / magento-demo / helloworld / hello / world
user2431224
Cela a fonctionné après avoir exécuté la commande de vidage du cache.
user2431224
0

Vous devez changer le code dans 2 fichiers,

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

Je viens de faire ces deux modifications exécutez la configuration de php bin / magento: la mise à niveau et son bon fonctionnement.

localhost / magento-demo / index.php / helloworld / bonjour / monde /

entrez la description de l'image ici

Rushvi
la source
0

J'ai exécuté le cache bin \ magento: vidage et cela a fonctionné apparemment. C'était un problème de cache.

user2431224
la source
0

Essayez simplement de déployer le contenu et de mettre à niveau la configuration

configuration de php bin / magento: mise à niveau

configuration de php bin / magento: contenu statique: déployer

amith lal
la source