Bagaimana cara menambahkan pembantu kustom di modul saya?


9

Bagaimana cara membuat Helper baru atau mengganti / menulis ulang Core Helper di modul Magento 2?

Saya mencoba menambahkan ketergantungan ke module.xmlModul Kustom saya , tetapi tidak memuat kelas Helper sama sekali.

Di bawah ini adalah milik saya 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="Company1_Module1" schema_version="1.0.0" setup_version="1.0.0">
        <sequence>Magento_Directory</sequence>
  </module>
</config>

Jawaban:


20

Membuat: app/code/Company1/Module1/composer.json

{
    "name": "company1 / module-module1",
    "deskripsi": "",
    "wajib": {
        "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. *"
    },
    "ketik": "magento2-module",
    "versi": "100.0.0",
    "lisensi": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "autoload": {
        "file": ["registrasi.php"],
        "psr-4": {
            "Company1 \\ Module1 \\": ""
        }
    }
}

Membuat: app/code/Company1/Module1/registration.php

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

Membuat: 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: Module / etc / module.xsd">
    <module name = "Company1_Module1" setup_version = "2.0.0">
        [selanjutnya]
            <module name = "Magento_Directory" />
        </afterence>
    </module>
</config>

Pembuatan modul selesai. Jadi sekarang buat kelas helper di dalam folder Helper .

app/code/Company1/Module1/Helper/Data.php:

namespace Company1 \ Module1 \ Helper;

Data kelas meluas \ Magento \ Framework \ App \ Helper \ AbstractHelper
{
    fungsi publik someMethod ()
    {
        return 1;
    }
}

Cara menggunakan class helper di dalam controller

$this->_objectManager->create('Company1\Module1\Helper\Data')->someMethod();

Cara menggunakan kelas helper di dalam blok

fungsi publik __construct (
        \ Magento \ Framework \ View \ Element \ Template \ Context $ context,
        \ Company1 \ Module1 \ Helper \ Data $ helper,
        array $ data = []
    ) {
        $ this-> helper = $ helper;
        parent :: __ construct ($ context, $ data);
    }

Begitu $this->helperjuga contoh Data.

Untuk menimpa kelas apa pun Anda dapat menggunakan preferensi .

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">
    <preferensi untuk = "Magento \ Directory \ Helper \ Data" type = "Company1 \ Module1 \ Helper \ Data" />
</config>

Anda juga dapat menggunakan plugin. Plugin adalah cara terbaik untuk mengatasi konflik penulisan ulang. untuk informasi lebih lanjut contoh plugin

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.