Почему registration.php добавлено в magento-2.0.0-RC?
Недавно был запущен magento-2.0.0-RC
, и они добавили registration.php
в корневую папку каждого модуля? Так что я просто хочу знать, есть ли для этого какая-то причина?
Может ли кто-нибудь пролить свет на это?
2 answers
registration.php
это своего рода точка входа в ваш модуль. Это эквивалент app/etc/modules/[Namespace]_[Module].xml
из Magento 1.
Но теперь это часть самого модуля.
это позволяет создавать модули в папке app/code
, а также в папке vendor
.
Независимо от того, где вы его добавите, этот файл будет подобран Magento, и ваш модуль будет принят во внимание.
Я заметил, что две вещи были изменены с версии Magento 1.0.0-бета (октябрь) на версию Magento 2.0.0-rc2
1. добавлен новый файл в корневую папку модуля под названием registration.php
ex:-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 теперь метод был удален, вам нужно упомянуть только экземпляр, который является
<?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;
}
}