การสร้างโมดูลที่กำหนดเองใน magento2 แสดงข้อผิดพลาดร้ายแรง


9

ฉันทำงานเกี่ยวกับการสร้างโมดูลที่กำหนดเองใน magento 2 แต่มันไม่ทำงาน คุณช่วยแนะนำฉันในที่ที่ฉันผิดไปได้ไหม.

รหัสโมดูลของฉัน:

app / etc / config.php:

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

app / รหัส / Ramesh / ตัวอย่าง / 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 / รหัส / Ramesh / ตัวอย่าง / etc / ส่วนหน้า / 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 / รหัส / Ramesh / ตัวอย่าง / ควบคุม / ดัชนี / 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 / รหัส / Ramesh / ตัวอย่าง / บล็อก / sample.php

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

app / รหัส / Ramesh / ตัวอย่าง / views / ส่วนหน้า / รูปแบบ / 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 / รหัส / Ramesh / ตัวอย่าง / view / ส่วนหน้า / แม่ / sample.phtml

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

แต่ฉันได้รับข้อผิดพลาดต่อไปนี้:

a: 4: {i: 0; s: 380: "ข้อผิดพลาดที่กู้คืนได้: อาร์กิวเมนต์ 2 ผ่านไปยัง Ramesh \ Sample \ Controller \ ดัชนี \ ดัชนี :: __ สร้าง () ต้องเป็นตัวอย่างของ Magento \ Framework \ View \ Result \ PageFactory, ไม่มีใครได้รับเรียกใน var / generation / Ramesh / ตัวอย่าง / คอนโทรลเลอร์ / ดัชนี / ดัชนี / Interceptor.php ในบรรทัดที่ 14 และกำหนดไว้ในแอพ / รหัส / Ramesh / ตัวอย่าง / ตัวควบคุม / ดัชนี / Index.php ในบรรทัดที่ 14 "; i: 1; s: 6109: "# 0 แอป / รหัส / Ramesh / ตัวอย่าง / ตัวควบคุม / ดัชนี / Index.php (14): Magento \ Framework \ App \ ErrorHandler-> ตัวจัดการ (4096, 'อาร์กิวเมนต์ 2 ผ่าน ... ', '/ var / www / html / m ... ', 14, Array)


ดูลิงค์ด้านล่างวิธีสร้างโมดูลที่กำหนดเองใน Magento 2 magento.stackexchange.com/questions/54609/…
Manoj Kumar

คำตอบ:


29

พยายามลบโมดูลของคุณออกจาก var / generation / vendor-name / your-module และลองรีเฟรชหน้าและตรวจสอบว่ามันใช้งานได้หรือไม่


ทำไมฉันต้องลบโฟลเดอร์ var / generation ที่สมบูรณ์ มีกระบวนการที่เร็วขึ้นหรือไม่ ฉันต้องทำการติดตั้ง bin / magento: di: รวบรวมทุกครั้งหรือไม่?
ผู้ทดสอบ

1
คุณไม่จำเป็นต้องลบโฟลเดอร์ var / generation ที่สมบูรณ์ลองระบุโฟลเดอร์ที่ถูกต้องของโมดูลตัวอย่าง: Demo / Module ภายใน var / generation การติดตั้ง code bin / magento: di: คอมไพล์ทำงานเฉพาะเมื่อคุณตั้งค่าการพึ่งพา หรือรูปแบบการสร้างโค้ดใน di.xml
Niranjan B

สิ่งนี้เกิดขึ้นกับฉันในขณะที่ทำงานกับผู้ควบคุมและฉันแก้ไขมันในลักษณะเดียวกัน แต่บางคนสามารถอธิบายได้ว่าทำไมสิ่งนี้ถึงเกิดขึ้นในตอนแรก
diazwatson

ลองใช้รหัสข้างต้นเดียวกันและไฟล์ที่ถูกลบตามที่กล่าวถึง แต่ยังคงแสดงข้อผิดพลาด - HTTP ข้อผิดพลาด 500,
amit_game

10

คุณสามารถใช้คำสั่งดังกล่าวด้านล่างแล้วรีเฟรชหน้า

php bin/magento setup:upgrade

มันใช้งานได้สำหรับฉัน
WaPoNe

เยี่ยมมาก;) ทำงานให้ฉัน
AbdulBasit

1

แทนที่รหัสที่ระบุด้านล่างในตัวสร้างของคุณ

$this->_pageFactory = $pageFactory;
return parent::__construct($context);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.