Создание собственного модуля в magento2 покажет фатальную ошибку


9

Я работаю над созданием пользовательского модуля в magento 2, но он не работает. Не могли бы вы подсказать, где я ошибся?

Код моего модуля:

приложение / и т.д. / config.php:

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

Приложение / код / ​​Рамеш / образец / и т.д. / 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>

Приложение / код / ​​Рамеш / образец / и т.д. / интерфейс / 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>

Приложение / код / ​​Рамеш / 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;
    }
}

Приложение / код / ​​Рамеш / Sample / Block / sample.php

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

Приложение / код / ​​Рамеш / образец / вид / интерфейс / расположение / 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>

Приложение / код / ​​Рамеш / Sample / просмотр / интерфейс / шаблоны / sample.phtml

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

Но я получил следующую ошибку:

a: 4: {i: 0; s: 380: «Исправимая ошибка: Аргумент 2, переданный в Ramesh \ Sample \ Controller \ Index \ Index :: __ construct (), должен быть экземпляром Magento \ Framework \ View \ Result \ PageFactory, ничего не указано, вызывается в var / generation / Ramesh / Sample / Controller / Index / Index / Interceptor.php в строке 14 и определяется в app / code / Ramesh / Sample / Controller / Index / Index.php в строке 14 "; i: 1; s: 6109: "# 0 app / code / Ramesh / Sample / Controller / Index / Index.php (14): обработчик Magento \ Framework \ App \ ErrorHandler-> (4096, 'аргумент 2 pass ...', '/ var / www / html / m ...', 14, Array)


Смотрите ссылку ниже Как создать пользовательский модуль в Magento 2? magento.stackexchange.com/questions/54609/…
Манодж Кумар

Ответы:


29

попробуйте удалить ваш модуль из var / generation / vendor-name / your-module и попробуйте обновить страницу и проверить, работает ли он.


Почему я должен удалить всю папку var / generation? Есть ли более быстрый процесс? Нужно ли запускать bin / magento setup: di: compile каждый раз?
тестер

1
Вам не нужно удалять всю папку var / generation, попытайтесь определить правильную папку вашего модуля. Пример: Demo / Module внутри var / generation. Код bin / magento setup: di: compile работает, только если вы установили зависимости или шаблоны генерации кода, установленные в di.xml
B

Это случилось со мной при работе с контроллерами, и я исправил это так же, но кто-нибудь может объяснить, почему это происходит в первую очередь?
diazwatson

попробовал тот же код выше и удалил файлы, как указано, но все еще показывает ошибку - HTTP ERROR 500,
amit_game

10

Вы можете использовать нижеприведенную команду, а затем обновить страницу.

php bin/magento setup:upgrade

У меня это сработало
ВАПОН

Отлично;) Работая на меня
AbdulBasit

1

Замените приведенный ниже код в вашем конструкторе

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.