Cara membuat modul sederhana di magento 2

8

Saya baru mengenal magento2.

Saya ingin membuat modul Hello World sederhana di magento 2.

Bagaimana cara membuat modul ini?

Saravanan DS
sumber
2
Bagi saya terdengar seperti seseorang tidak dapat menggunakan mesin pencari atau terlalu malas untuk melakukannya.
Julien Lachal

Jawaban:

8

Nah ini pertanyaan yang luas tetapi saran terbaik saya adalah memeriksa sampel resmi Magento 2.

Anda dapat menemukannya di sini: https://github.com/magento/magento2-samples

Proyek ini adalah kumpulan sampel untuk menunjukkan teknologi yang diperkenalkan di Magento 2. Anda akan menemukan ekstensi paling sederhana bersama dengan sampel yang secara bertahap menambahkan fitur untuk menuntun Anda melalui eksplorasi dan pendidikan platform Magento 2.

Selain itu, Anda dapat menemukan banyak tutorial jika Anda mencari "magento 2 create module" di Google

Raphael di Digital Pianism
sumber
10

Sebutkan modulnya StackExchange_HelloWorld.
Anda membutuhkan file-file ini:

app/code/StackExchange/HelloWorld/registration.php - file pendaftaran

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

app/code/StackExchange/HelloWorld/etc/module.xml - file deklarasi modul

<?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 - file routing frontend

<?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 - pengontrol indeks

<?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 - file tata letak

<?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 - templat untuk blok

 <h2>Hello World</h2>

setelah Anda selesai, jalankan ini di konsol

setup php bin / magento: tingkatkan

Anda harus dapat melihat hasilnya di url [ROOT]/helloworld

Marius
sumber
Terima kasih @Marius. Saya sudah mencoba ini. Ini tidak bekerja. Menampilkan 404 kesalahan.
Saravanan DS
Apakah modul Anda diaktifkan? Apakah ini muncul di konfigurasi sistem->?
Marius
Iya. diaktifkan dan ditampilkan dalam konfigurasi sistem->.
Saravanan DS
BAIK. saya akan mencoba lagi dan mengedit jawabannya jika diperlukan.
Marius
1
Saya pikir saya menemukan masalahnya. The routes.xmlfile harus ditempatkan di app/code/StackExchange/HelloWorld/etc/frontendtidak app/code/StackExchange/HelloWorld/frontend. Ada yang etchilang. Dan saya lupa 2 useklausa dalam file controller. Lihat jawaban pembaruan saya.
Marius
1

Saya juga baru mencoba kemarin dan berhasil membuat modul Hello World Magento 2 saya sendiri. Saya mengikuti tutorial ini untuk membuat modul Magento 2 sederhana , ada 6 langkah seperti di bawah ini

=> Langkah 1: Buat folder modul:

aplikasi / kode / Magentoexplorer / Helloworld

=> Langkah 2: Tambahkan module.xml untuk mendeklarasikan modul

    <?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>

=> Langkah 3: Buat registrasi.php untuk mendaftarkan modul

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

=> Langkah 4: Cara Memasang, Mengaktifkan atau Menonaktifkan / menghapus modul

cd [magento_directory]
php bin/magento setup:upgrade

=> Langkah 5: Rute modul. membuatapp/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>

=> Langkah 6: Kontroler dan aksi.

app / code / 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;
  }
}
Brian
sumber
0

Modul paling sederhana cukup mudah:

  • Di dalam, app/codebuat folder Anda untuk Vendor dan Modul. Yaituapp/code/MyCompany/FirstModule
  • Di dalam FirstModulefolder tambahkan aregistration.php

    DIR);

  • Di dalam folder yang sama, buat etcfolder, sepertiapp/code/MyCompany/FirstModule/etc

  • Di etcfolder buat amodule.xml

Dan voila. Itu dia. Anda sekarang dapat mengaktifkan modul Anda melalui SSH dengan bin/magento module:enable MyCompany_FirstModuleperintah.

Alex Timmer
sumber
0

Untuk membuat modul di Magento 2, langkah-langkah berikut diperlukan:

  1. Buat direktori.
  2. Konfigurasi Modul
  3. Pendaftaran Modul
  4. File Router Ujung Depan
  5. Buat Pengendali
  6. Buat Blokir
  7. File tata letak frontend
  8. File Template Frontend
  9. Aktivasi Modul
Syed Muneeb Ul Hasan
sumber
0

Untuk membuat modul Hello World di Magento 2.

Untuk Penggunaan PHP Storm Terbaik

Untuk membuat modul Hello World, Anda harus menyelesaikan langkah-langkah tingkat tinggi berikut:

Praktik Terbaik Gunakan PHP Storm

Langkah 1: Buat folder modul Hello World

Langkah 2: Buat modul

Langkah 3: Daftarkan Modul yang Dibuat

Langkah 4: Aktifkan modul

Langkah 1: Buat Folder HelloWorld

Nama modul didefinisikan sebagai "VendorName_ModuleName". Bagian pertama adalah nama vendor dan bagian terakhir adalah nama modul: Misalnya: Sathya_HelloWorld.

##### buat direktori file sebagai

Magento2/app/code/Sathya/HelloWorld

Langkah 2: Buat Modul

perlu membuat folder dll dan menambahkan file module.xml
app/code/Sathya/HelloWorld/etc/module.xml

Isi akan:

<?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>

Langkah 3: Daftarkan Modul yang Dibuat

Buat file Registration.php

 app/code/Sathya/HelloWorld/registration.php

Isi akan:

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

Langkah 4: Aktifkan modul

Sebelum mengaktifkan Modul, pastikan apakah Modul dibuat atau tidak. Untuk itu jalankan perintah dari direktori root Magento sebagai.

 php bin/magento module:status

Ini Daftar semua Modul Dinonaktifkan

###### Sathya_HelloWorld

Untuk mengaktifkan Modul, jalankan perintah sebagai:

 php bin/magento module:enable Sathya_HelloWorld
Juga ada cara lain untuk mengaktifkannya. Yang akan dijelaskan nanti.

Harap tingkatkan basis data Anda: Jalankan "setup bin / magento: upgrade" dari direktori root Magento.

Mari jalankan perintah:

  php bin/magento setup:upgrade

Tolong jalankan

  php bin/magento setup:static-content:deploy

Kemudian jalankan (opsional)

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

Untuk menambahkan rute, perlu membuat file route.xml

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

Konten akan menjadi:

<?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>

Direktori dan file yang perlu Anda buat adalah:

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

Isi akan:

<?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;
    }
}

Setelah selesai, silakan jalankan perintah untuk menghapus cache

php bin/magento c:f

Periksa Modul Anda dengan memasukkan URL sekarang harus seperti:

 http://< YourDomain.com >/helloworld/index/test
Sathya
sumber