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ą

PIM Data Syndication Illustration
30.04.2024

Syndykacja danych / Skuteczne zarządzanie informacjami

Product Information Management

Adekwatne, sprawdzone informacje są prawdziwą siłą. Dla firm działających w różnych branżach stanowią często znaczący czynnik sukcesu w komunikacji z klientami i partnerami. Do optymalnego zarządzania informacjami służą systemy PIM (Product Information Management). Umożliwiają organizacjom skuteczne gromadzenie, zarządzanie i dystrybucję...

23.04.2024

AI w marketingu / Przegląd możliwości

AI

„W dynamicznie rozwijającym się świecie biznesu, optymalizacja marketingu odgrywa coraz ważniejszą rolę”. Tak zapewne zaczynałby się kolejny artykuł wygenerowany przez sztuczną inteligencję. Bez obaw! Choć jesteśmy fanami AI, to poniższy tekst został napisany przez człowieka. Przygotowaliśmy dla Ciebie przegląd najważniejszych...

PIM in Marketplace Platform
16.04.2024

Rola systemów PIM na platformach marketplace

E-Commerce

Dobrej jakości, kompletne informacje produktowe pozwalają sprzedawcom w odpowiedni sposób zaprezentować asortyment, a klientom znaleźć dokładnie to, czego szukają. Najpopularniejsze platformy marketplace działają niemalże jak wyszukiwarki, pozwalając konsumentom na zaawansowane filtrowanie ofert za pomocą wielu słów kluczowych i różnych...

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>