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.


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


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


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


0

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.