Techniki Pracy
8 godz. 33 min · Laravel · Full-stack i Programowanie
Piotr PalarzWeb DeveloperKurs ten rozpoczniemy od omówienia czym jest framework Laravel i co może Ci zaoferować. Następnie zobaczysz jak skonfigurować środowisko do pracy lokalnej w formie wirtualnej maszyny z preinstalowanymi narzędziami, tj. PHP, MySQL czy serwerem nginx. Zobaczysz w jaki sposób tworzyć nowe projekty wykorzystujące Laravel, zrozumiesz strukturę katalogów projektu i skonfigurujesz polaczenie z baza danych.
W kursie nie znajdziesz czysto teoretycznych lekcji. Każda z części przybliżać nas bowiem będzie do finalnej wersji projektu, którym będzie aplikacja internetowego bloga. Funkcjonalności, które od podstaw zaimplementujemy, to m.in. dodawanie i wyświetlanie wpisów, tworzenie i przypisywanie tagów, komentowanie, rejestracja i logowanie użytkowników czy wyszukiwarka. Każda z nich odkryje przez Toba możliwości frameworka Laravel i jego sposoby na rozwiazywanie konkretnych problemów.
Laravel to framework oparty o wzorzec MVC. Na konkretnych przykładach zobaczysz co to oznacza. Tworzyć będziemy wspólnie kontrolery, do których przypiszemy stosowne adresy URL, modele, które reprezentować będą dane, a także widoki, które te dane sformatują, wplatając je w kod HTML.
Choć aby w pełni zrozumieć omawiane zagadnienia, należy znać podstawowe koncepcje relacyjnych baz danych, to pisanie zapytań SQL nie jest czymś, to będziemy musieli robić. Wszystko to za sprawa migracji oraz Eloquenta. Te pierwsze pozwolą nam zaprojektować strukturę tabel bazy danych i jedna komenda je utworzyć, a Eloquent posłuży nam do tworzenia, zapisywania i odczytywania modeli reprezentujących te dane. Wszystko to uzyskamy pisząc wyłącznie prosty kod PHP.W kursie nie zabraknie również informacji na temat tworzenia relacji. Zobaczysz m. in. jak skojarzyć autora w wpisem, jak dodawać tagi czy komentarze.
Te dwa pojęcia, choć podobne, różnią się od siebie. Pierwsze pozwala określić, czy logujący się użytkownik jest tym, za kogo się podaje. Drugie mówi nam, czy dana osoba może wykonać zadana akcje. Oba te koncepty zobaczysz w akcji na praktycznym przykładzie. Do naszego bloga dodamy pełen system autentykacji, tj. rejestracje, logowanie, resetowanie hasła i potwierdzanie adresu email. Zalogowani użytkownicy otrzymają dzięki temu bonus w postaci niewidocznych dla pozostałych osób wpisów premium. Aby zarządzać wpisami na blogu, stworzymy mini sekcje administracyjna, do której dostęp będzie miał wyłącznie użytkownik oznaczony jako administrator. Dowiesz się wówczas nie tylko jak pokazywać pewne widoki wyłącznie zautoryzowanym osobom, ale także jak zabezpieczyć kontrolery przed nieuprawnionym dostępem.
Oprócz wymienionych wyżej tematów, w kursie poruszymy również uploadowanie plików na serwer, sposoby tworzenia i wysyłania maili, prace z Front-endem, debugowanie aplikacji, korzystanie z rozszerzeń tworzonych przez aktywna społeczność Laravel czy techniki wdrażania aplikacji do produkcji. Ostatni temat będzie o tyle ciekawy, ze jest on często pomijany w materiałach tego typu. Z tym kursem Twoja aplikacja nie pozostanie wyłącznie na dysku Twojego komputera. Dowiesz się bowiem jak skonfigurować serwer VPS tak, aby wykorzystać tzw. zero-downtime deployment. Dwie komendy wystarcza wówczas do tego, aby w kilkanaście sekund nowa wersja Twojej aplikacji ukazała się światu. A wszystko to bez przerywania jej działania nawet na ułamek sekundy i bez wykorzystania płatnych rozwiązań!
Kurs ten jest dla wszystkich tych, którzy znają już podstawy języka PHP i koncepcje relacyjnych baz danych SQL oraz chcieliby przyjemnie i wydajnie tworzyć ambitne aplikacje internetowe. Znajomość samego frameworka Laravel lub podobnych rozwiązań nie jest jednak wymagana. Praca z frameworkiem omawiana jest stopniowo, od podstaw do bardziej zaawansowanych tematów. Jeśli zatem masz głowę pełną pomysłów, a chcesz uniknąć frustracji związanej z pisaniem wszystkiego od podstaw - koniecznie sięgnij po Laravel i zobacz jak to narzędzie pozwoli skupić Ci się na tym, co istotne!
5.8.x
W tej lekcji pokażę ci w jaki sposób możemy stworzyć paginację naszych wyników,
tak aby wyświetlały się tylko trzy wpisy na stronę. Były podzielone na poszczególne
podstrony bo teraz nawet w tej aż 10 wpisów i nie do końca jest to dobre
rozwiązanie. Możesz zobaczyć, że mamy taką stronę dokumentacji jak pagination.
Tutaj możesz sobie więcej na temat poczytać i jest wiele możliwości,
jeżeli chodzi o laravel, natomiast zastanówmy się jak byśmy się jakbyśmy, to
musieli zrobić ręcznie. Jeżeli przejdziemy do posts controller i mamy
tutaj index wszystkich naszych wpisów. Jak byśmy to zrobili normalnie, normalnie
musielibyśmy pobrać sobie z adresu
URL jakieś get, czyli byłoby tutaj na page, page
równa się 1. Powiem ci szybko jak można to zrobić, można
skorzystać z globalnej funkcji request i następnie
get page. To nam zwróci wartość z adresu URL. Również
mamy tutaj zauważyli request, więc popularnym jest też jest robienie tego w
ten sposób i wtedy możemy się odwołać do request
get page. Mielibyśmy już taką stronę, czyli wiedzielibyśmy, że na przykład jesteśmy
na pierwszej stronie. Wiedzielibyśmy, że chcemy trzy wyniki na stronę, więc 1
razy 3, to znaczy, że trzy pierwsze należy ominąć i wtedy robiąc coś takiego po
latest. Moglibyśmy tutaj powiedzieć skip, to jest dostępne na tym
querybuilderze, skip właśnie 3, czyli omiń 3 i pokaż
nam pozostałe. Natomiast jeszcze moglibyśmy zrobić tutaj limit 3 i dopiero
potem get, to by oznaczało właśnie, że znajdź wszystkie i posortuj je
po dacie. Następnie pomiń trzy pierwsze, później weź trzy
z pozostałych i tutaj wstaw. Gdybyśmy przeszli na kolejną stronę, to musielibyśmy
oczywiście odczytać, że mamy page równa się 2, więc pomiń 6 i znowu weź trzy i
tak dalej. Nie będziemy jednak tego robić ale przy poznałeś dwie kolejne metody
które są dostępne na querybuilderze. Po całą listę zapraszam cię oczywiście na
stronę dokumentacji, zrobimy to natomiast inaczej. W dowolnym
miejscu takiego querybuildera, tutaj mieliśmy. Tutaj może być wiele warunków typu where i
tak dalej możemy zrobić coś takiego jak paginate. Okay
i dopiero potem get. Jeżeli tutaj powiemy paginate 3, to oznacza,
że chcemy aby laravel wykonał za nas całą robotę i on automatycznie odczyta z
adresu i URL słowo page, które w razie czego można dostosować podając, je
tutaj jako trzeci parametr. Tutaj moglibyśmy zrobić null, a tutaj podać p, gdy
to nie będzie page, tylko p. Odczyta sobie tę wartość,
odpowiednio zrobi ten ten właśnie skip i take i dla nas to zwróci, ale to nie
bo jeszcze mam specjalny obiekt, do którego za moment odwołamy
się w widoku, więc sprawdźmy czy to ma sens. Jeżeli tutaj odświeżę okej
tutaj get jest niepotrzebne, czyli przy paginate już nie wykonujemy przed get na końcu. Wygląda
to tak, będziemy mieli tylko trzy wpisy. Warto również zapamiętać, że jeżeli
na tym querybuilderze zawsze wygląda to tak, że jeżeli tutaj byś nie korzystał
latest, no to od razu możesz statyczna metoda, bo tak to wygląda wywołać
paginate, a jeżeli korzystasz już z jakiejś statycznej metody później musisz
wykorzystać to w ten sposób, tak to jest tutaj stworzone w laraverze. Czyli
mamy teraz trzy wpisy, no i jest okej, tylko że nie mamy przejścia do kolejnych
podstron. Będziemy to chcieli teraz utworzyć, przejdziemy sobie do widoku
przy okazji zobaczysz jak można tworzyć partiale, czyli takie kawałki widoków,
przejdziemy do views i pamiętasz znowu, że tutaj views to my
ustalamy jaka jest struktura, więc ja chciałbym sobie utworzyć nowy plik w katalogu partials
i nazwiemy go pagination blade
php, okej, zapiszę, tutaj trzeba będzie odświeżyć. Pojawił
się i zaraz będziemy go chcieli zainkludować w odpowiednim miejscu, czyli w naszych
postach, mniejwięcej w tym miejscu
za and for each. Będzie to tutaj poznasz kolejną dyrektywę
blade, jest to include. Ona pozwala nam includować to,
co tutaj, więc możemy powiedzieć include partials, dlatego,
że to się odwołuje do oczywiście katalogu views najpierw. Pagination,
okej. No i zobaczymy tutaj do pagination oczywiście coś
wypadałoby wstawić, więc przejdźmy sobie do tego HTML naszego i mamy
index i tutaj była gdzieś to paginacja. Jest tutaj i
wstawimy
to w to miejsce. Zapiszmy, ta paginacja gdzieś
tutaj się powinna pojawić, jak widzisz jest, czyli tak działa include. Sprawdźmy
jeszcze czy laravel rzeczywiście tutaj działa, jeśli dodamy page równa się 2
czy wyświetli inne wyniki, no i tak to stało. Jesteśmy teraz na drugiej
stronie, więc pozostało nam jeszcze tylko sprawić, aby te linki działały poprawnie
żeby one do page2, page3 i tak dalej. I teraz
w tym kontrolerze nie robimy już nic, ale po użyciu paginate na tym
obiekcie post, które tutaj jest zwrócony, na tej kolekcji. Będziemy mieli
pewne metody, które możesz zobaczyć, opisane są
one tutaj. Możemy skorzystać najpierw gdybyśmy chcieli zrobić inaczej na
sekundę to jeszcze usunę, tutaj moglibyśmy zrobić coś takiego w laraverze, czyli
posts Ringslinks. Zobaczmy co
to wygeneruje. Zobacz, laravel automatycznie wyświetlił nam takie
oto linki i możesz je sobie oscylować. Natomiast ja chciałem zrobić inaczej. Poza tym
nie jestem też zwolennikiem kiedy framework wyrzuca dla mnie jakiś predefiniowany
kod HTML. Wolę go napisać sam, ale to zależy od ciebie, więc jeżeli nie chcemy korzystać
z tego tylko z własnego kodu HTML, który mamy przygotowany, to musimy sami
dodać trochę tutaj logiki. Z tym, że ja nie chcę tutaj się odwołać do posts.
Zauważ, że właśnie w tym partialu mamy dostęp do wszystkich globalnych
zmiennych, które były tutaj skoro tutaj było opposed i wewnątrz mamy dostęp.
Ale co ważne przy include można przekazywać co chcemy mieć
tym widoku dostępne czyli ja tutaj chciałbym powiedzieć, że pod pagination
chciałbym mieć posts, czyli to co tutaj jest jako posts. Wewnątrz będzie
się nazywał pagination, będzie to miało więcej sensu, po prostu dla nas i pierwsza
rzecz, którą chcemy zrobić to do tego pagination, czyli w rzeczy samej do zmiennej posts,
która również tutaj jest. Chcę się odwołać i do
metod, które ci pokazałem przed momentem, one są w tym miejscu. Na ich podstawie możemy
zrobić coś takiego, jeżeli pagination total,
czyli wszystkie strony jakie są jest większa od pagination per page,
czyli per page to jest 3. Total, załóżmy, to będzie, czyli
wszystkich wyników to będzie 4, no to znaczy że paginacja musi się wyświetlić. Zrobimy
end if. Teraz, aby wyświetlić ten pierwszy link, to będziemy chcieli zrobić taki
warunek, jeżeli pagination currentPage
nie jest równe jeden, czyli jeżeli nie jesteśmy na pierwszej
stronie, to chcemy wyświetlić ten wynik, a przypadku kolejnego
tutaj będzie taki warunek. Jeżeli pagination
hasMorePages, to wtedy chcemy wyświetlić ten link. To
wszystko wywnioskowałem dokładnie z tego co tutaj mamy, czyli z wszystkich tych metod.
No i teraz jeszcze musimy podstawić odpowiednie linki, czyli
tutaj będziemy chcieli to wyświetlić w ten sposób, pagination previousPageUrl. Jak
się domyślasz tutaj będziemy mieli nextPageUrl. To
powinno nam wystarczyć, ta paginacja powinna już działać. Zobaczymy, nie
ma pierwszej tutaj, czyli previous, dlatego, że jesteśmy na pierwszej stronie przechodzimy
do strony drugiej. Adres URL się zmienił. Widzimy, że przywiózł się pokazało i
kieruje do Page 1, Next również jest dostępny i na stronie trzeciej
również jest dostępny i na czwartej będziemy mieli jeden wpis i będziemy mieli
tylko previous. Więc w taki prosty sposób mogliśmy stworzyć sobie fajnie
działającą paginację, jak widzisz, jeżeli chodzi o kontroler, był to zaledwie
jeden zapis, a jeżeli chodzi o paginację to jeżeli chcieliśmy zrobić własną, czyli własny
kod HTML, troszeczkę trzeba napisać, ale nie musimy zajmować z
wczytywaniem parametru z URL'a i dodawania tego wszystkiego do query, tak aby
pominąć jakieś wyniki, aby wziąć odpowiednią liczbę tych wyników,
to wszystko za nas zrobił laravel jednym prostym wywołaniem.