magento2でカスタムモジュールを作成すると致命的なエラーが表示される


9

magento 2でカスタムモジュールを作成する作業をしていますが、機能しません。どこが間違っているのか教えてもらえますか?

私のモジュールコード:

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

しかし、私は次のエラーを受け取りました:

a:4:{i:0; s:380: "回復可能なエラー:Ramesh \ Sample \ Controller \ Index \ Index :: __ construct()に渡される引数2は、Magento \ Framework \ View \ Result \ PageFactoryのインスタンスである必要があります。なし。14行目のvar / generation / Ramesh / Sample / Controller / Index / Index / Interceptor.phpで呼び出され、14行目のapp / code / Ramesh / Sample / Controller / Index / Index.phpで定義されています。 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、配列)


以下のリンクを参照してくださいMagento 2でカスタムモジュールを作成する方法 magento.stackexchange.com/questions/54609/...
Manojさんクマー

回答:


29

var / generation / vendor-name / your-moduleからモジュールを削除し、ページを更新して、機能しているかどうかを確認してください。


var / generationフォルダー全体を削除する必要があるのはなぜですか?より速いプロセスはありますか?毎回bin / magento setup:di:compileを実行する必要がありますか?
テスター

1
完全なvar / generationフォルダーを削除する必要はありません。モジュールの正しいフォルダーを特定してみてください。例:var / generation内のDemo / Module。または
di.xmlで

これはコントローラーを操作しているときに私にも起こりましたが、同じ方法で修正しましたが、なぜこれが最初に起こるのか誰かが説明できますか?
diazwatson 2017年

上記と同じコードを試し、ファイルを削除しましたが、依然としてエラーが表示されます
-HTTP


1

以下のコードをコンストラクタで置き換えます

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.