ฉันจะสร้างโมดูล 'Hello World' ง่ายๆใน Magento ได้อย่างไร


305

ทำสิ่งต่อไปนี้ให้สำเร็จใน Magento ได้อย่างไร?

  • แสดงข้อความ "Hello World" โดยใช้ตัวควบคุม / มุมมอง / โมเดล ดังนั้นถ้าฉันไปที่http://example.com/myControllerมันจะแสดงสตริง 'Hello World' ความสามารถในการแสดงสตริงนี้ภายในเทมเพลตของเว็บไซต์ของฉัน (ตัวอย่างเช่นส่วนหัวส่วนท้าย ฯลฯ ) จะเป็นโบนัส

  • ฉันจะเพิ่มวิธีในตัวควบคุมนี้ (หรือตัวควบคุมใหม่หากจำเป็น) ซึ่งโต้ตอบกับรูปแบบและดำเนินการแบบสอบถามSelect * FROM articles where id='10'และส่งกลับแถว (ที่มีคอลัมน์id, title, content) ไปยังตัวควบคุมได้อย่างไร จากนั้นใช้คอนโทรลเลอร์เพื่อรวมมุมมองซึ่งจะแสดงแถวนี้ ดังนั้นการไปที่http://example.com/myController/show_row(หรือบางอย่างที่คล้ายกัน) จะแสดงแถวภายในมุมมอง (ไม่จำเป็นต้องแฟนซีเพียงecho $row->id;หรือสิ่งที่คล้ายกันจะทำงานได้)

ข้อมูลอื่น ๆ เกี่ยวกับโครงสร้างโค้ดของ Magento จะมีประโยชน์มากเช่นกัน


6
ดูเหมือนว่าระบบจะไม่ปรับรูปแบบการจ่ายเงินรางวัลของคุณ
Alan Storm

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

อ่าฉันไม่ทราบว่ามีการจ่ายเงินรางวัลเฉพาะกับโพสต์ที่เก่ากว่าขอโทษ
Alan Storm

3
ในฐานะที่เป็นเด็กเขามักจะมีแรงดึงดูดของ Magents อยู่เสมอ รหัสของเขาทำงานในลักษณะเดียวกัน
vol7ron

คำตอบ:


539

แรกและสำคัญที่สุดผมขอแนะนำให้คุณซื้อรูปแบบไฟล์ PDF / E-Book จาก PHP สถาปนิก มันคือ US $ 20 แต่เป็นทรัพยากรเดียวที่ตรงไปตรงมา "นี่คือวิธีการทำงานของ Magento" ที่ฉันหาได้ ผมได้เริ่มต้นยังเขียนบทเรียนวีโอไอพีที่เว็บไซต์ของตัวเอง

ประการที่สองถ้าคุณมีทางเลือกและไม่ได้เป็นโปรแกรมเมอร์ที่มีประสบการณ์หรือไม่ต้องมีการเข้าถึงโปรแกรมเมอร์ที่มีประสบการณ์ (นึกคิดใน PHP และ Java) รับรถเข็นอีก Magento ได้รับการออกแบบมาอย่างดี แต่ได้รับการออกแบบให้เป็นโซลูชันตะกร้าสินค้าที่โปรแกรมเมอร์คนอื่นสามารถสร้างโมดูลได้ มันไม่ได้ออกแบบมาเพื่อให้เข้าใจได้ง่ายโดยคนที่ฉลาด แต่ไม่ใช่โปรแกรมเมอร์

ประการที่สาม Magento MVC นั้นแตกต่างจากRuby on Rails , Django , CodeIgniter , CakePHPเป็นต้นและรูปแบบ MVC ที่เป็นที่นิยมของนักพัฒนา PHP ในปัจจุบัน ฉันคิดว่ามันเป็นไปตามโมเดลZendและสิ่งทั้งหมดนั้นเหมือน Java OOP มาก มีสองตัวควบคุมที่คุณต้องกังวล ตัวควบคุมโมดูล / frontName และจากนั้นตัวควบคุม MVC

ประการที่สี่แอปพลิเคชั่น Magento นั้นถูกสร้างขึ้นโดยใช้ระบบโมดูลเดียวกับที่คุณใช้ดังนั้นการกระตุ้นรอบรหัสหลักจึงเป็นวิธีการเรียนรู้ที่มีประโยชน์ นอกจากนี้สิ่งที่คุณจะทำกับวีโอไอพีมากมายคือการเอาชนะคลาสที่มีอยู่ สิ่งที่ฉันครอบคลุมในที่นี้คือการสร้างฟังก์ชั่นใหม่ไม่ใช่การเอาชนะ ระลึกไว้เสมอเมื่อคุณดูตัวอย่างโค้ดที่นั่น

ฉันจะเริ่มต้นด้วยคำถามแรกของคุณแสดงวิธีตั้งค่าคอนโทรลเลอร์ / เราเตอร์เพื่อตอบกลับ URL เฉพาะ นี่จะเป็นนิยายเล็ก ๆ ฉันอาจมีเวลาในภายหลังสำหรับหัวข้อ / แม่แบบที่เกี่ยวข้อง แต่ตอนนี้ฉันไม่มี อย่างไรก็ตามฉันจะถามคำถาม SQL ของคุณสั้น ๆ

Magento ใช้สถาปัตยกรรมฐานข้อมูลEAV เมื่อใดก็ตามที่เป็นไปได้พยายามใช้โมเดลวัตถุที่ระบบจัดเตรียมไว้เพื่อรับข้อมูลที่คุณต้องการ ฉันรู้ว่ามันมีอยู่ในตาราง SQL แต่ก็เป็นการดีที่สุดที่จะไม่นึกถึงการใช้ข้อมูลโดยใช้คำสั่ง SQL แบบ raw หรือคุณจะเป็นบ้า

ข้อจำกัดความรับผิดชอบสุดท้าย ฉันใช้ Magento ประมาณสองหรือสามสัปดาห์ดังนั้น caveat emptor นี่คือแบบฝึกหัดเพื่อให้ตรงนี้ในหัวของฉันเท่าที่จะช่วย Stack Overflow

สร้างโมดูล

การเพิ่มเติมและการปรับแต่งไปยังวีโอไอพีนั้นกระทำผ่านโมดูล ดังนั้นสิ่งแรกที่คุณต้องทำคือสร้างโมดูลใหม่ สร้างไฟล์ XML ในapp/modulesชื่อดังนี้

cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld.xml
<?xml version="1.0"?>
<config>
     <modules>
        <MyCompanyName_HelloWorld>
            <active>true</active>
            <codePool>local</codePool>
        </MyCompanyName_HelloWorld>
     </modules>
</config>

MyCompanyName เป็น namespace ที่ไม่ซ้ำกันสำหรับการปรับเปลี่ยนของคุณมันไม่จำเป็นต้องเป็นชื่อ บริษัท ของคุณ HelloWorldเป็นชื่อของโมดูลของคุณ

ล้างแคชแอปพลิเคชัน

ตอนนี้ไฟล์โมดูลอยู่ในตำแหน่งแล้วเราจะต้องแจ้งให้ Magento ทราบเกี่ยวกับมัน (และตรวจสอบงานของเรา) ในแอปพลิเคชันผู้ดูแลระบบ

  1. ไปที่ระบบ -> การจัดการแคช
  2. เลือกรีเฟรชจากเมนู All Cache
  3. คลิกบันทึกการตั้งค่าแคช

ตอนนี้เราต้องแน่ใจว่า Magento รู้เกี่ยวกับโมดูล

  1. ไปที่ System-> Configuration
  2. คลิกขั้นสูง
  3. ในกล่องตั้งค่า "ปิดการใช้งานโมดูลเอาท์พุท" ให้มองหาโมดูลใหม่ของคุณชื่อ "MyCompanyName_HelloWorld"

หากคุณสามารถใช้ชีวิตด้วยประสิทธิภาพที่ช้าลงคุณอาจต้องปิดแอปพลิเคชันแคชในขณะที่กำลังพัฒนา / เรียนรู้ ไม่มีอะไรน่าผิดหวังไปกว่านี้แล้วลืมลบแคชและสงสัยว่าทำไมการเปลี่ยนแปลงของคุณจึงไม่ปรากฏ

ตั้งค่าโครงสร้างไดเรกทอรี

ต่อไปเราจะต้องตั้งค่าโครงสร้างไดเรกทอรีสำหรับโมดูล คุณไม่ต้องการไดเรกทอรีทั้งหมด แต่ไม่มีอันตรายใด ๆ ในการตั้งค่าทั้งหมด

mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql

และเพิ่มไฟล์กำหนดค่า

touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml

และภายในไฟล์กำหนดค่าให้เพิ่มรายการต่อไปนี้ซึ่งโดยพื้นฐานแล้วเป็นการกำหนดค่า "blank"

<?xml version="1.0"?>
<config>
    <modules>
        <MyCompanyName_HelloWorld>
            <version>0.1.0</version>
        </MyCompanyName_HelloWorld>
    </modules>
</config>

ไฟล์การกำหนดค่านี้จะทำให้คุณบอก Magento ได้ว่าคุณต้องการเรียกใช้รหัสใด

การตั้งค่าเราเตอร์

ต่อไปเราต้องตั้งค่าเราเตอร์ของโมดูล วิธีนี้จะทำให้ระบบทราบว่าเรากำลังจัดการ URL ใด ๆ ในรูปแบบของ

http://example.com/magento/index.php/helloworld

ดังนั้นในไฟล์กำหนดค่าของคุณให้เพิ่มหัวข้อต่อไปนี้

<config>
<!-- ... -->
    <frontend>
        <routers>
            <!-- the <helloworld> tagname appears to be arbitrary, but by
            convention is should match the frontName tag below-->
            <helloworld>
                <use>standard</use>
                <args>
                    <module>MyCompanyName_HelloWorld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>
    </frontend>
<!-- ... -->
</config>

สิ่งที่คุณพูดที่นี่คือ "URL ใด ๆ ที่มีชื่อหน้าของ helloworld ...

http://example.com/magento/index.php/helloworld

ควรใช้ตัวควบคุม frontName MyCompanyName_HelloWorld "

ดังนั้นด้วยการกำหนดค่าข้างต้นเมื่อคุณโหลดหน้า helloworld ด้านบนคุณจะได้รับหน้า 404 นั่นเป็นเพราะเรายังไม่ได้สร้างไฟล์สำหรับตัวควบคุมของเรา มาทำกันเถอะ

touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php

ตอนนี้ลองโหลดหน้า ความคืบหน้า! แทนที่จะเป็น 404 คุณจะได้รับข้อยกเว้น PHP / Magento

Controller file was loaded but class does not exist

ดังนั้นเปิดไฟล์ที่เราเพิ่งสร้างขึ้นและวางในรหัสต่อไปนี้ ชื่อของคลาสจะต้องเป็นไปตามชื่อที่คุณให้ไว้ในเราเตอร์ของคุณ

<?php
class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){
        echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
    }
}

สิ่งที่เราเพิ่งตั้งค่าคือตัวควบคุมโมดูล / ชื่อหน้า นี่คือตัวควบคุมเริ่มต้นและการกระทำเริ่มต้นของโมดูล หากคุณต้องการเพิ่มตัวควบคุมหรือการกระทำคุณต้องจำไว้ว่าต้นไม้ส่วนแรกของ Magento URL นั้นไม่เปลี่ยนรูปพวกเขาจะไปทางนี้เสมอhttp://example.com/magento/index.php/frontName/controllerName/actionName

ดังนั้นหากคุณต้องการจับคู่ URL นี้

http://example.com/magento/index.php/helloworld/foo

คุณจะต้องมี FooController ซึ่งคุณสามารถทำได้ดังนี้:

touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php
<?php
class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){
        echo 'Foo Index Action';
    }

    public function addAction(){
        echo 'Foo add Action';
    }

    public function deleteAction(){
        echo 'Foo delete Action';
    }
}

โปรดทราบว่าตัวควบคุมเริ่มต้น IndexController และการกระทำเริ่มต้น indexAction สามารถโดยปริยาย แต่จะต้องมีความชัดเจนหากมีอะไรบางอย่างเกิดขึ้นหลังจากนั้น ดังนั้นhttp://example.com/magento/index.php/helloworld/fooจะจับคู่คอนโทรลเลอร์ FooController และแอ็คชั่น indexAction และไม่ใช่แอคชั่น fooAction ของ IndexController หากคุณต้องการมี fooAction ในตัวควบคุม IndexController คุณต้องเรียกคอนโทรลเลอร์นี้อย่างชัดเจนเช่นนี้: http://example.com/magento/index.php/helloworld/index/fooเพราะส่วนที่สองของ url คือและจะเป็น controllerName เสมอ พฤติกรรมนี้เป็นสิ่งที่สืบทอดมาจาก Zend Framework ที่รวมอยู่ใน Magento

ตอนนี้คุณควรจะสามารถกด URL ต่อไปนี้และดูผลลัพธ์ของคำสั่ง echo ของคุณ

http://example.com/magento/index.php/helloworld/foo
http://example.com/magento/index.php/helloworld/foo/add
http://example.com/magento/index.php/helloworld/foo/delete

ดังนั้นควรให้แนวคิดพื้นฐานเกี่ยวกับวิธีการที่วีโอไอพีส่งไปยังคอนโทรลเลอร์ จากที่นี่ฉันแนะนำให้ poking ที่คลาสตัวควบคุม Magento ที่มีอยู่เพื่อดูว่าควรใช้แบบจำลองและระบบแม่แบบ / เค้าโครงอย่างไร


4
ขอบคุณสิ่งนี้มีประโยชน์มาก โปรดพิจารณาเพิ่มข้อมูลเกี่ยวกับการใช้แบบจำลอง / ฐานข้อมูลและมุมมองเพื่อให้คำตอบของคุณเสร็จสมบูรณ์
คลิกโหวต

7
ตรวจสอบให้แน่ใจว่าแอพ / code / local / MyCompanyName / HelloWorld / etc / config.xml มีตัวพิมพ์เดียวกับ xml ที่อยู่ใน etc / modules (MyCompanyName_HelloWorld ไม่ใช่ mycompanyname_helloworld) มิฉะนั้นจะมีรายการในแบ็กเอนด์!
Moak

8
ฉันมีความคิดเห็นเพียงเล็กน้อยเกี่ยวกับคำตอบที่สมบูรณ์แบบของอลัน: "สิ่งที่เราเพิ่งตั้งค่าคือตัวควบคุมโมดูล / frontName นี่ไม่ใช่ตัวควบคุม MVC" มันเป็นตัวควบคุมชนิดเดียวกับที่ FooController เป็น ในการดำเนินการดัชนี ZF ใน IndexController ถูกเรียกใช้ตามค่าเริ่มต้นดังนั้นการร้องขอexample.com/magento/index.php/helloworldจะเรียก IndexController :: indexAction () ในโมดูล helloworld ดังนั้นการเรียก ... / helloworld / foo จะพยายามหา FooController ในโมดูล helloworld และเรียก indexAction () บนมัน ในการทริกเกอร์ IndexController :: fooAction () คุณต้องขอ: ... / helloworld / index / foo
Matus Zeman

2
ให้แน่ใจว่าคุณอ่านคำตอบจาก @Matus Zeman เพื่อทำความเข้าใจว่าทำไม fooAction ไม่พบใน IndexController มันเป็นเพียง 'ปกติ' Zend Framework MVC / เราเตอร์และคุณใช้ URL ที่ไม่ดีดังนั้นคุณควรลบ "นี่ไม่ใช่ ส่วนควบคุม MVC "ในคำตอบของคุณ
regilero

2
@ hypervisor666 เปิด "โหมดนักพัฒนาซอฟต์แวร์" (google it) เมื่อเปิดโหมดผู้พัฒนาระบบวีโอไอพีจะทำงานผิดพลาดเมื่อเกิดข้อผิดพลาดในไฟล์ XML
Alan Storm

39

ฉันได้ต่อสู้กับ Magento เมื่อเดือนที่แล้วและฉันก็ยังคงพยายามคิดออก ดังนั้นนี่คือกรณีของคนตาบอดที่นำคนตาบอด มีวิธีการจัดทำเอกสารน้อยมากและฟอรัม / วิกินั้นวุ่นวายที่สุด ไม่เพียงแค่นั้น แต่ยังมีวิธีแก้ไขปัญหาต่าง ๆ ที่ล้าสมัยหรือไม่เหมาะสม ฉันไม่แน่ใจว่าคุณมีโครงการหรือพยายามที่จะคิดออก แต่มันอาจจะง่ายขึ้นถ้าคุณเริ่มต้นด้วยการปรับเปลี่ยนการทำงานที่มีอยู่เมื่อเทียบกับการสร้างสิ่งใหม่ที่สมบูรณ์ เพื่อที่ฉันจะไปแน่นอนกับ "บทความแนะนำสำหรับนักพัฒนา" ในวิกิ วิธีการชำระเงินใหม่เป็นวิธีที่เปิดหูเปิดตา

สำหรับการแก้ไขข้อบกพร่องฉันขอแนะนำให้ใช้ FirePHPและดูแหล่งที่มา HTML ของคุณเมื่อมีข้อผิดพลาดเกิดขึ้น วิธีการดีบัก ole echo ใช้งานได้ไม่ดีเท่าที่ควร

สถาปัตยกรรมทั่วไปมีความซับซ้อนที่ทำให้มึนงงมากถึงแม้ว่าฉันจะเข้าใจอย่างถ่องแท้แล้วก็ตามฉันก็ต้องเขียนหนังสือเพื่อปกปิดมัน สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือให้คำแนะนำแก่คุณฉันหวังว่าจะมีคนให้ฉันเมื่อฉันเริ่ม ...

อยู่ห่างจากไฟล์หลัก อย่าแก้ไขพวกเขาแทนที่จะเขียนโมดูลของคุณเองและแทนที่สิ่งที่คุณต้องการ

Magento ใช้ไฟล์ปรับแต่งที่ประกอบด้วย XML เพื่อตัดสินใจว่าจะต้องทำอะไร เพื่อที่จะให้มันทำงานของคุณเองแทนที่จะเป็นฟังก์ชั่นหลักคุณต้องมี xml ที่ถูกต้อง น่าเสียดายที่ไม่มีคำแนะนำในการสร้าง XML ของคุณ คุณต้องดูตัวอย่างและทำการทดสอบอย่างจริงจัง หากต้องการทำให้เนื้อหาของไฟล์เหล่านี้มีความซับซ้อน อย่างไรก็ตามหากคุณเชี่ยวชาญในสิ่งเหล่านี้คุณสามารถแทนที่ส่วนใด ๆ ของฟังก์ชั่นพื้นฐานที่ทำขึ้นสำหรับระบบที่มีประสิทธิภาพมาก

วีโอไอพีใช้วิธีการชอบMage::getModel('mymodel'), Mage::getSingleton('mysingleton'), Mage::helper('myhelper')จะกลับวัตถุบางอย่างของการเรียน จะค้นหาสิ่งเหล่านี้ตามค่าเริ่มต้นในเนมสเปซหลัก หากคุณต้องการให้มันใช้ของคุณเองคุณจะต้องแทนที่สิ่งเหล่านี้ในconfig.xmlไฟล์ของคุณ

ชื่อคลาสของคุณต้องตรงกับโฟลเดอร์ที่อยู่ในนั้น

Varien_Objectจำนวนมากของวัตถุในวีโอไอพีในท้ายที่สุดขยายสิ่งที่เรียกว่า นี่คือคลาสวัตถุประสงค์ทั่วไป (เช่นมีดสวิสกองทัพ) และวัตถุประสงค์ในชีวิตคือการอนุญาตให้คุณกำหนดวิธีการ / ตัวแปรของคุณเองได้ทันที ตัวอย่างเช่นคุณจะเห็นว่ามันใช้เป็นอาร์เรย์ที่ได้รับการยกย่องเพื่อส่งผ่านข้อมูลจากวิธีหนึ่งไปยังอีกวิธีหนึ่ง

ในระหว่างการพัฒนาตรวจสอบให้แน่ใจว่าคุณแคชถูกปิดใช้งาน มันจะทำให้คุณภาพเยี่ยมช้าเลือดตาแทบกระเด็น แต่มันจะช่วยให้คุณบาดเจ็บหัวมาก (จากการต่อสู้บนโต๊ะของคุณ)

คุณจะเห็น$thisการใช้งานมาก มันหมายถึงคลาสอื่นขึ้นอยู่กับไฟล์ที่คุณเห็น get_class($this)เป็นเพื่อนของคุณโดยเฉพาะอย่างยิ่งร่วมกับ FirePHP

จดสิ่งต่าง ๆ ลงบนกระดาษ มาก. มี factoids น้อยนับไม่ถ้วนที่คุณจะต้อง 1-2 วันหลังจากที่คุณพบพวกเขา

Magento รัก OO อย่าแปลกใจถ้าการติดตามวิธีการจะนำคุณผ่านชั้นเรียนที่แตกต่างกัน 5-10

อ่านคู่มือการออกแบบของที่นี่ มันมีความหมายส่วนใหญ่สำหรับนักออกแบบกราฟิก แต่คุณต้องเข้าใจว่าที่ไหนและทำไมผลลัพธ์จากโมดูลของคุณจะจบลง เพื่อที่จะไม่ลืมเปิด "คำแนะนำเส้นทางแม่แบบ" ในส่วนนักพัฒนาของแผงผู้ดูแลระบบ

มีมากขึ้น แต่ฉันจะหยุดที่นี่ก่อนที่จะกลายเป็นวิทยานิพนธ์


กรุณาโพสต์เพิ่มเติมถ้าคุณสามารถข้อมูลทั้งหมดเป็นประโยชน์มาก :)
คลิกโหวต

ไม่เช่นนั้นคุณควรลงทะเบียนที่นี่ใน Stackoverflow หากคุณทำคุกกี้หายตัวแทนทั้งหมดของคุณจะหายไป;)
คลิกโหวต

ขอบคุณ! สิ่งนี้มีประโยชน์มาก Ner
Ner

2

ฉันค่อนข้างจะแนะนำMage2Genสิ่งนี้จะช่วยคุณสร้างหม้อไอน้ำและคุณสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจหลัก มันช่วยเร่งความเร็วของสิ่งต่างๆ


0

โมดูลวีโอไอพีเป็นกลุ่มของไดเรกทอรีที่มีบล็อกตัวควบคุมผู้ช่วยและรุ่นที่จำเป็นในการสร้างคุณสมบัติร้านค้าเฉพาะ เป็นหน่วยของการปรับแต่งในแพลตฟอร์ม Magento สามารถสร้างโมดูลวีโอไอพีเพื่อใช้งานหลายฟังก์ชั่นพร้อมรองรับตรรกะเพื่อส่งผลต่อประสบการณ์ผู้ใช้และรูปลักษณ์หน้าร้าน มีวงจรชีวิตที่อนุญาตให้ติดตั้งลบหรือปิดใช้งาน จากมุมมองของทั้งผู้ค้าและนักพัฒนาส่วนขยายโมดูลเป็นหน่วยหลักของแพลตฟอร์ม Magento

การประกาศของโมดูล

เราต้องประกาศโมดูลโดยใช้ไฟล์การกำหนดค่า Magento 2 ค้นหาโมดูลการกำหนดค่าในไดเรกทอรีอื่น ๆ ของโมดูล ดังนั้นตอนนี้เราจะสร้างไฟล์การกำหนดค่า module.xml

รหัสจะมีลักษณะดังนี้:

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Cloudways_Mymodule" setup_version="1.0.0"></module> </config>

การลงทะเบียนของโมดูล โมดูลจะต้องลงทะเบียนในระบบ Magento 2 โดยใช้คลาส Magento Component Registrar ตอนนี้เราจะสร้างไฟล์ registration.php ในไดเรกทอรีรากโมดูล:

app/code/Cloudways/Mymodule/registration.php

รหัสจะมีลักษณะเช่นนี้:

?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Cloudways_Mymodule',
__DIR__
);

ตรวจสอบสถานะของโมดูล หลังจากทำตามขั้นตอนข้างต้นเราจะได้สร้างโมดูลอย่างง่าย ตอนนี้เรากำลังจะตรวจสอบสถานะของโมดูลและไม่ว่าจะเปิดใช้งานหรือปิดใช้งานโดยใช้บรรทัดคำสั่งต่อไปนี้:

php bin/magento module:status

php bin/magento module:enable Cloudways_Mymodule

แบ่งปันความคิดเห็นของคุณเมื่อคุณผ่านกระบวนการเสร็จสมบูรณ์แล้ว


0

ฉันพยายามที่จะทำให้โมดูลของฉันจาก magaplaza สวัสดีโลกกวดวิชา แต่มีบางอย่างผิดปกติ ฉันนำเข้ารหัสของโมดูลนี้https://github.com/astorm/magento2-hello-worldจาก github และใช้งานได้ จากโมดูลนั้นฉันสร้างหมวดหมู่ย่อย ajax เลือกดร็อปดาวน์โมดูล หลังจากติดตั้งในไดเรกทอรี aap / code ของการติดตั้ง magento2 ของคุณทำตาม URL นี้ .. http://www.example.com/hello_mvvm/hello/world คุณสามารถดาวน์โหลดรหัสได้จากที่นี่https://github.com/sanaullahAhmad/Magento2_cat_subcat_ajax_select_dropdowns และวางไว้ในโฟลเดอร์ aap / code ของคุณ กว่าเรียกใช้คำสั่งเหล่านี้ ...

php bin/magento setup:update
php bin/magento setup:static-content:deploy -f
php bin/magento c:c

ตอนนี้คุณสามารถตรวจสอบการทำงานของโมดูลได้ด้วย URL ต่อไปนี้ http: // {{www.example.com}} / hello_mvvm / hello / world


0

และ,

ฉันแนะนำให้คุณเรียนรู้เกี่ยวกับการกำหนดค่าระบบ

จะแสดงหมวดหมู่ทั้งหมดในฟิลด์การกำหนดค่าระบบได้อย่างไร

ที่นี่ฉันแก้ไขด้วยตัวอย่างที่ดี มันทำงานได้ดี คุณสามารถตรวจสอบและเรียนรู้การไหลของรหัส

มีตัวอย่างอื่น ๆ อีกมากมายที่คุณควรเรียนรู้ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.