ทำไมต้องเพิ่ม register.php ใน magento-2.0.0-RC


15

เมื่อเร็ว ๆmagento-2.0.0-RCนี้เปิดตัวและพวกเขาเพิ่มregistration.phpในทุกโฟลเดอร์รูตโมดูล ดังนั้นฉันแค่อยากรู้ว่ามีเหตุผลอะไรบ้าง?

ใครบางคนสามารถจุดไฟนี้

คำตอบ:


12

registration.phpเป็นจุดเริ่มต้นของโมดูลของคุณ มันเทียบเท่าapp/etc/modules/[Namespace]_[Module].xmlจาก Magento 1
แต่ตอนนี้เป็นส่วนหนึ่งของโมดูลเอง
ช่วยให้คุณสามารถสร้างโมดูลในapp/codeโฟลเดอร์และในvendorโฟลเดอร์ได้เช่นกัน
ไม่ว่าคุณจะเพิ่มที่ไหนไฟล์นี้จะถูกเลือกโดย Magento และโมดูลของคุณจะถูกนำมาพิจารณาด้วย


ที่คุณเพิ่มมันหมายความว่าฉันสามารถวางไฟล์นี้ที่ใดก็ได้เช่นบล็อกรุ่นหรือไดเรกทอรีควบคุมหรือไดเรกทอรีอื่น ๆ ? @Marius
Keyur Shah

และมีเหตุผลอะไรเพราะ config.php มีอยู่แล้วที่ @Marius
Keyur Shah

2
ในconfig.phpชื่อโมดูลเท่านั้นที่ปรากฏและสถานะของพวกเขา (เปิด / ปิดการใช้งาน) ไม่มีเส้นทางไปยังโมดูล เช่นเดียวกับที่ฉันพูดในคำตอบregistration.phpให้คุณมีโมดูลนอกapp/code
Marius

3
ดูรายละเอียดเพิ่มเติมได้ที่: maxyek.wordpress.com/2015/03/27/…
Marius

@Marius: ดังนั้นโมดูลไม่ควรทำงานโดยไม่ต้องลงทะเบียน php ใช่มั้ย
Sukeshini

1

ฉันสังเกตเห็นสองสิ่งเปลี่ยนจากเวอร์ชั่นวีโอไอพี 1.0.0-beta (ตุลาคม) เป็น Magento ver 2.0.0-rc2
1. เพิ่มไฟล์ใหม่ในโฟลเดอร์รูทของโมดูลที่เรียกว่า registration.php เช่น: -app \ code \ Sugarcode \ Test \ registration.php

<?php
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Sugarcode_Test',
    __DIR__
);

2. event.xml มีการเปลี่ยนแปลงก่อนหน้านี้เราพูดถึงชื่อวิธีในแท็กผู้สังเกตการณ์ใน event.xml ตอนนี้วิธีการถูกลบออก juts คุณต้องพูดถึงอินสแตนซ์เท่านั้นที่เป็น

<?xml version="1.0"?>    
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
        <event name="sales_order_grid_collection_load_before">
            <observer name="sales_order_grid_test" instance="Sugarcode\Test\Observer\Addtest" />
        </event>

    </config>

และในโฟลเดอร์ / ModuleName / Observer คุณต้องสร้างไฟล์ที่มีฟังก์ชั่น

public function execute()

นั่นคือ

<?php

namespace Sugarcode\Test\Observer;

class Addtest
{


    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $obj=$observer->getEvent()->getOrderGridCollection();
        $obj->getSelect()->joinLeft(
            ['testt' => 'testtable'],
            "(main_table.entity_id = testt.id)",
            [
                'testt.title as title'
            ]
        );
        //$this->printlogquery(true); 
        //return $obj;
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.