404 Pagina non trovata errore quando provo ad accedere al modulo personalizzato in Magento 2


8

Ho creato 2 moduli personalizzati nella cartella del fornitore. Questa è la mia struttura di layout:

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

Entrambi sono abilitati.

Questo è il mio codice per il routes.xmlmodulo 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>

Questo è il mio codice 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>

Questo è il mio file registration.php:

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

Questo è il mio codice controller:

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

Questo è il mio codice di layout:

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

E lo stesso per un altro modulo. Ho già eseguito il setup:upgradecomando ma continuo a ricevere l'errore 404 quando provo ad accedere a uno di questi moduli.


puoi mostrare il tuo file di layout e la struttura delle cartelle dell'albero del tuo modulo
Bilal Usean,

Ho aggiornato la mia domanda. Attualmente ho dato l'uscita; nel metodo execute () del controller ma non arriva nemmeno nel controller immagino.
user2431224

In magento2 Puoi creare il modulo nella app/codecartella Inside
MaYaNk il

Ho creato solo all'interno di app / codice.
user2431224

non riesco a comprendere perfettamente la struttura del layout.
MaYaNk,

Risposte:


5

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


sempre lo stesso errore.
user2431224

Ho modificato la mia risposta
MaYaNk il

prova a cambiare setup_version="1.0.0" in setup_version="2.0.1"
MaYaNk il


1

non hai creato alcun controller, quindi non troverà alcun url e ti darà 404 errori

Crea cartella controller

Crea cartella Index nella cartella Controller

Crea il file Index.php nella cartella Index e aggiungi il codice qui sotto.

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



}

Ora puoi controllare l'URL helloworld/index/index


Naturalmente ho creato il controller. Non ho incollato il codice in questione
user2431224

Ho aggiunto il codice controller nella mia domanda.
user2431224

Quale url stai provando?
Prashant Valanda,

Ora arriva al metodo execute () del controller ma visualizza solo una pagina vuota. localhost / magento-demo / helloworld / hello / world
user2431224

Ha funzionato dopo che ho eseguito il comando flush della cache.
user2431224

0

Devi cambiare il codice in 2 file,

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

Ho appena apportato queste due modifiche per eseguire php bin / magento setup: upgrade e funziona bene.

localhost / Magento-demo / index.php / helloworld / ciao / mondo /

inserisci qui la descrizione dell'immagine


0

Ho eseguito bin \ magento cache: flush & Funzionava apparentemente. Era un problema di cache.


0

Basta provare a distribuire il contenuto e aggiornare l'installazione

php bin / magento setup: upgrade

php bin / magento setup: static-content: deploy

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.