La création d'un module personnalisé dans magento2 affiche une erreur fatale


9

Je travaille sur la création d'un module personnalisé dans magento 2, mais cela ne fonctionne pas. Pourriez-vous s'il vous plaît me suggérer où je me suis trompé?.

Mon code de module:

app / etc / config.php:

'modules' => 
  array (
    'Ramesh_Sample' => 1,
         ),

app / code / Ramesh / Sample / etc / 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="Ramesh_Sample" schema_version="2.0.0">
    </module>
</config>

app / code / Ramesh / Sample / etc / frontend / routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="sample" frontName="sample">
            <module name="Ramesh_Sample" />
        </route>
    </router>
</config>

app / code / Ramesh / Sample / Controller / Index / Index.php

<?php
namespace Ramesh\Sample\Controller\Index;

use Magento\Framework\App\Action\Context;
//use \Magento\Framework\View\Result\PageFactory;

class Index extends \Magento\Framework\App\Action\Action
{
    private $_resultPageFactory;

    public function __construct(
        Context $context,
        \Magento\Framework\View\Result\PageFactory $resultPageFactory
    )
    {
        parent::__construct($context);
        $this->_resultPageFactory = $resultPageFactory;
    }

    public function execute()
    {
        $result = $this->_resultPageFactory->create();
        return $result;
    }
}

app / code / Ramesh / Sample / Block / Sample.php

namespace Magento\Sample\Block;
class Sample extends \Magento\Framework\View\Element\Template
{
}

app / code / Ramesh / Sample / views / frontend / layout / sample_index_index.xml

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="Sample\Ramesh\Block\Sample" name="sample"      template="sample.phtml">
            </block>
        </referenceContainer>
    </body>
</page>

app / code / Ramesh / Sample / view / frontend / templates / sample.phtml

<?php echo 'Hi I am Magento 2'; ?>

Mais j'ai eu l'erreur suivante:

a: 4: {i: 0; s: 380: "Erreur récupérable: l'argument 2 transmis à Ramesh \ Sample \ Controller \ Index \ Index :: __ construct () doit être une instance de Magento \ Framework \ View \ Result \ PageFactory, aucune donnée, appelée dans var / generation / Ramesh / Sample / Controller / Index / Index / Interceptor.php à la ligne 14 et définie dans app / code / Ramesh / Sample / Controller / Index / Index.php à la ligne 14 "; i: 1; s: 6109: "# 0 app / code / Ramesh / Sample / Controller / Index / Index.php (14): Magento \ Framework \ App \ ErrorHandler-> handler (4096, 'Argument 2 pass ...', '/ var / www / html / m ...', 14, tableau)


Voir le lien ci-dessous Comment créer un module personnalisé dans Magento 2? magento.stackexchange.com/questions/54609/…
Manoj Kumar

Réponses:


29

essayez de supprimer votre module de var / generation / nom-fournisseur / votre-module et essayez de rafraîchir la page et de vérifier si cela fonctionne.


Pourquoi dois-je supprimer le dossier var / generation complet? Existe-t-il un processus plus rapide? Dois-je exécuter la configuration bin / magento: di: compile à chaque fois?
testeur

1
Vous n'avez pas besoin de supprimer le dossier var / generation complet, essayez d'identifier votre dossier correct de votre module Exemple: Démo / Module à l'intérieur de la var / generation. ou modèles de génération de code définis dans di.xml
Niranjan B

Cela m'est arrivé en travaillant avec des contrôleurs et je l'ai corrigé de la même manière, mais quelqu'un peut-il expliquer pourquoi cela se produit en premier lieu?
diazwatson

essayé le même code ci-dessus et supprimé les fichiers comme mentionné mais montrant toujours une erreur - HTTP ERROR 500,
amit_game

10

Vous pouvez utiliser la commande mentionnée ci-dessous, puis actualiser la page.

php bin/magento setup:upgrade

Cela a fonctionné pour moi
WaPoNe

Super;) Travailler pour moi
AbdulBasit

1

Remplacez le code donné ci-dessous dans votre constructeur

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
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.