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
Jak wspomniałem wcześniej chcielibyśmy pewne posty oznaczać jako premium i żeby
one dostępne wyłącznie dla zalogowanych użytkowników, więc jak możemy to zrobić z skorzystamy
również z queryscope, która już tutaj zdefiniowaliśmy, scope published zrobimy
właśnie coś takiego, żebyśmy nie musieli kilka tych scope'ów tworzyć i jak
możemy sprawdzić czy ktoś jest zalogowany, czy nie, już wiesz. Jeżeli tutaj user
zostanie zwrócony, znaczy, że jest zalogowany, więc jak to query, które tutaj mamy,
możemy zmodyfikować jeszcze w odpowiedni sposób. Otóż to sprawdzimy
sobie i jeżeli użytkownik nie jest zalogowany, to chcemy query zmodyfikować
tak żeby ukryć wszystkie posty, które nie są postami Premium. Oczywiście
my byśmy mogli pobierać wszystkie i w widokach je ukrywać, ale to mija się celem. Najlepiej
to zrobić od na poziomie zapytania MySQL i wybrać bazy tylko te, które
są nam potrzebne. Dlatego napiszemy tutaj query, where i powiemy
tutaj Premium i teraz jak powiedzieć, że nie jest równe 1. Otóż
można tutaj jako drugi parametr przekazać coś takiego i w MySQL, skorzystać
z takiego operatora, czyli nawias w jedną stronę i w drugą i następnie 1, to zmodyfikuje
odpowiedni sposób query i zauważ, że później dalej na tym query operujemy już
go zwracając, więc query jest zmodyfikowane, nie trzeba nadpisywać tej zmiennej query. Czyli
jeżeli nie ma użytkownika, nie jest zalogowany to nie pokazujemy postów
Premium. Okej teraz oczywiście nic się nie
pokazuje, ale to wynika z tego, że musimy kilka wpisów opublikować
i możemy zrobić bezpośrednio tutaj na bazie danych. Zróbmy
jeszcze na przykład ten published, teraz
nam się pokażą posty, jak widzisz opublikowane, w zasadzie
jeden z nich się pojawił tylko i to wynika z tego że drugi wpis
ma Premium 1 i Premium ma się nie pokazywać jak nie jesteś zalogowany. Czyli
działa wszystko poprawnie, jeżeli się zalogujemy na jakiegoś użytkownika, musimy zerknąć
jacy nam się utworzyli, to są ci użytkownicy z factory,
które stworzyliśmy i mają hasło password się
zalogujemy na takiego użytkownika to zauważ, że już dwa posty się teraz pokazują
bo zalogowani widzą posty premium, więc to wszystko działa, natomiast chciałbym jeszcze zrobić
jedną rzecz. Wyświetlać właśnie taką gwiazdkę przy tych wpisach które są wpisami Premium i to
musimy zmodyfikować znowu kilku miejscach, niestety. Tutaj
będziemy chcieli dodawać coś co mamy tutaj, może w ogóle zróbmy
sobie taką całość już, if post Premium
and if i coś takiego chcemy stawiać
po prostu kilku miejscach. Dokładnie to będzie tutaj i w
posts również. Mieliśmy tutaj Premium w ten
sposób i również
tutaj. Okej
teraz jeżeli wpis jest Premium, to rzeczywiście to widać i jeżeli nie to
nie. Jednak dla admina wciąż powinny być wyświetlane wszystkie i to możemy
potwierdzić przechodząc sobie do logowania i logując na dane admina.
Jak widzimy, wszystkie wpisy
się wyświetlają czyli dla admina nie ma żadnego znaczenia, za to admin może teraz oznaczyć
któryś jako opublikowany i premium i powinno to bez zostać zapisane.