Чому в magento-2.0.0-RC додано register.php?


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
Маріус

3
Дивіться це для більш детальної інформації: maxyek.wordpress.com/2015/03/27/…
Маріус

@Marius: Отже, модуль не повинен працювати без регистрации.php правильно?
Сукешині

1

Я помітив, що від Magento ver було змінено дві речі. 1.0.0-бета (жовтень) до Magento ver. 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;
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.