Почему registration.php добавлено в magento-2.0.0-RC?


Недавно был запущен magento-2.0.0-RC, и они добавили registration.php в корневую папку каждого модуля? Так что я просто хочу знать, есть ли для этого какая-то причина?

Может ли кто-нибудь пролить свет на это?

Author: Raphael at Digital Pianism, 2015-11-10

2 answers

registration.php это своего рода точка входа в ваш модуль. Это эквивалент app/etc/modules/[Namespace]_[Module].xml из Magento 1.
Но теперь это часть самого модуля.
это позволяет создавать модули в папке app/code, а также в папке vendor.
Независимо от того, где вы его добавите, этот файл будет подобран Magento, и ваш модуль будет принят во внимание.

 12
Author: Marius, 2015-11-10 09:12:47

Я заметил, что две вещи были изменены с версии 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;
    }
}
 1
Author: Pradeep Kumar, 2015-11-17 04:39:57