Error de página 404 no encontrada cuando intento acceder al módulo personalizado en Magento 2


8

He creado 2 módulos personalizados dentro de la carpeta del proveedor. Esta es mi estructura de diseño:

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

Ambos están habilitados.

Este es mi código para el routes.xmlmódulo 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>

Este es mi código en 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>

Este es mi archivo registro.php:

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

Este es mi código de controlador:

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

Este es mi código de diseño:

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

& Lo mismo para otro módulo. Ya ejecuté el setup:upgradecomando pero aún así, recibo un error 404 cuando intento acceder a cualquiera de estos módulos.


puede mostrar su archivo de diseño y estructura de carpetas del árbol de su módulo
Bilal Usean

He actualizado mi pregunta. Actualmente he dado salida; en el método execute () del controlador, pero ni siquiera viene en el controlador, supongo.
user2431224

En magento2 puede crear la app/codecarpeta Inside del módulo
MaYaNk

He creado solo dentro de la aplicación / código.
user2431224

No puedo entender perfectamente su estructura de diseño.
MaYaNk

Respuestas:


5

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


Sigue siendo el mismo error.
user2431224

Edité mi respuesta
MaYaNk

intenta cambiar setup_version="1.0.0" a setup_version="2.0.1"
MaYaNk


1

no ha creado ningún controlador, por lo que no encontrará ninguna URL, por lo que le dará un error 404

Crear carpeta de controlador

Crear carpeta de índice dentro de la carpeta del controlador

Cree el archivo Index.php dentro de la carpeta Index agregue el siguiente código en él.

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



}

Ahora puedes consultar url helloworld/index/index


Por supuesto, he creado el controlador. Simplemente no
pegué

He agregado el código del controlador en mi pregunta.
user2431224

¿Qué url estás intentando?
Prashant Valanda

Ahora se trata del método execute () del controlador, pero solo muestra una página en blanco. localhost / magento-demo / helloworld / hello / world
user2431224

Funcionó después de ejecutar el comando cache flush.
user2431224

0

Necesita cambiar el código en 2 archivos,

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

Acabo de hacer que estos dos cambios ejecuten php bin / magento setup: actualización y funciona bien.

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

ingrese la descripción de la imagen aquí


0

Ejecuté bin \ magento cache: flush & Al parecer funcionó. Fue un problema de caché.


0

Solo intente implementar el contenido y actualizar la configuración

Configuración de php bin / magento: actualización

php bin / magento setup: static-content: deploy

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.