od Podstaw
5 godz. 56 min · PHP · Full-stack i Programowanie
Patryk WaluśBackend DeveloperZanim przejdziemy do omawiania możliwości Magento, przedstawię Ci w jaki sposób skonfigurować środowisko developerskie oraz jak zainstalować nowy projekt. Omówimy też polecenia i narzędzia, które są przydatne podczas pracy developerów.
Rozpoczniemy od przedstawienia oraz omówienia funkcji poszczególnych katalogów, które znajdują się w projekcie. Po wstępie stworzymy swój pierwszy moduł oraz przedstawię podstawowe techniki wykorzystywane przez Magento do zarządzania konfiguracjami czy modułami.
Magento wykorzystuje bardzo popularny wzorzec MVC, który składa się z trzech elementów. Aby z łatwością rozumieć jak system obsługuje żądania HTTP najpierw przestawię ogólne działanie MVC, a następnie jak to działa w Magento.
Szczegółowe omówienie wzorca MVC rozpoczniemy od literki C czyli Controller'a. W tym rozdziale dowiesz się jak zarejestrować w systemie nową ścieżkę, jak pobierać parametry oraz w jaki sposób zwrócić rezultat odpowiedni dla danego przypadku.
Gdy już zarejestrujemy nową stronę, konieczne będzie zdefiniowanie jej wyglądu. Dlatego też, przedstawię Ci jak to zrobić oraz jakie możliwości Magento udostępnia do manipulacji układem stron. Omówię różnice między kontenerem, a blokiem oraz pokaże jak modyfikować tagi w sekcji.
Aby wcześniej dodana strona była funkcjonalna, konieczna jest jej integracja z bazą danych. Do tego celu stworzymy m.in. Model, za pomocą którego będziemy komunikować się z MySQL. Przedstawię Ci też dobre praktyki, które pozwalają na tworzenie kodu wysokiej jakości.
W ostatnim rozdziale omówimy konfigurację nowego motywu w Magento. Pozwoli Ci to zrozumieć jak tworzyć różne wersje wyglądu dla sklepów internetowych.
Ten kurs w szczególności przyda się osobom, które chcą poznać podstawy framework'a Magento 2. Przedstawione w nim fundamentalne informacje pomogą zrozumieć sposób działania systemu, a także w jaki sposób można dodawać czy rozszerzać swój projekt o nowe funkcjonalności.
Poprzedniej lekcji stworzyliśmy repozytorium.
Następnie zaimplementowane oraz Get It.
Dzięki tym metodom możemy zarówno
zapisywać dane do bazy danych jak i informacje pobierać z bazy danych.
Teraz przejdziemy do kontrolera sejf oraz model kw.
w którym stosujemy nasz kod do serwisu kontrakt.
Zacznijmy od kontrolera sejf konieczna
będzie modyfikacja aby dodać po pierwsze repozytorium Brand.
Zobaczymy Brandt repozytorium interfejs i za chwilę skąd figuruje w pliku XML w
którym zawarte są konfiguracje wyszukiwania zależności czyli independence
in Action aby to jeśli będzie chciał pobrać interfejs w tym przypadku Brand
interface wskaże jaką klasę powinno zatem stacjonować.
Dlatego też dodajemy nazwę zmiennej.
Następnie konieczne będzie
tak naprawdę możemy usunąć Bractwa które nie będzie ono nam już potrzebne.
Ten ta fabryka służyła do stworzenia nowego modelu natomiast teraz będziemy
obracać się wśród Data Interface czyli w tym przypadku data Brand.
Dlatego też usłyszymy fabrykę modelu i
zamkniemy ją na Brand ABC Data i następnie Brand interface dodajemy oczywiście na
koniec faktury ponieważ będzie trzeba stworzyć nowy obiekt klasy Brand data.
Dodajemy następnie atrybuty do klasy.
Możemy usunąć fabrykę dla modelu tutaj
trochę to uporządkuje i następnie konieczne będzie dostosowanie
metody egzekucji do tego celu wykorzystamy najpierw repozytorium.
Metodę sejf do której konieczne jest
przekazanie właśnie interfejsu danych aby przekazać interfejs danych konieczne
jest jego utworzenie a także skorzystamy teraz z fabryki Brand interface Factory.
Z metody Create.
Rezultat wykonania przypisuje zmiennej
Brand data możemy oznaczyć ją aby nasz edytor kodu w tym przypadku App Store
wiedział że to jest interfejs Brand interface.
Dzięki temu możemy do metody sejf przekazać ten obiekt.
Zanim jednak przejdziemy do przeglądarki konieczne jeszcze będzie uzupełnienie
interfejsu danych o wskazane tutaj informacje poniżej czyli w
tym przypadku nazwę oraz URL możemy sobie skopiować te informacje.
Brand data posiada metodę data.
Natomiast z racji że skorzystamy z interfejsu lepiej będzie jeśli skorzystamy
po prostu z odpowiednich metod czyli w tym przypadku setne do ustawienia nazwy
zmienimy teraz nazwę na BMW aby dodać nową markę.
Następnie zmienimy metodę na SED URL i ustalimy też klucz do naszej marki BMW.
Niech to będzie z małych liter BMW następnie usunięte.
Poniższe utworzenie modelu i w tym
przypadku stworzenie modelu oraz zapis za pomocą metody sejf został zmieniony na po
pierwsze wykorzystanie interfejsu danych a następnie za pomocą Brand repozytorium.
Zapisanie tych informacji do bazy danych konieczne będzie jeszcze na koniec
zmienianie rezultatu ponieważ po pierwsze nie mamy zmiennych Brand jest to teraz
Brand data i tak naprawdę pod spodem tego interfejsu jest interfejs
danych jest obiekt danych czyli data Brand.
Możemy więc wykorzystać G Data ma to poprawnie zalatuje.
Przejdźmy więc teraz do przeglądarki
zmieniamy w adresie URL na Brand View safe.
I pojawił się błąd pojawił się błąd error oprócz dźwięku obiekt kontroler sejf
ma wzięto w folderze generator wygenerowała klasę tzw.
Intercity Raptor która zawiera konstruktor ten konstruktor jednak nie zgadza się z
konstruktorem stworzonych przez nas teraz modyfikacji.
Dlatego też musimy cofnąć się do konsoli i możemy usunąć za pomocą polecenia rm rf
generator Flesz gwiazdka wszystkie klasy które zostały wygenerowane.
Po przejściu do przeglądarki otwieramy stronę.
Może to wygeneruje nowe kasę.
Jednak i teraz pojawił się nowy problem interfejsu i właśnie teraz konieczne
będzie powiedzenie agentom czyli skonfigurować Independence.
Jaka klasa powinna zostać zrealizowana gdy
chcemy skorzystać z interfejsu Brand API Brand repozytorium interfejsu.
Dlatego też cofamy do edytora kodu.
Wchodzimy do folderu UTC
i w tym folderze tworzymy plik XML w którym zostanie zawarta ta
konfiguracja za pomocą live Places wygeneruje zawartość tego pliku.
Nie będę omawiał wszystkich możliwości
tego pliku zajmiemy się dodaniem teraz preferencje w którym z kont figuruje.
Po pierwsze
co powinien załadować Mac gdy chcemy skorzystać z Brand Store interfejs oraz co
ma załadować gdy chcemy skorzystać z interfejsu Brand interface.
Dlatego też do atrybutów for najpierw przejdziemy do interfejsu repozytorium
interface skupimy referencje i wklej do atrybutów WORD.
Możemy usunąć na początku nie jest on konieczny i następnie do
atrybutów konieczne będzie wskazanie klasy która komplementuje ten interfejs.
Dlatego też przejdźmy do interfejsu.
Przejdźmy do klasy która komplementuje Brand repozytorium Skopje referencje.
Wracamy do XML i wklej do atrybutów
zawartość czyli referencje to brand repozytorium.
Usuwamy też i następnie znowu możemy sobie skopiować preferencje wyczyścić.
I teraz wejdziemy do API data interfejs znowu skupimy referencje do atrybutów FOR.
Przejdziemy z powrotem do obraz interfejs sprawdzimy jaka klasa czyli w tym
przypadku klasa komplementuje prezentuje interfejs.
Znowu kupujemy referencje.
Wracamy do XML i wkraczamy do atrybutów usłyszymy teraz Flesz na początku.
I teraz mając tą konfigurację konieczne
będzie odświeżenie ch typu konflikt więc wróćmy do konsoli.
Wykonamy metodę Bin Laden to też C.
Jest to skrót od screen.
Następnie konflikt.
Każdy został wypuszczony.
Wracamy więc do przeglądarki aby sprawdzić czy teraz wszystko już poprawnie działa.
Pojawił się kolejny błąd akurat jest to błąd spowodowany tym że do metody IT
przekazaliśmy nie Integer tylko wartość tekstową.
Dlatego też wróćmy do repozytorium.
Problem znajduje się w metodzie Get Object ponieważ pobieranie
za pomocą metody G DATA wartości ID z modelu powoduje właśnie ten błąd.
Z racji że jest to wartość testowa konieczne będzie rzutować na typ int.
Dodatkowo zauważyłem też że powyżej w
metodzie Save Mamy aplikację kodu dlatego też możemy ją usunąć to jest niepotrzebne
ponieważ to się wszystko dzieje w metodzie Get Object.
Z racji że poprawiliśmy nasz problem wracamy do przeglądarki
odświeżone i w tym momencie powinno się wszystko poprawnie pokazać
dokładnie odświeżenie przeglądarki możemy zauważyć że nie ma już żadnego błędu.
Pojawiła się zwrotka Jackson natomiast
możemy tutaj zauważyć że brakuje pola ID które było wcześniej.
Stało się tak dlatego że w metodzie.
Sejf przepraszam kontrolerzy.
Kontrolerzy sejf gdy wykonaliśmy metodę
Save na obiekcie Brent data nie został zwrócony.
Rezultat tego zapytania czyli
mamy w tym momencie Brandta tylko informację o nazwie oraz URL które
następnie wykonujemy wyświetlany za pomocą gier data.
Natomiast aby dodać też identyfikator
konieczne będzie przypisanie do rezultatu wykonania tej metody.
Znowu zmienne możemy ją nazwać tak samo i w tym momencie jeszcze raz zmienimy np.
na.
Volvo marki Volvo z małej i otwieramy jeszcze raz przeglądarkę i w
tym momencie powinien się pokazać identyfikator.
I dokładnie tak się też stało.
Jest IT oraz URL.
Na koniec zostało nam dostosować model Vu.
Dlatego też przejdźmy do edytora kodu do modelu VU.
Teraz możemy w konstruktorzy usunąć
całkowicie fabrykę tworzącą modę i zastąpiły ją Brand repozytorium.
Interfejs.
Dodajemy nazwę zmiennej.
I następnie dodajemy atrybut klasy Brand
Factory usuwamy i teraz po pobraniu identyfikatora z
adresu URL możemy już usunąć Bractwa Factory Creed
nie mamy nawet tego atrybutów tego obiektu dostępnego
i zmieniamy co na napis Brand repozytorium i skorzystamy z metody Get It.
Od razu rzutuje wartość ID na innych ponieważ po pobraniu argumentu z adresu
URL myśli że to jest String wartość tekstową.
Dlatego też my od razu powiemy mu że to
jest wartość typu point i rezultat tego wykonania metody Get It wpisujemy do.
Brand i nazwiemy tą zmienną Brand data
ponieważ nie jest zwracane model tylko interfejs danych.
Usuwamy Brand Factory Create nie jest już
nam w ogóle potrzebna i teraz aby pobrać nazwę czyli w tym
przypadku było to pobierane za pomocą Brand Data które było modelem zmieniamy to
na Brand data i wykorzystujemy metodę GET mamy i teraz co ważne.
Nawet jeśli byśmy zwrócili w tej metodzie
obiekt Brand data to w innych blokach czy też w salonach nie
mamy dostępu do modelu więc tym samym nie mamy dostępu do operacji na bazie danych
jest to o wiele bezpieczniejsze i też kasa Wu czyli nasz model nie jest
odpowiedzialny za tworzenie nowego obiektu modelu brand i też nie jest też
odpowiedzialne za pobieranie tych informacji z bazy danych oddelegowany.
Te wszystkie odpowiedzialności do
repozytorium Brand repozytorium które znajduje się cała logika pobierania tych
informacji z bazy danych firmy nadal nas nie interesuje i mamy w
tym momencie tak jak to wszystko powinno wyglądać.
Wróćmy teraz do przeglądarki i sprawdźmy czy rzeczywiście możemy pobrać.
Załóżmy w tym przypadku po identyfikator że 9 markę Volvo zmieniamy adres na Brand
View Index ID i wskazujemy identyfikator 9.
Udało się. Pojawiła się strona z marką Volvo.
Tym samym zakończymy tę lekcję.
Udało nam się dostosować poprawnie kod do naszych serwis.
Kontrakt.
Szablon pliku di.xml · 6 min
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
</config>