Das Erstellen eines benutzerdefinierten Moduls in magento2 zeigt einen schwerwiegenden Fehler


9

Ich arbeite daran, ein benutzerdefiniertes Modul in Magento 2 zu erstellen, aber es funktioniert nicht. Könnten Sie mir bitte vorschlagen, wo ich falsch gelaufen bin?

Mein Modulcode:

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 / route.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'; ?>

Aber ich habe folgenden Fehler bekommen:

a: 4: {i: 0; s: 380: "Behebbarer Fehler: Argument 2, das an Ramesh \ Sample \ Controller \ Index \ Index :: __ construct () übergeben wurde, muss eine Instanz von Magento \ Framework \ View \ Result \ PageFactory sein. keine angegeben, aufgerufen in var / generation / Ramesh / Sample / Controller / Index / Index / Interceptor.php in Zeile 14 und definiert in app / code / Ramesh / Sample / Controller / Index / Index.php in Zeile 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, Array)


Siehe untenstehenden Link Wie erstelle ich ein benutzerdefiniertes Modul in Magento 2? magento.stackexchange.com/questions/54609/…
Manoj Kumar

Antworten:


29

Versuchen Sie, Ihr Modul aus der Datei var / generation / vendor-name / your-module zu löschen. Aktualisieren Sie die Seite und prüfen Sie, ob sie funktioniert.


Warum muss ich den gesamten Ordner var / generation löschen? Gibt es einen schnelleren Prozess? Muss ich jedes Mal bin / magento setup: di: compile ausführen?
Tester

1
Sie müssen nicht den gesamten Ordner var / generation löschen. Versuchen Sie, den richtigen Ordner Ihres Moduls zu identifizieren. Beispiel: Demo / Modul in var / generation. Das Code-Bin / Magento-Setup: di: compile funktioniert nur, wenn Sie die Abhängigkeiten festlegen oder Code-Generierungsmuster in di.xml festgelegt
Niranjan B

Das ist mir bei der Arbeit mit Controllern passiert und ich habe es auf die gleiche Weise behoben, aber kann jemand erklären, warum dies überhaupt passiert?
Diazwatson

versuchte den gleichen obigen Code und löschte Dateien wie erwähnt, zeigte aber immer noch Fehler - HTTP ERROR 500,
amit_game


1

Ersetzen Sie den unten angegebenen Code in Ihrem Konstruktor

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.