เมื่อเร็ว ๆmagento-2.0.0-RC
นี้เปิดตัวและพวกเขาเพิ่มregistration.php
ในทุกโฟลเดอร์รูตโมดูล ดังนั้นฉันแค่อยากรู้ว่ามีเหตุผลอะไรบ้าง?
ใครบางคนสามารถจุดไฟนี้
เมื่อเร็ว ๆmagento-2.0.0-RC
นี้เปิดตัวและพวกเขาเพิ่มregistration.php
ในทุกโฟลเดอร์รูตโมดูล ดังนั้นฉันแค่อยากรู้ว่ามีเหตุผลอะไรบ้าง?
ใครบางคนสามารถจุดไฟนี้
คำตอบ:
registration.php
เป็นจุดเริ่มต้นของโมดูลของคุณ มันเทียบเท่าapp/etc/modules/[Namespace]_[Module].xml
จาก Magento 1
แต่ตอนนี้เป็นส่วนหนึ่งของโมดูลเอง
ช่วยให้คุณสามารถสร้างโมดูลในapp/code
โฟลเดอร์และในvendor
โฟลเดอร์ได้เช่นกัน
ไม่ว่าคุณจะเพิ่มที่ไหนไฟล์นี้จะถูกเลือกโดย Magento และโมดูลของคุณจะถูกนำมาพิจารณาด้วย
config.php
ชื่อโมดูลเท่านั้นที่ปรากฏและสถานะของพวกเขา (เปิด / ปิดการใช้งาน) ไม่มีเส้นทางไปยังโมดูล เช่นเดียวกับที่ฉันพูดในคำตอบregistration.php
ให้คุณมีโมดูลนอกapp/code
ฉันสังเกตเห็นสองสิ่งเปลี่ยนจากเวอร์ชั่นวีโอไอพี 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;
}
}