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.
Zanim przejdziemy do omawiania jakie są dostępne typy rezultatów
wspomnę tylko o tym że w poprzednich wersjach może to aby stworzyć akcje
konieczne było rozszerzenie klasy abstrakcyjnej.
Zaczęto framework AB Action AB
Action jeszcze w najnowszej wersji w której teraz się znajdujemy.
Możemy zobaczyć w niektórych miejscach w niektórych akcjach że właśnie
to rozszerza tę klasę a przejdźmy do niej i tak jak mówiłem jest to Klasa
abstrakcyjna która też prezentuje Action interfejs natomiast jest ona już
zaproponowana i znajduje się tutaj komentarz że kontrolery powinny unikać
dziedziczenia AB Action na potrzeby kompozycji.
I właśnie dlatego powstały
specjalne interfejsy które odpowiadają metodom HTTP które implementacją Action
interfejs i teraz Zobaczmy na przykładzie załóżmy.
Tutaj jest akcja Muscle Module i ona ta
klasa prezentuje rozszerza właśnie akcję.
Atrakcyjną i.
Klasa abstrakcyjna wymusza
pewne zależności ponieważ jeśli wrócimy do niej znajdują się tutaj pewne już np.
kontekst który zawiera pewne zmienne przygotowane wcześniej pewne obiekty.
Możemy z niego korzystać jednak z racji że
ta klasa nazwana usunie tę zależność i zostawimy aby tylko
i wyłącznie nasza akcja komplementował interfejs akcji dzięki czemu nie musimy.
Naszym konstruktorzy przekazywać.
Argumentów z klasy abstrakcyjnej możemy tylko i wyłącznie pobrać tylko te
obiekty które potrzebujemy teraz więc dodamy do naszego konstruktora kolejną
klasę którą potrzebujemy czyli będzie to w tym przypadku resort Factory.
Ważne aby zwrócić uwagę aby był to framework kontroler lizał faktury.
Dodajemy ją do naszej klasy.
I następnie możemy usunąć sobie ten kod nie będzie on nam teraz potrzebny.
Zobaczmy jakie metody ta klasa udostępnia.
Dlatego też uruchamiamy The Record Factory.
I dostępna jest tylko i wyłącznie metoda której ten obiekt służy jak sama nazwa
wskazuje Factory czyli jest to fabryka tworząca pewien rezultat
za pomocą metody Create możemy wskazać jaki typ rezultatu chcemy uzyskać
teraz jakie typy mamy możemy przejść do metody Create.
I na górze tej klasy Record Factory mamy dostępne na stałe które zawierają
informacje o dostępnych typach czyli mamy lżejszą rolę i direct itd.
Teraz jeśli chcemy aby została uruchomiona tak naprawdę generowana strona
w tym przypadku będzie to pusta strona bo jeszcze nic tam nie mamy ale żeby
wygenerowane została strona HTML konieczne będzie przekazanie typu.
Możemy wykorzystać właśnie stałe bazy
klasy Record Factory i konieczne będzie wybranie opcji typ Page.
Możemy teraz zwrócić rezultat i przejdziemy do przeglądarki.
I otworzymy strony pojawił się znowu błąd.
Z racji że zmienił się konstruktor Naszej Klasy A w folderze Generation znajduje się
inny konstruktor konieczne będzie znowu przejście do konsoli.
Usunięcie.
Zawartości folderu generator.
Potwierdzamy że chcemy usunąć
nie dodałem opcji r dlatego się nie usunęła jeszcze raz dobrze
poprawnie się usunęło i możemy odświeżyć stronę.
Z racji że usunęli się w naszym kodzie
pobieranie parametru możemy usunąć to tak samo z parametru z adresu URL.
Natomiast po prostu w tym przypadku nic się nie wyświetla.
Udało się nam dodać nową stronę jest ona
pusta natomiast już mamy załadowany lead domyślny.
To teraz wróćmy do kodu aby zobaczyć jakie
są jeszcze dostępne inne typy czyli Możemy np.
stworzyć typ Jackson który będzie używany zazwyczaj podczas
questów typu post lub płuc albo też po prostu przez API
zamiast wracać od razu wartość która została zwrócona przez metodę Creed.
Piszemy ją najpierw do zmiennej Jackson
i aby 5 stron potwierdziło jakie są dostępne metody w obiekcie Jacksona
ponieważ jest to obiekt konieczne będzie oznaczenie tej klasy
właśnie typem Jackson tylko musi być odpowiedni w
tym przypadku będzie to to framework kontrolę.
Richard Jackson dzięki temu.
Możemy sprawdzić jakie są dostępne metody i najważniejszą metodą w przypadku typu
Jamesa jest data dzięki któremu możemy przekazać tablicę która zostanie następnie
zmarnowana do czasu zróbmy sobie przykład czyli załóżmy test.
I wartość 12.
Następnie aby wszystko się poprawnie
wygenerowała zwróćmy oczywiście ten obiekt.
Przechodząc do przeglądarki otwieramy stronę.
I już teraz nie pokazuje nam się pusta strona tylko typ Jackson.
Następnie możemy też zwrócić taką wartość jak rok.
Roku możemy ją oznaczyć sobie znowu aby
pokazało jakie są metody tak samo pełnym framework kontroler od.
Zmienimy nazwę aby odpowiadała tej wartości.
I jakie są dostępne metody to musimy usunąć.
. Ta metoda nas interesuje.
Możemy tutaj przekazać String który po
prostu zostanie przekazany dalej bez żadnego HTML a czyli załóżmy testowy.
String wracamy do przeglądarki.
Otwieramy pojawił się testowy String bez żadnego HTML a.
Następnie bardzo przydatne może okazać się w pewnych przypadkach.
Typ Ri Direct.
Lub też typu forward.
Teraz obydwa typy służą do przekierowania naszego żądania.
Dalej z tym że tryb Direct
pozwoli nam zwrócić kod HTTP możemy ustawić jaki chcemy
natomiast tryb forward pozwoli na ustawienie przekierowania w obrębie
jednego procesu czyli w obrębie naszego jednego request.
Jaka inna akcja jaki inny moduł ma odpowiedzieć na dane żądanie.
Jest to przydatne np.
podczas tworzenia swojego własnego routera ponieważ tam będziemy ustawiać np.
aby przekierowanie zostało przekierowania
w obrębie tego samego procesu do innej akcji więc wykorzystamy.
Na razie typ Reddit.
Zobaczmy jakie udostępnia nam opcje
aby nie zmieniać za każdym razem nazwy zmiennej może ustawienia tutaj po
prostu resort będzie to najbardziej ogólne zmieńmy jeszcze typ.
Aby sprawdzić jakie są dostępne metody i
żeby nam odpowiednio podpowiedział jakie one są.
Dlatego też ustawiamy Ri Direct
pisałem Direct i konieczne będzie wyszukanie w tym
momencie tego nie widzę ale zróbmy to za pomocą import Class kontrolę i
pełna nazwa klasy to jest to framework kontroler Razer Direct.
Ustawiamy to pokazuje nam się że metoda content już nie istnieje.
Zobaczmy więc co mamy możemy ustawić na jaki adres URL ma zostać przekierowania.
Możemy też zrobić za pomocą metody set
referat URL aby po wejściu na tą stronę kierowało nas na stronę poprzednią na
której dany użytkownik był czyli w tym przypadku na poprzedniej stronie byliśmy.
Nie będziemy tego robić możemy możesz sobie to sam przetestować.
Natomiast sprawdźmy jeszcze typ.
Forward też zmienimy typ forward.
To framework kontrolera horyzont
i w tym momencie pojawiają się takie metody jak set moduł możemy ustawić nazwę
modułu następnie kontroler czyli kontroler ma odpowiedzieć i jaka akcja w tym
kontrolerzy czyli za pomocą tych metod możemy ustawić aby inny moduł
który załóżmy robimy równolegle aby tamten drugi moduł obsłużył to żądania.
Dodatkowo za pomocą metody set parametrów
możemy ustawić parametry które tamten moduł np.
rozumie a który nasz moduł
nie jest w stanie obsłużyć i na koniec został nam ostatni typ typ
Lead jest on można powiedzieć tym samym typem co typ Page.
Natomiast między nimi występuje jedna różnica a mianowicie taka że jeśli
zwrócimy rezultat który jest typu lead to do naszej strony nie zostanie
dodany standardowy wygląd czyli nie zostanie dodane tzw.
uchwyt XML w którym zawarta jest właśnie taka domyślne konfiguracja stron.
Zwróćmy więc dla przykładu taki rezultat.
Otwieramy stronę.
W tym przypadku jest to całkowicie pusta strona z racji że my nie skonfigurować
mieliśmy jeszcze układu dla naszej strony i Triple J nie załączyć do umyślnego
uchwytu czyli tego XML które zawiera tą domyślną konfigurację.
No to strona jest pusta.
To by było na tyle.
Jednak wróćmy jeszcze do historii.
Aby zwrócić na potrzeby naszych kolejnych
lekcji typ Page ponieważ w następnym rozdziale będziemy
mówić o tym w jaki sposób stworzyć układ strony właśnie Brand Index.
Dlatego też zwróćmy.
Tylko i wyłącznie ten rezultat.