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)
Antworten:
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.
quelle
Sie können den unten genannten Befehl verwenden und dann die Seite aktualisieren.
quelle
Ersetzen Sie den unten angegebenen Code in Ihrem Konstruktor
quelle