Почему registration.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
Кейур Шах

И есть ли причина для этого, потому что config.php уже существует @Marius
Кейур Шах

2
в config.phpтолько модуле появляются имена и их состояние (включено / выключено). Там нет пути к модулю. Как я уже сказал в ответе, registration.phpпозволяет иметь модули снаружиapp/code
Мариус

3
См. Это для более подробной информации: maxyek.wordpress.com/2015/03/27/…
Marius

@Marius: То есть модуль не должен работать без registration.php, верно?
Sukeshini

1

я заметил, что две вещи были изменены с версией Magento. 1.0.0-бета (октябрь) до Magento вер. 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. Теперь метод был удален, но нужно упомянуть только тот экземпляр, который является

<?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;
    }
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.