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
Zajmijmy się teraz wyświetlaniem błędów. Powiem
ci od razu jak to wygląda. Czyli my tutaj mamy formularz który po wysłaniu przesyła
się do tego kontrolera. On się przesyła konkretnie do metody register
którą można podejrzeć, na tym RegisteredUsers, niemniej skupimy się na tym co
jest tutaj. Jak możesz się domyślić tylko patrząc na ten kod, nawet jeszcze nie
rozumiejąc czym jest walidator, można się domyślić że tutaj są walidowane
dane, które są wejściowe. Teraz mamy name, email i password.
Skąd to bierze? Zauważ, że ja już wcześniej w formularzu ustawiłem odpowiednie atrybuty
name i one są Tutaj absolutnie kluczowe, czyli jeżeli tutaj mamy email, name
i password to się musi zgrywać z tym co jest tutaj i z tym co jest
później tutaj, czyli innymi słowy jeszcze tak szybko, tutaj jest pewna metoda walidator,
która jeżeli przejdzie odpowiednio wszystkie walidacje.
Jeżeli dane będą poprawne to pozwoli na przyjście do metody create, która tworzy
nowego użytkownika, bo tym polega rejestracja i zauważ, że tutaj nie ma nic skomplikowanego. Mamy
po prostu odwołanie do modelu, czyli do eloquent model i wykonujemy
na nim metody create, która pozwoli nam utworzyć właśnie nowego użytkownika. W
podobny sposób będziemy później tworzyć na przykład posty, czyli tutaj nie ma specjalnie
skomplikowanego jeżeli chodzi o samą rejestracje, po prostu tworzymy użytkownika
i podajemy mu już zwalidowane dane. Jeżeli chodzi o Hash::make, to
to z kolei pozwoli utworzyć hasło zapisane w Bcrypt, czyli
będzie on po prostu zahaszowany w odpowiedni sposób i zapisany bazie danych i za każdym razem
kiedy się logujemy będzie ono porównywane również za pomocą takiej
funkcji Bcrypt, czyli tutaj teraz możesz zobaczyć, że mamy
walidator, ale on oczekuje właśnie że będzie tam name, email czy password i to
się musi zgrywać z tym podaliśmy tutaj, więc jeżeli teraz wysyłamy ten formularz
to wszelkie pola które tutaj są z takimi nazwami przesyłają się
tutaj i zauważ, że name jest walidowane w następujący sposób, required to
jest pierwsza reguła walidacji. Czyli musi być coś podane. Jeśli coś jest
podane to przechodzimy na drugiej reguły, to musi być string i maksymalnie
255 znaków, dlatego że również ogranicza nas do 255 znaków
kolumna w bazie danych. Następnie email jest wymagany,
musi to być string, musi to być również email, więc laravel ma wbudowaną walidację
poprawności email'a. Max 255 i co ciekawe unique:users. To
jest tutaj ciekawa reguła walidacji. Ona oznacza, że email musi
być unikalny, w tabeli users. Teraz tabela już zaraz będzie determinowana
przez to co mamy tutaj w migracjach czyli database migrations i mamy create_users_table. To
już dla nas było wcześniej, czyli będzie tam w tej tabeli kolumna email. Tabela
nazywa się users, więc reguła walidacji mówi po prostu, że w tabeli users
kolumna email ma być unikalna, czyli jeżeli
będziemy drugi raz jej dodać takiego samego użytkownika to tutaj ta walidacja nie
przejdzie. No i hasło jest wymagane, musi to być string minimum 8 znaków i potwierdzony. Jest
więcej takich reguł walidacji, my się tym jeszcze później będziemy zajmować, więc pokażę ci je dokumentacji
laravela wówczas. Okej, natomiast co teraz
dzieje się, jeżeli ta walidacja nie przejdzie, bo na naszej stronie wydaje się że nic
takiego się nie wydarzyło. Natomiast to wydarza się bo okazuje się że jest do widoku
zwracany dla nas automatycznie obiekt error, errors i
w zasadzie jest to taka zmienna i ta zmienna jest pewnego obiektem,
który ma kilka metod i możemy z niego wyłuskać błędy. Gdybyśmy
sobie tutaj na przykład spróbowali zrobić coś takiego, php, to jest nowy
dla ciebie pewnie zapis &php, w ten sposób możemy widokach
blade wpisać sobie jakiś dowolny kod PHP. Mamy w laraverze
taką globalną funkcję jak die dump. Jeżeli teraz wpiszemy errors,
czyli ta zmienna o której mówiłem że powinna być dostępna, to te błędy nam się powinny w
taki fajny sposób wyświetlić i okazuje się, że rzeczywiście jest to jakaś klasa. Te błędy tutaj
się znalazły i możemy zobaczyć, że mamy na przykład name
i mamy wiadomość, mamy email, mamy password. Natomiast
ja ci pokażę od razu w jaki sposób można skorzystać z tego obiektu. Będziemy
chcieli w tym miejscu dodawać klasę is-invalid i jeżeli wystąpią
jakieś błędy. I teraz możemy to zrobić następujący sposób. Od
razu sobie tutaj otworzę znacznik blade i będę chciał zrobić sprawdzenie, jeżeli
errors, tutaj na tym obiekcie jest taka metoda jak has, email, czyli
dokładnie to koresponduję z tą nazwą która jest tutaj. No i oczywiście z tym co mieliśmy w tym
miejscu, czyli jeżeli błędy jakby zawierają w sobie email to wtedy chciałbym
tutaj wyświetlić spację bo muszimy tutaj spację dopisać is-invalid. W
przeciwnym wypadku chcę tutaj dać pusty string, czyli w nic. Teraz, jeżeli
sobie to skopiujemy i wstawimy również w pozostałe miejsca, tylko tutaj podmieni na name,
a w tym miejscu podmienimy na password to
powinno to już zacząć fajnie wyglądać. Zobaczmy, przyjdziemy
tutaj tak, wszyscy mamy i okazuje się, że pola podświetlane. Jeżeli
tutaj cokolwiek wpisze to to pole będzie już wtedy poprawne. Natomiast jeszcze
jedna rzecz o której zapomniałem powiedzieć. Mamy fajną regułę walidacji przy password. Jest
to confirm i confirm to oznacza, że jeżeli mamy pole nazwie password,
to oczekujemy, że jest jeszcze dodatkowe pole, które nazywa password podkreślnik
confirmation i one muszą się ze sobą zgadzać, więc dlatego to pole
ma dokładnie taką nazwę, password_confirmation. Jeżeli tutaj byś zmienił na
coś innego, tutaj również musisz ten człon dostosować i wtedy po
dostosowaniu tego tutaj confirmed będzie wiedziało w jaki sposób ma tych
danych poszukiwać w jaki sposób je porównywać. Okej, czyli te błędy już
wyświetlają, na koniec jeszcze ci pokażę jedną rzecz. Mamy tutaj zdefiniowane coś takiego
jak redirectT o home. To oznacza, że jeżeli uda się zarejestrować
użytkownika, to przekieruje nas do ścieżki home. Dlatego też laravel w lekcji poprzedniej
dodał nam HomeController. U nas takiej ścieżki nie mam, dlatego będę chciał zamienić
ją na prostu slash czyli naszą stronę główną i teraz spróbujemy sobie zarejestrować
użytkownika, więc tutaj odświeżam. Wpiszemy sobie jakieś fejkowy
email. Ja mam tutaj taki generator z użyciem alfreda. Dlatego,
że ten mail nie musi być poprawny, tak naprawdę nie będziemy na razie tam nic wysyłać. Tutaj
sobie wpiszę fake name, okej i
hasło musi mieć minimum 8 znaków, więc sobie wpiszemy na przykład testowe hasło,
wyślij i okazało
się że udało się utworzyć takiego użytkownika i co ciekawe od razu jesteśmy
również zalogowani. To jest bardzo istotne. Jeżeli byśmy
sobie podejrzeli tutaj źródło naszej strony, przeszli do Application
i następnie do Cookies to laravel_session oznacza
że jesteśmy zalogowani. Tutaj jest zaszyfrowana sesja i za każdym razem teraz
to ciasteczko jest przesyłane do serwera kiedy będziemy się łączyć z
naszą stroną i po stronie serwera laravel może je sobie odszyfrować
i może sprawdzić kto jest zalogowany czy jest zalogowany i
tak dalej. Na tej podstawie będziemy mogli instancję użytkownika później uzyskiwać, ale
o tym będzie później. Dodatkowo jeżeli podejrzymy sobie bazę danych i
przejdziemy tutaj do users to możesz zauważyć że nowy użytkownik został
utworzony i to stało dokładnie poprzez użycie User::create,
kiedy udało się przejść przez wszystkie reguły walidacji.