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)

Ramesh
quelle
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.

Niranjan B.
quelle
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
10

Sie können den unten genannten Befehl verwenden und dann die Seite aktualisieren.

php bin/magento setup:upgrade
Hardik Shah
quelle
Es hat bei mir
funktioniert
Großartig;) Arbeiten für mich
AbdulBasit
1

Ersetzen Sie den unten angegebenen Code in Ihrem Konstruktor

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
NIRAJ SHARMA
quelle