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.