Erro 404 não encontrado na página ao tentar acessar o módulo personalizado no Magento 2


8

Criei 2 módulos personalizados dentro da pasta do fornecedor. Esta é a minha estrutura de layout:

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

Ambos estão habilitados.

Este é o meu código para o 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 é o meu código em 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 é o meu arquivo registration.php:

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

Este é o meu 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 é o meu código de 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>

& Mesmo para outro módulo. Eu já executei o setup:upgradecomando, mas ainda assim, estou recebendo o erro 404 quando tento acessar qualquer um desses módulos.


você pode mostrar o seu arquivo de layout e árvore estrutura de pastas do seu módulo
Bilal Usea

Atualizei minha pergunta. Atualmente, tenho dado exit; no método execute () do controlador, mas ele nem vem no controlador, eu acho.
user2431224

Em magento2 Você pode criar Dentro módulo app/codepasta
Mayank

Eu criei apenas dentro do aplicativo / código.
user2431224

Não consigo entender perfeitamente sua estrutura de layout.
21416 MaYaNk

Respostas:


5

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


ainda o mesmo erro.
user2431224

Eu editei minha resposta
MaYaNk

tentar mudar setup_version="1.0.0" a setup_version="2.0.1"
Mayank


1

você não criou nenhum controlador para que ele não encontre nenhum URL, o que lhe dará um erro 404

Criar pasta Controller

Criar pasta Index dentro da pasta Controller

Crie o arquivo Index.php dentro da pasta Index e adicione o código abaixo.

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



}

Agora você pode verificar o URL helloworld/index/index


É claro que eu criei o controlador. Eu apenas não
colei

Eu adicionei o código do controlador na minha pergunta.
user2431224

Qual URL você está tentando?
Prashant Valanda 06/07

Agora vem o método execute () do controlador, mas exibe apenas a página em branco. localhost / magento-demo / helloworld / hello / world
user2431224

Funcionou depois que eu executei o comando cache flush.
user2431224

0

Você precisa alterar o código em 2 arquivos,

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>

Acabei de fazer essas duas alterações rodando a instalação do php bin / magento: upgrade e seu bom funcionamento.

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

insira a descrição da imagem aqui


0

Eu executei o bin \ magento cache: flush e funcionou aparentemente. Era um problema de cache.


0

Apenas tente implantar o conteúdo e atualizar a configuração

php bin / magento setup: atualização

configuração do bin php / magento: static-content: deploy

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.