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
Na naszej stronie można już się rejestrować, natomiast nie można jeszcze zalogować. Po
rejestracji jesteśmy od razu zalogowani, ale teraz chcielibyśmy stworzyć widok logowania. Przejdźmy
sobie do terminala i mam tutaj cały czas tabele, którą wcześniej wyświetliśmy
za pomocą php artisan raute list i zobaczymy jakie mamy tutaj ścieżki
do logowania. Zauważ, że mamy coś takiego jak login, pierwszy wyświetla
showLoginForm. Będziemy chcieli sobie to skopiować do web i odpowiednio
również dostosować. Tak jak wspominałem, nie musisz tego kopiować jeżeli podoba ci się to
że jest to dodane w ten sposób i jeżeli odpowiadają ci domyślne
ścieżki ja chcę je zmienić dlatego to tutaj wpisuje, czyli zrobimy sobie get i
chciałbym żeby to było account login
i następnie podamy ten kontroler, będę chciał to również nazwać
odpowiedni sposób login. Moglibyśmy te nazwy tutaj w zasadzie również mieć jako
account kropka login tak jak mieliśmy tutaj post single, ale to już nie ma aż
dużego znaczenia, czyli to będzie pokazywało nam formularz logowania i
znowu jeżeli byśmy sobie przeszli do LoginController to nie
mamy tego w tym miejscu, ale jeżeli przejdziemy do trait'a AuthenticatesUsers, okaże
że zwraca to aut.login, więc tutaj, podobnie jak wcześniej,
po prostu przyjdziemy sobie do resources views auth i mieliśmy tam
login, to obejrzymy co tam jest, ale w zasadzie nie ma tutaj nic czego do
pory byś nie widział. Tak to wygląda, więc w
zasadzie ja usunę ten plik albo nawet nie muszę go usuwać tylko sobie go nadpiszemy, więc
kopiuje wszystko co mieliśmy w Register, wrzucę to do login, dostosuję
sobie tutaj u góry, login, tutaj też zrobimy login i teraz
jeszcze przyjdziemy do naszego HTML'a. Mieliśmy tutaj coś takiego jak login
i skopiujemy fragment, który dla nas jest istotny, jest
dokładnie ten fragment, wklejam to
tutaj, dostosujemy sobie zaraz jeszcze formularz. Tutaj zostały mi jakieś, na
to wygląda, stare linki, więc możemy sobie to usunąć, okej
i formularz znowu tutaj, wypadałoby żeby to było post, bo jeżeli tego nie dodamy to
będzie to dodawane w parametrach get w url, po prostu nie zadziała. I
będziemy chcieli teraz tutaj wyświetlić route login.
Jeszcze takiej pod post nie mamy, ale samo routes login
już nazwaliśmy, a to oznacza w tym formularzu zostanie taka ścieżka zwrócone i teraz
jeszcze będziemy chcieli sobie znaleźć post, to jest ten. Podobnie
będę chciał go dodać do w web tylko że tym razem odpowiadamy
na zapytanie o typie post, tutaj ta nazwa musi
być taka sama, ta ścieżka jak wyżej, dlatego że korzystaliśmy z nazwy name login, przed
momentem w formularzu. Okej,
czyli jeżeli wyślemy formularz wyślę się pod właśnie ten kontroler, no i
jeżeli byśmy tutaj zerknęli do metody login,
ona gdzieś tutaj się na pewno znajduje. To
jest ta metoda to jest to co się wydarzy kiedy ktoś spróbuje się zalogować. Możemy
to przejrzeć, ale nie będziemy teraz tego komentować. Jeszcze jedna ważna rzecz, nawet
tutaj coś takiego jak redirect to i gdzie użytkownik ma być przekierowany
po poprawnym logowaniu, więc znowu nie mamy ścieżki home, więc przekierowujemy
do strony głównej, okej i w zasadzie
nam to powinno zadziałać, ale jeszcze zrobimy jedną rzecz, przejdziemy do master i będziemy
chcieli sobie ten login tutaj odpowiednio podlinkować, czyli
zrobię w ogóle coś takiego jak mieliśmy tutaj, route
to będzie login, okej,
wygląda na to będzie w porządku, więc jeżeli teraz odświeżę, przejdziemy pod login.
Okej, mamy 404, już ci mówię z czego to wynika,
zarejestrowaliśmy się w lekcji poprzedniej, jesteśmy zalogowani, chociaż nigdzie
tego nie widzimy, ale ciasteczko jest ustawione, teraz jeżeli jesteśmy zalogowani, to
jest pewien middleware, o którym wcześniej wspominałem, który się wykonuje i ten
middleware wygląda w następujący sposób, mianowicie tutaj w LoginController w
construct, jeszcze będziemy to kilkukrotnie w tym kursie robić. Jest
zastosowany taki middleware, który się nazywa guest i on oznacza
tylko tyle, że możemy wpuścić użytkownika do tego kontrolera,
wyłącznie jeżeli jest on gościem, czyli nie jest zalogowany. Przeciwieństwem tego middleware jest
middleware o nazwie auth i teraz jeżeli ktoś próbuje przejść do
tego kontrolera, a wiemy, że tam jest zarejestrowane
to middleware gust, to oznacza że jeżeli on jest zalogowany, to mamy
go przekierować. No właśnie i gdzie przekierować. Wydawałoby się że tutaj. Nie, tutaj
przekierujemy tylko wyłącznie kiedy użytkownik się poprawnie zaloguje, a gdzie
przekierujemy w takim przypadku, tam gdzie kieruje to middleware guest,
dlatego musimy sobie przejść do http middleware i tutaj
będzie taki middleware RedirectIfAuthenticated, to jest dokładnie to middleware
i możemy sobie je dostosować, więc zrobimy tutaj po prostu taką
ścieżkę i teraz jeżeli wrócę będę chciał przyjść do login to
będzie nas przekierowywać na stronę główną, tylko tyle, więc musimy się wylogować
żebyśmy mogli się zalogować. Za moment w kolejnej lekcji dodamy sobie możliwość
wylogowywania, na razie będziemy po prostu usuwać ciasteczko, teraz
będziemy wylogowani, próbuję przejść do login, przeszliśmy również, login jest ładnie
podświetlone, działa to jak należy, tutaj wyświetla się błąd, bo tak
testowo miałem go tylko tutaj, więc będziemy chcieli to usunąć. Zauważ,
że znowu name musi być poprawne, email oraz password. Znowu, gdybyśmy
tutaj sobie przeszli, widzimy, że gdzieś to
email i password powinno być w walidacji. Tutaj
widzimy, że username jest to email, więc jest podstawione w tym miejscu i
następnie password. Stąd odpowiednio mamy to dostosowane w widoku, spróbujemy
się zaraz zalogować, ale jeszcze jest kilka rzeczy, które można zrobić, tutaj już mamy taki route jak register,
więc uzupełnijmy to sobie od
razu, bo później zapomnijmy o tym no i jeszcze możemy sobie tutaj wyświetlać błędy, więc
chciałbym przejść do register blate i zrobić rzecz
taką samą jak wcześniej. Polecam ci żebyś również sobie to dodał, to
będzie wyglądać tak, a to będzie wyglądać tak. Jeszcze
dodamy sobie tutaj old, okej. Odświeżmy. Spróbujemy
się zalogować mamy Page Expired. Znowu
przypominam ci skąd się bierze ten błąd. Każdy formularz musi zawierać pole csrf. Bez
tego pola będziemy mieli właśnie takie błędy. To bardzo ważne, okej.
I teraz widzimy że nasz globalny komunikat już działa, bez żadnego problemu. Tutaj
również jest to poprawnie podświetlane, więc przejdźmy sobie teraz żeby zobaczyć jaki
był adres email naszego użytkownika. Oczywiście ty możesz sobie tam podać
jakiś własny żebyś nie musiał tego sprawdzać za każdym razem i wpiszę hasło
i udało
nam się zalogować. Teraz jesteśmy zalogowani. Natomiast jeszcze raz będę chciał
usunąć ciasteczko, żeby się wylogować, bo jest jeszcze jedna rzecz na koniec którą chcę ci pokazać,
aczkolwiek już wiesz jak to zrobić aby nasz przykład był miarę kompletny, również
to zrobimy. Chciałbym, kiedy uda się zalogować użytkownika wyświetlić mu odpowiedni
komunikat, więc znowu teraz jeżeli wrócimy do LoginController
przejdziemy do tego tego trait'a, to okaże się że jest tutaj taka metoda
jak authenticated i ta metoda się wywołuje kiedy
użytkownik zostanie poprawnie zalogowany, czyli coś takiego jak wcześniej już widzieliśmy. Zauważ,
że ona znowu korzysta request, więc żebyśmy nie mieli błędu wrócimy
sobie do tego trait'a i skopiujmy użycie request. Może
być w tym miejscu i tutaj będziemy chcieli zrobić
rzecz którą już znasz i to jest to czym mówiłam wcześniej że
bardzo nam się to będzie przydawało na każdym kroku, bo stworzyliśmy
sobie jedną fajną templatkę do wyświetlania takiej wiadomości
i teraz już możemy w dowolnym miejscu sobie tego korzystać. Natomiast
tutaj będę chciał zrobić inną wiadomość i you've been po prostu you've been logged in,
okej przyjedziemy do login raz jeszcze. Spróbujemy
tego użytkownika zalogować. Przekieruje
na stronę główną i widzimy. Zostałeś zalogowany, mamy zatem już rejestrację
oraz logowanie. W kolejnej lekcji zajmiemy się tym w jaki sposób wylogować użytkownika
z naszej strony.