Создайте: app/code/Company1/Module1/composer.json
{
"имя": "компания1 / модуль-модуль1",
"описание": "",
"Требовать": {
"php": "~ 5.5.0 | ~ 5.6.0 | ~ 7.0.0",
"magento / framework": "100.0. *",
"magento / module-ui": "100.0. *",
"magento / module-config": "100.0. *",
"magento / module-directory": "100.0. *"
},
"type": "magento2-module",
"версия": "100.0.0",
"лицензия": [
"ОСЛ-3.0",
"AFL-3.0"
],
"автозагрузка": {
"files": ["registration.php"],
"PSR-4": {
"Company1 \\ Module1 \\": ""
}
}
}
Создайте: app/code/Company1/Module1/registration.php
\ Magento \ Framework \ Component \ ComponentRegistrar :: регистр (
\ Magento \ Framework \ Component \ ComponentRegistrar :: МОДУЛЬ,
'Company1_Module1',
__DIR__
);
Создайте: app/code/Company1/Module1/etc/module.xml
<? xml version = "1.0"?>
<config xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = "urn: magento: framework: Модуль / etc / module.xsd">
<module name = "Company1_Module1" setup_version = "2.0.0">
<Последовательность>
<module name = "Magento_Directory" />
</ Последовательность>
</ Модуль>
</ Config>
Создание модуля завершено. Теперь создайте вспомогательный класс внутри папки Helper .
app/code/Company1/Module1/Helper/Data.php
:
Пространство имен Company1 \ Module1 \ Helper;
Класс Data extends \ Magento \ Framework \ App \ Helper \ AbstractHelper
{
публичная функция someMethod ()
{
возврат 1;
}
}
Как использовать вспомогательный класс внутри контроллера
$this->_objectManager->create('Company1\Module1\Helper\Data')->someMethod();
Как использовать вспомогательный класс внутри блока
публичная функция __construct (
\ Magento \ Framework \ View \ Element \ Template \ Context $ context,
\ Company1 \ Module1 \ Helper \ Data $ helper,
массив $ data = []
) {
$ this-> helper = $ helper;
конструкция parent :: __ ($ context, $ data);
}
Так $this->helper
что теперь экземпляр данных.
Для перезаписи любого класса вы можете использовать предпочтения .
app/code/Company1/Module1/etc/di.xml
:
<xml version = "1.0"?>
<config xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = "urn: magento: framework: ObjectManager / etc / config.xsd">
<preference for = "Magento \ Directory \ Helper \ Data" type = "Company1 \ Module1 \ Helper \ Data" />
</ Config>
Вы также можете использовать плагин. Плагин - лучший способ преодолеть конфликт переписывания. для получения дополнительной информации пример плагина