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
Jesteśmy poprawnie zalogowani i teraz chcielibyśmy się wylogować, więc
jak możemy to zrobić. Po pierwsze będziemy chcieli ukryć ten link login i
zastąpić go na logout, jak to zrobić? Już ci pokażę, przejdziemy
sobie do master i laravel oczywiście oferuje dla nas
już odpowiednie Helpery, czyli w miejscu w którym mamy login możemy
sobie zrobić if, no i teraz mógłbyś zapytać jak sprawdzić czy użytkownik jest zalogowany
czy nie. Moglibyśmy zrobić tak if auth, jest taka globalna funkcja
user, to oznacza, że mamy instancje użytkownika, więc
jest zalogowany, ale nie ma potrzeby robić tego w taki sposób, jeżeli mamy odpowiednich
Helper, tutaj w blade. Ten Helper nazywa się auth. Czyli
jeżeli zalogowany to chcemy wyświetlać jedną rzecz jeżeli niezalogowany to drugą,
czyli możemy tutaj powiedzieć, że jeżeli zalogowany to wyświetlimy za
sekundę logout, w zasadzie to nie będzie musiało
wyglądać aż w taki sposób, więc zrobimy sobie po prostu a li i tutaj będzie
logout. Możemy zrobić else tak jak przy if'ie,
a tutaj zrobić endauth. Czyli jeżeli
zalogowany, wyświetlamy to jeżeli niezalogowany wyświetlamy to. No i
jeżeli teraz odświeżymy wyświetliło logout. Natomiast jeszcze w stopce jeżeli dobrze
mieliśmy login więc stopce będę chciał też to zamienić aczkolwiek tutaj
już nie musimy dawać logout tylko zrobimy, że jeżeli jest gość, bo pokażę
ci odwrotny Helper, guest się nazywa to wtedy chcemy pokazać
login i endguest. Tutaj jeszcze sobie
dostosujemy to, wcześniej zapomnieliśmy o tym, login i będzie
już porządku, czyli auth oznacza, że w takim bloku mamy
kod dla zalogowanego, guest oznacza dla niej zalogowanego, czyli jest to przeciwieństwo. Teraz jeżeli
jesteśmy zalogowani, login nam zniknęło, tutaj pojawia logout i będziemy
chcieli się wylogować, więc jeżeli przejdziemy do terminala to zobaczymy jakie
ścieżki, jakie kontrolery są do tego przypisane. Widzimy, że gdzieś tutaj powinno
być logout. Wysyłamy zapytanie o typie post, to jest bardzo ważne, dlatego
nie wystarczy, że w tym linku, który dodaliśmy, podlinkujemy sobie to odpowiednio,
bo nie jest dobrą praktyką wylogowywanie się po adresie URL. Moglibyśmy
tutaj zrobić co prawda account logout. Jeżeli bym wcisnął Enter
to get będzie wysłany, to oczywiście teraz nie zadziała, a dlaczego to jest złe rozwiązanie,
wylogowywanie się poprzez get, bo ktokolwiek może ci podesłać link,
na przykład w mailu, który będzie ładnie sformatowany, ty go klikasz i on cię wyloguje
twojej przeglądarki. Niby nic strasznego, ale nie jest dobrą praktyką. Natomiast nie
da się wysłać linku, który po kliknięciu wyśle zapytanie o typie post, dlatego
właśnie będziemy chcieli tutaj skorzystać z post. Mamy logout, czyli
nazwa jest to logout i jest tutaj odpowiedni kontroler. Stąd ja
będę chciał przejść do web i go sobie dodać. Będzie
to oczywiście posts. Zróbmy sobie account logout, żeby
to już było spójne i nazwiemy to logout, okej,
czyli teraz żeby się wylogować po linku, który dodaliśmy to w zasadzie musimy wysłać
formularz. Wydaje się to głupie, ale już ci tłumaczę w jaki
sposób to zrobimy bardzo prosto. Mamy tutaj taki link i będziemy
chcieli tutaj napisać logout. Okej,
teraz przejdziemy sobie do master, bo potrzebujemy formularz, który będzie dostępny na każdej
stronie i na samym dole przed zamknięciem body będę
chciał dodać formularz, który będzie miał action, właśnie
logout, które dopiero co zdefiniowaliśmy w routes, czyli w web php. Metoda
to będzie metoda post i teraz jeżeli wyślemy ten formularz to
się po prostu wylogujemy. Ten formularz jak każdy inny potrzebuje mieć csrf
i teraz musimy go
wysłać, nic innego on tutaj nie potrzebuje, tylko być wysłany. Dlaczego formularz,
no bo jest w zasadzie oprócz Ajaxa jedyny sposób żeby z poziomu
kodu wysłać zapytanie o typie post, czyli w html'u można
zrobić właśnie tak, wysyłając taki formularz. Natomiast możemy to również zrobić z poziomu
kodu JavaScript Ajax'em. Moglibyśmy takie zapytanie wysłać, a następnie przeładować
stronę, żeby użytkownik już nie był zalogowany. Najprościej będzie to zrobić ten
sposób. Natomiast będziemy musieli ten formularz wysłać z użyciem
javascript'u, dlatego będziemy chcieli do niego również dodać id.
Nazwiamy to na przykład logout form
i pod spodem dodamy sobie prosty skrypt JavaScript'owy,
w którym wpisze po prostu document.querySelector.
Chcę wyszukać linku logout, a w zasadzie my
tam daliśmy href, czyli możemy wyszukać a href równa
logout, to nam znajdzie ten element wylogowywania,
dodamy do niego kliknięcie. Ta
funkcja się wywoła po kliknięciu w ten element a, żeby nam
nie przeskakiwało do tego linku, który tam jest to wykonamy preventDefault i
teraz wystarczy, że znajdziemy sobie formularz logout form, czyli znowu document.querySelector po
id i go wyślemy za pomocą metody submit,
czyli w javascript'cie w ten sposób możemy po kliknięciu w ten link to zrobić, ale
od razu uprzedzę cię, że ten nasz link nie zawsze będzie dostępny, bo zauważ, że
tylko jeżeli ktoś jest zalogowany, taki link jest dostępny, więc JavaScript
działa tak, w zasadzie tutaj obiektowy model dokumentu, że jeżeli nie zostanie taki
link znaleziony, bo ktoś jest niezalogowanym i próbujemy do niego przepisać
kliknięcie, tutaj jest zwracane null, no i to wygeneruje błąd, dlatego chciałbym się upewnić, że
ten kod będzie wstawiony na stronę wyłącznie jeżeli ktoś jest zalogowany, a
więc auth i endauth. Okej,
teraz spróbujmy odświeżyć, może nawet otworzę konsolę gdybyś jakieś błędy pojawiły. Klikniemy
logout i jak widzisz udało się wylogować, dlatego że pojawiło
się tutaj login i gdybyśmy się przyjrzeli, tutaj w Application, Cookies. Oczywiście
laravel_session tutaj zostało, bo w sesji są różne rzeczy zapisane, ale nie jest to już sesja z
samym użytkownikiem. I na koniec jeszcze zrobimy sobie tylko jedną
rzecz. Po wylogowaniu się znowu, tak jak wcześniej, chcemy wyświetlić odpowiedni komunikat, więc przejdźmy
do LoginController, nic tutaj takiego nie ma, więc zaglądamy do
trait'a i w trait'cie powinniśmy znaleźć odpowiednią
metodę. Wystarczy troszeczkę poszukać i okazuje
się że jest metoda loggedOut i ona się wykona tak samo jak wykonywały
się poprzednie metody, więc ja ją tutaj wklejam i po prostu będziemy chcieli dostosować
tutaj komunikat. W tym przypadku może napiszemy po prostu
you've been successfully logged out, okej. No
i na koniec jeszcze raz sobie to przetestujemy, login nam się tutaj u dołu pojawia, możemy
kliknąć. Możemy się zalogować i widzimy,
zostałeś zalogowany. Wszystko się zgadza,
teraz klikniemy Wyloguj i widzimy zostałeś wylogowany. Jak
zatem widzisz nasz system rejestracji i logowania działa już całkiem sprawnie, natomiast
musimy jeszcze zrobić dwie rzeczy. Mianowicie resetowanie hasła oraz
potwierdzenia adresu email i tym zajmiemy w kolejnych lekcjach.