Hello World, czyli jak stworzyć pierwszy moduł na Magento 2.1.5

Z artykułu dowiesz się jak w prosty sposób utworzyć swój pierwszy moduł na Magento 2.1.5. Dla przykładu utworzymy razem moduł wyświetlający blok z napisem „Hello World”, podpowiadając jak zrobić to przy użyciu akcji i kontrolera.

Przygotowanie

Do wykonania tego zadania wykorzystamy Magento w wersji 2.1.5. Przed samym rozpoczęciem prac warto rozpatrzyć dwa poniższe punkty, które mogą się również okazać pomocne w tym i innych zadaniach związanych z pracą z Magento 2.

1. Wyłączenie pamięci podręcznej

Wyłączenie pamięci podręcznej jest bardzo pomocne w procesie budowy nowego modułu. Dzięki temu nie będziemy musieli jej czyścić za każdym razem kiedy dokonamy jakiejś zmiany i będziemy chcieli obejrzeć efekty swoich prac.

Jak wyłączyć pamięć podręczną?
Admin → System → Cache Management → zaznaczenie wszystkich i wyłączenie.

2. Magento tryb „developer”

Włączenie trybu „developer” pozwala na wyświetlanie wszystkich błędów związanych z wytwarzaniem nowego kodu.

Jak włączyć tryb „developer”?
Przejdź do katalogu głównego i uruchom polecenie:

$ php bin/magento deploy:mode:set developer

Tworzymy moduł

Podstawowa konfiguracja

W Magento 2 w odróżnieniu do pierwszej wersji, wszystkie moduły umieszczamy w odpowiednich przestrzeniach nazw w katalogu „app/code” np. „app/code/Foo/Bar”, więc naszym pierwszym krokiem będzie stworzenie wymaganych plików do zarejestrowania nowego modułu:

1. Stwórz odpowiednie foldery:

– app/code/Unity
– app/code/Unity/Helloworld

Katalog Unity jest przestrzenią nazw, a Helloworld nazwą modułu.

!Ważne – jeżeli nie posiadasz katalogu code stwórz go.

2. Po stworzeniu folderów utwórz plik module.xml w katalogu app/code/Unity/Hellowrold/etc i umieść w nim kod:

<?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="Unity_Helloworld" setup_version="1.0.0"></module>
</config>

3. By zarejestrować moduł stwórz plik registration.php w katalogu app/code/Unity/Hellowrold/ i umieść w nim kod:

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

4. Otwórz terminal i w głównym katalogu magento uruchom polecenie:

$ php bin/magento setup:upgrade

By sprawdzić czy moduł zainstalował się poprawnie przejdź w Panelu Administracyjnym do:

Admin → Stores → Configuration → Advanced → Advanced, wyszukaj moduł i sprawdź jego status.

Tworzymy kontroler

1. W pierwszej kolejności zdefiniujemy „router” tworząc plik routers.xml w katalogu app/code/Unity/Hellowrold/etc/frontend i kodem poniżej:

<?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="Unity_Helloworld" />
        </route>
    </router>
</config>

Magento url-e są tworzone na zasadzie:<frontName>/<controler_folder_name>/<controller_class_name>

Więc w naszym przykładzie będzie on wyglądał następująco:
helloworld/index/index

2. Pora na stworzenie akcji. W Magento 2 każdy kontroler może posiadać tylko jedną akcję czyli inaczej niż w pierwszej wersji gdzie akcji mogło być wiele. Tworzymy plik Index.php w katalogu app/code/Unity/Hellowrold/Controller/Index i dodajemy poniższy kod:


&lt;?php
 
namespace Unity\Helloworld\Controller\Index;
 
use Magento\Framework\App\Action\Context;
 
class Index extends \Magento\Framework\App\Action\Action
{
    protected $_resultPageFactory;
 
    public function __construct(Context $context, \Magento\Framework\View\Result\PageFactory $resultPageFactory)
    {
        $this-&gt;_resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }
 
    public function execute()
    {
        $resultPage = $this-&gt;_resultPageFactory-&gt;create();
        return $resultPage;
    }
}

Tworzymy blok

W tej sekcji utworzymy prosty blok z metodą „getText”, która zwróci ciąg znaków Hello world!

1. Tworzymy plik Helloworld.php w katalogu app/code/Unity/Hellowrold/Block i dodajemy poniższy kod:


&lt;?php
namespace Unity\Helloworld\Block;
 
class Helloworld extends \Magento\Framework\View\Element\Template
{
    public function getText()
    {
        return 'Hello world!’;
    }
}

Tworzymy pliki układu i szablonu

W Magento 2 pliki układu i szablonu są trzymane w katalogu view naszego modułu. Zadany katalog może posiadać trzy podkatalogi adminhtml, base i frontend.

• adminhtml – używamy do Panelu Adminsitracyjnego
• frontend – używamy do zmian widocznych dla klienta
• base – posiada domyślne pliki powyższych katalogów

1. W pierwszej kolejności stworzymy plik helloworld_index_index.xml w katalogu app/code/Unity/Helloworld/view/frontend/layout i dodamy do niego kod poniżej:


&lt;page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" layout="1column"&gt;
    &lt;body&gt;
        &lt;referenceContainer name="content"&gt;
            &lt;block class="Unity\Helloworld\Block\Helloworld" name="helloworld" template="helloworld.phtml" /&gt;
        &lt;/referenceContainer&gt;
    &lt;/body&gt;
&lt;/page&gt;

Każda strona może posiadać plik układu strony w naszym przypadku helloworld_index_index gdzie:

<frontName>_<controler_folder_name>_<controller_class_name>

2. Następnie stwórz plik szablonu helloworld.phtml w katalogu app/code/Unity/Helloworld/view/frontend/templates i dodaj do niego kod:

&lt;h1&gt;&lt;?php echo $this-&gt;getText(); ?&gt;&lt;/h1&gt;

Oglądamy efekt

Pod adresem helloworld/index/index w przeglądarce powinna się nam ukazać strona jak poniżej:

Nasi eksperci
/ Dzielą się wiedzą

25.04.2025

Wdrożenie platformy B2B / Od czego zacząć? 

E-Commerce

W świecie, w którym tempo zmian przyspiesza z każdym rokiem, cyfryzacja sprzedaży B2B to już nie wybór – to konieczność. Firmy, które chcą nie tylko utrzymać się na powierzchni, ale też rozwijać skrzydła, coraz częściej sięgają po nowoczesne platformy B2B. To one pozwalają uporządkować procesy, zautomatyzować kluczowe operacje i...

14.04.2025

Shopware vs. Magento – którą platformę e-commerce wybrać dla średnich i dużych projektów?

E-Commerce

Wybór technologii e-commerce to jedna z kluczowych decyzji w planowaniu i rozwoju sklepu internetowego. Odpowiednia platforma może nie tylko zwiększyć sprzedaż, ale również przyspieszyć wdrożenie, obniżyć koszty i ułatwić skalowanie biznesu. W tym artykule porównujemy dwie popularne i bardzo różne platformy: Magento (Open Source i Adobe...

12.03.2025

Internet Rzeczy (IoT) w budownictwie: Bezpieczeństwo i optymalizacja procesów na placu budowy dzięki danym w czasie rzeczywistym 

Digital Experience

Wyobraź sobie plac budowy przyszłości: dźwigi poruszają się z precyzją sterowaną danymi w czasie rzeczywistym, pracownicy noszą inteligentne kaski monitorujące ich bezpieczeństwo, a zużycie materiałów budowlanych jest śledzone z dokładnością co do centymetra.   To nie wizja science-fiction, ale rzeczywistość, która staje się...

Ekspercka wiedza
dla Twojego biznesu

Jak widać, przez lata zdobyliśmy ogromną wiedzę - i uwielbiamy się nią dzielić! Porozmawiajmy o tym, jak możemy Ci pomóc.

Napisz do nas

<dialogue.opened>