Membuat module sederhana di Magento 2

Controller adalah salah satu hal penting dalam  membuat Module dalam Magento 2, dan juga dalam kontek PHP MVC Framework pada umumnya. Fungsionalitasnya adalah request yang diterima, memproses, dan merender halaman.

Dalam Magento 2 Controller hal ini dapat terlihat sangat berbeda dangan PHP Framework lainnya karena bisa memiliki  lebih dari satu file yang berada dalam folder Controller modul. Dalam kasus ini akan mulai terasa perbedaan mencolok dengan PHP Framework lainnya.

Saya akan meneruskan catatan ini dari post sebelumnya tentang bagaimana cara membuat Modul Kosong. Perlu lihat cara install dan setup pertama kali? cek disini.

Langkah 1: Membuat file routes.xml.

$ cd app/code/Mojambe/Blog/
$ mkdir etc/frontend
$ touch etc/frontend/routes.xml

routes.xml berlokasi di bawah blog/etc


Isi dari file 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="blog" id="blog_home">
<module name="Mojambe_Blog"/>
</route>
</router>
</config>


Langkah 2: Membuat file controller.

$ mkdir -p Controller/Home/
$ touch Controller/Home/Home.php

Home.php

<?php
namespace Mojambe\Blog\Controller\Home;

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

class Home extends Action
{
    protected $_pageFactory;

    public function __construct(Context $context, PageFactory $pageFactory)
    {
        $this->_pageFactory = $pageFactory;
        return parent::__construct($context);
    }

    public function execute()
    {
        return $this->_pageFactory->create();
    }
}


Langkah 4: Buat file Layout (blog_home_index_home.xml)

blog_index_home.xml rubah jadi blog_home_index_home.xml (lihat ini)

Catatan:
blog_index_home.xml rubah jadi blog_home_index_home.xml (lihat ini)


blog_home_index_home.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<referenceContainer name="content">
<block class="Mojambe\Blog\Controller\Home" name="blog_index_home" template="Mojambe_Blog::posts.phtml" />
</referenceContainer>
</page>


Ingat!!!!!!!!!

Nama file blog_home_index_home.xml  ini memiliki prefix blog_home  dari nama route disini:


Langkah 5: Buat file Block

Block/Posts.php

Posts.php

<?php
namespace Mojambe\Blog\Block;

use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;

class Posts extends Template
{
public function __construct(Context $context) {
parent::__construct($context);
}

public function sayHello()
    {
        return __('Hello World');
    }
}

Langkah 6: Buat file template posts.phtml

Template: view/frontend/templates/posts.phtml

posts.phtml

<h2>hai kawan mojambe!</h2>
<p> <?php echo $block->sayHello(); ?> </p>

Langkah 7: Flush cache Magento

Cache Management


Flush Cache

Set berikut sebagai disabled.


Disable bagian ini. (bila gagal beri akses: chmod -R 777 app/etc/)

3 ini wajib disable.



Bagaimana cara flush cache Magento?  


Langkah 8: Coba di browser


Hai, ada yang salah dikit, rubah folder Controller/Home/Home.php jadi Controller/Index/Home.php
jangan lupa juga rubah ini (home jadi index):




Seuaikan juga ini.

Struktur foldernya lihat, terutama bagian controller. 

Jalankan perintah berikut untuk reload semua hal.

./bin/magento setup:upgrade && chmod -R 777 generated/ var/ 

Hasilnya

Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Numpang Kerja Remote dari Bandung Digital Valley

Cara Decompile berkas Dex dan Apk Android