Как создать простой модуль в magento 2

8

Я новичок в magento2.

Я хочу создать простой модуль Hello World в magento 2.

Как создать этот модуль?

Сараванан Д.С.
источник
2
Похоже, что кто-то не может использовать поисковую систему или слишком ленив для этого.
Жюльен Лачал

Ответы:

8

Ну, это широкий вопрос, но мой лучший совет - проверить официальные образцы Magento 2.

Вы можете найти их здесь: https://github.com/magento/magento2-samples

Этот проект представляет собой набор примеров для демонстрации технологий, представленных в Magento 2. Вы найдете самое простое расширение вместе с примерами, которые постепенно добавляют функции, которые помогут вам в изучении и изучении платформы Magento 2.

Кроме того, вы можете найти множество учебных пособий, если будете искать «magento 2 create module» в Google

Рафаэль в цифровом пианизме
источник
10

Давайте назовем модуль StackExchange_HelloWorld.
вам понадобятся эти файлы:

app/code/StackExchange/HelloWorld/registration.php - регистрационный файл

<?php 
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'StackExchange_HelloWorld',
    __DIR__
);

app/code/StackExchange/HelloWorld/etc/module.xml - файл декларации модуля

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="StackExchange_HelloWorld" setup_version="2.0.0" />
</config>

app/code/StackExchange/HelloWorld/etc/frontend/routes.xml - файл маршрутизации внешнего интерфейса

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="helloworld" frontName="helloworld">
            <module name="StackExchange_HelloWorld" />
        </route>
    </router>
</config>

app/code/StackExchange/HelloWorld/Controller/Index/Index.php - контроллер индекса

<?php 
namespace StackExchange\HelloWorld\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends \Magento\Framework\App\Action\Action
{
     protected $resultPageFactory;
     public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    )
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    public function execute()
    {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->set(__('Hello World'));
         return $resultPage;
    }
}

app/code/StackExchange/HelloWorld/view/frontend/layout/helloworld_index_index.xml - файл макета

<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Framework\View\Element\Template" template="StackExchange_HelloWorld::index.phtml" />
        </referenceContainer>
    </body>
</page>

app/code/StackExchange/HelloWorld/view/frontend/templates/index.phtml - шаблон для блока

 <h2>Hello World</h2>

после того, как вы закончите, запустите это в консоли

Настройка php bin / magento: обновление

Вы должны быть в состоянии увидеть результат в URL [ROOT]/helloworld

Мариус
источник
Спасибо @Marius. Я попробовал это. Это не работает. Показывает ошибку 404.
Сараванан Д.С.
Ваш модуль включен? Это появляется в system-> configuration?
Мариус
да. включен и отображается в системе-> конфигурация.
Сараванан Д.С.
ХОРОШО. Я попробую еще раз и отредактирую ответ, если это необходимо.
Мариус
1
Я думаю, что нашел проблему. routes.xmlФайл должен быть помещен в app/code/StackExchange/HelloWorld/etc/frontendне app/code/StackExchange/HelloWorld/frontend. Там etcпропал без вести. И я забыл 2 useпункта в файле контроллера. Смотрите мой ответ на обновление.
Мариус
1

Я также только что попробовал вчера, и мне удалось создать свой собственный модуль hello world magento 2. Я следовал этому уроку, чтобы создать простой модуль Magento 2 , там 6 шагов, как показано ниже

=> Шаг 1: Создайте папку модуля:

Приложение / код / ​​Magentoexplorer / Helloworld

=> Шаг 2: Добавьте module.xml, чтобы объявить модуль

    <?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Magentoexplorer_Helloworld" setup_version="1.0.0" />
</config>

=> Шаг 3: Создайте registration.php для регистрации модуля

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Magentoexplorer_Helloworld',
    __DIR__
);

=> Шаг 4: Как установить, включить или отключить / удалить модуль

cd [magento_directory]
php bin/magento setup:upgrade

=> Шаг 5: Маршрут модуля. Создайтеapp/code/Magentoexplorer/Helloworld/etc/frontend/routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="magentoexplorer" frontName="helloworld">
            <module name="Magentoexplorer_Helloworld" />
        </route>
    </router>
</config>

=> Шаг 6: Контроллер и действие.

Приложение / код / ​​Magentoexplorer / Helloworld / Index / index.php

<?php
namespace Magentoexplorer\Helloworld\Controller\Index;

class Display extends \Magento\Framework\App\Action\Action
{
  public function __construct(
\Magento\Framework\App\Action\Context $context)
  {
    return parent::__construct($context);
  }

  public function execute()
  {
    echo 'Hello World';
    exit;
  }
}
Брайан
источник
0

Самый простой модуль достаточно прост:

  • Внутри app/codeсоздайте свою папку для Vendor и Module. Т.е.app/code/MyCompany/FirstModule
  • Внутри FirstModuleпапки добавьтеregistration.php

    DIR);

  • Внутри той же папки создайте etcпапку, какapp/code/MyCompany/FirstModule/etc

  • В etcпапке создайтеmodule.xml

И вуаля. Вот и все. Теперь вы можете активировать свой модуль через SSH с помощью bin/magento module:enable MyCompany_FirstModuleкоманды.

Алекс Тиммер
источник
0

Ниже учебник для простого модуля

https://www.mageplaza.com/magento-2-module-development/

Вы также можете скачать ниже модуль

https://github.com/tzyganu/Magento2SampleModule

Для Magento 2 доступно множество создателей модулей. Вот несколько ссылок

http://cedcommerce.com/magento-2-module-creator/

https://amasty.com/magento-2-module-creator.html

Надеюсь, поможет :)

Анкит Шах
источник
0

Чтобы создать модуль в Magento 2, необходимо выполнить следующие шаги:

  1. Создать каталоги.
  2. Конфигурация модуля
  3. Регистрация модуля
  4. Файл внешнего маршрутизатора
  5. Создать контроллер
  6. Создать блок
  7. Файл макета внешнего интерфейса
  8. Файл шаблона внешнего интерфейса
  9. Активация модуля
Сайед Муниб Уль Хасан
источник
0

Создать модуль Hello World в Magento 2.

Для лучшего использования PHP Storm

Чтобы создать модуль Hello World, вам необходимо выполнить следующие высокоуровневые шаги:

Лучшая практика использования PHP Storm

Шаг 1: Создайте папку модуля Hello World

Шаг 2: Создать модуль

Шаг 3: Зарегистрируйте созданный модуль

Шаг 4: Включить модуль

Шаг 1: создайте папку HelloWorld

Имя модуля определяется как «VendorName_ModuleName». Первая часть - это имя поставщика, а последняя часть - это имя модуля: Например: Sathya_HelloWorld.

##### создать каталог файлов как

Magento2/app/code/Sathya/HelloWorld

Шаг 2: Создать модуль

необходимо создать папку etc и добавить файл module.xml
app/code/Sathya/HelloWorld/etc/module.xml

Содержание будет:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
   <module name="Sathya_HelloWorld" setup_version="1.0.0">
   </module>
</config>

Шаг 3: Зарегистрируйте созданный модуль

Создать файл Registration.php

 app/code/Sathya/HelloWorld/registration.php

Содержание будет:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Sathya_HelloWorld',
    __DIR__
);

Шаг 4: Включить модуль

Перед включением модуля убедитесь, что модуль создан или нет. Для этого выполните команду из корневого каталога Magento как.

 php bin/magento module:status

В нем перечислены все отключенные модули

###### Sathya_HelloWorld

Чтобы включить модуль, выполните команду как:

 php bin/magento module:enable Sathya_HelloWorld
Также есть еще один способ включить его. Который будет объяснен позже.

Обновите базу данных: Запустите «bin / magento setup: upgrade» из корневого каталога Magento.

Давайте запустим команду:

  php bin/magento setup:upgrade

Пожалуйста, запустите

  php bin/magento setup:static-content:deploy

Затем запустить (необязательно)

  php bin/magento setup:static-content:deploy -f

Чтобы добавить маршрут, необходимо создать файл rout.xml

app/code/Sathya/HelloWorld/etc/frontend/routes.xml

Содержание будет:

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route frontName="helloworld" id="helloworld">
            <module name="Sathya_HelloWorld"/>
        </route>
    </router>
</config>

Каталог и файл, который вам нужно создать:

app/code/Sathya/HelloWorld/Controller/Index/Test.php

Содержание будет:

<?php
namespace Sathya\HelloWorld\Controller\Index;

class Test extends \Magento\Framework\App\Action\Action
{
    protected $_pageFactory;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\View\Result\PageFactory $pageFactory)
    {
        $this->_pageFactory = $pageFactory;
        return parent::__construct($context);
    }

    public function execute()
    {
        echo "Hello World";
        exit;
    }
}

После завершения, пожалуйста, запустите команду, чтобы очистить кеш

php bin/magento c:f

Проверьте ваш модуль, введя URL-адрес теперь должен быть следующим:

 http://< YourDomain.com >/helloworld/index/test
Sathya
источник