Как создать расширение Hello World в Magento 2

Опубликовано: 2017-04-25

Мы собираемся создать очень простое расширение в Magento 2. Когда закончите, в выводе расширения будет сказано: «Здравствуйте, Weblizar, это ваше первое расширение для Magento, привет, мир! ” в содержимом блока на пользовательском внешнем маршруте. Давайте узнаем, как создать расширение в magento 2 с hello world в качестве нашего вывода.

Требование:

В списке у вас есть последняя версия Magento 2, которая на данный момент 2.1. Установлен в вашей локальной системе.

Прежде чем мы начнем разработку расширения для Magento 2, люди часто забывают о двух вещах, которые мы рекомендуем вам сделать:

1. Отключить кеш Magento

Отключение кеша Magento во время разработки сэкономит вам время, потому что вам не нужно будет вручную очищать кеш каждый раз, когда вы вносите изменения в свой код.

Самый простой способ отключить кеш — перейти в Admin => System => Cache Management => выбрать все типы кеша и отключить их.

2. Переведите Magento в режим разработчика

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

Для этого откройте свой терминал и перейдите в корень Magento 2. Оттуда вы должны запустить следующую команду:

php bin/magento развернуть: режим: установить разработчика

Как создать расширение в Magento:

Создание файлов и папок расширения:
Настройка расширения
Первый шаг — создать папку расширения и необходимые файлы, необходимые для регистрации расширения Magento.
1. Создайте следующие папки:

  • приложение/код/Weblizar
  • приложение/код/Weblizar/Helloworld

Папка Weblizar — это пространство имен расширения, а Helloworld — имя расширения.
Примечание. Если у вас нет папки с кодом в каталоге приложения, создайте ее вручную.

2. Теперь, когда у нас есть папка расширения, нам нужно создать файл module.XML в папке app/code/Weblizar/Helloworld/etc со следующим кодом:

<?xml версия=”1.0″?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<имя модуля = «Weblizar_Helloworld» setup_version = «1.0.0» ></module>
</config>

3. Для регистрации модуля создайте файл Registration.php в папке app/code/Weblizar/Helloworld со следующим кодом:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Weblizar_Helloworld',
__КАТАЛОГ__
); ?>

4. Откройте свой терминал и перейдите в корень Magento 2. Запустите оттуда следующую команду:

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

Если вы хотите убедиться, что расширение установлено, вы можете перейти в Admin => Stores => Configuration => Advanced => Advanced и проверить, что расширение присутствует в списке, или вы можете открыть app/etc/config.php и проверьте массив на наличие ключа «Weblizar_Helloworld», значение которого должно быть установлено на 1.

панель администратора magento при создании расширения

Создание контроллера

1. Сначала нам нужно определить маршрутизатор. Для этого создайте файл route.XML в папке app/code/Weblizar/Helloworld/etc/frontend со следующим кодом:

<?xml версия=”1.0″?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<идентификатор маршрутизатора="стандартный">
<route id="helloworld" frontName="helloworld">
<module name="Weblizar_Helloworld" />
</маршрут>
</маршрутизатор>
</config>

Здесь мы определяем наш внешний маршрутизатор и маршрут с идентификатором «helloworld».

Атрибут frontName будет первой частью нашего URL.

В Magento 2 URL создаются следующим образом:
<frontName>/<controler_folder_name>/<controller_class_name>

Итак, в нашем примере конечный URL будет выглядеть так:

привет мир/индекс/индекс

2. Теперь мы создаем файл контроллера Index.php в папке app/code/Weblizar/Helloworld/Controller/Index со следующим кодом:

<?php

пространство имен Weblizar\Helloworld\Controller\Index;

используйте Magento\Framework\App\Action\Context;

Индекс класса расширяет \Magento\Framework\App\Action\Action
{
защищенный $_resultPageFactory;

публичная функция __construct(Context $context, \Magento\Framework\View\Result\PageFactory $resultPageFactory)
{
$this->_resultPageFactory = $resultPageFactory;
родитель::__конструкт($контекст);
}

публичная функция выполнить()
{
$resultPage = $this->_resultPageFactory->create();
вернуть $resultPage;
}
}

В Magento 2 у каждого действия есть свой класс, реализующий метод execute().

Создание блока

Мы создадим простой блочный класс с методом getHelloWorldTxt(), который возвращает строку «Hello world».

1. Создайте файл Helloworld.php в папке app/code/Weblizar/Helloworld/Block со следующим кодом:

<?php
пространство имен Weblizar\Helloworld\Block;

класс Helloworld расширяет \Magento\Framework\View\Element\Template
{
публичная функция getHelloWorldTxt()
{
return 'Hello Weblizar, это ваше первое расширение hello world magento!';
}
}

Создание макета и файлов шаблонов

В Magento 2 файлы макетов и шаблоны помещаются в папку просмотра внутри вашего расширения. Внутри папки представления у нас может быть три подпапки: adminhtml, base и frontend.
Папка adminhtml используется для администратора, папка внешнего интерфейса используется для внешнего интерфейса, а базовая папка используется как для файлов администратора, так и для внешнего интерфейса.

1. Сначала мы создадим файл helloworld_index_index.XML в папке app/code/Weblizar/Helloworld/view/frontend/layout со следующим кодом:

<страница xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib /внутренний/Magento/Фреймворк/
View/Layout/etc/page_configuration.xsd” layout="1column">
<тело>
<referenceContainer name="content">
<block class="Weblizar\Helloworld\Block\Helloworld" name="helloworld" template="helloworld.phtml" />
</referenceContainer>
</тело>
</страница>

Каждая страница имеет дескриптор макета, и для нашего действия контроллера дескриптор макета — helloworld_index_index. Вы можете создать файл конфигурации макета для каждого маркера макета.

В нашем файле макета мы добавили блок в контейнер содержимого и установили шаблон нашего блока в helloworld.phtml, который мы создадим на следующем шаге.

2. Создайте файл helloworld.phtml в папке app/code/Weblizar/Helloworld/view/frontend/templates со следующим кодом:

<h1><?php echo $this->getHelloWorldTxt(); ?></h1>

Переменная $this ссылается на наш класс блока, и мы вызываем метод getHelloWorldTxt(), который возвращает строку «Hello world!».

И это все. Откройте URL-адрес /helloworld/index/index в своем браузере, и вы должны получить что-то вроде этого и

создать расширение в выводе magento

Нажмите здесь, чтобы загрузить расширение hello world для magento