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 i w kilku kolejnych lekcjach pokażę ci, jak dodać taką mini sekcję administracyjną
do naszej strony, mianowicie tak abyśmy mogli dodawać, edytować oraz
usuwać wpisy, które tutaj się pojawiają, bo razie generujemy jest użyciem
Factory więc one są sztuczne, bardzo nam to ułatwia pracę, nie mnie jednak
docelowo chcemy móc je dodawać sposób ręczny. Teraz jak
będziemy chcieli to zrobić? Będziemy chcieli utworzyć oczywiście odpowiedni kontroler dla adminów,
a dopiero później zajmiemy się tym kto może dodawać wpisy, a kto nie i ten
kontroler będzie odpowiedzialny za wszystkie wymienione przeze mnie akcje, dlatego zaczniemy
od tworzenia sobie takiego kontrolera, więc przejdziemy do konsoli i utworzymy
nowy kontroler. Zauważ że mamy coś takiego już jak PostController
tutaj i będę chciał znowu stworzyć PostController, ale wewnątrz takiego namespace
admin dlatego zrobimy rzecz następującą, php artisan make:controller
i tutaj podam admin i dopiero teraz PostController
i dodam jeszcze taką flagę r, która oznacza resourcefull controller.
I co to znaczy, zobaczysz za sekundę, ale niech on nam się utworzy, w
tym momencie. Zauważ, że dzięki namespace, które podałem utworzył katalog admin
i PostController oraz to namespace oczywiście jest tutaj odpowiednio uzupełnione i
to jest dla nas bardzo ważne dlatego ta klasa może się nazywać tak samo jak klasa PostController
tutaj i dodanie flagi r czyli resourcefull oznacza, że
mamy tutaj już mnóstwo metod, których normalnie by tutaj nie było i te metody
pozwalają nam na dodanie odpowiednich akcji, dla
różnych właśnie zadań, które są tutaj potrzebne. Możesz
je nazywać dowolnie, nie ma to znaczenia. Natomiast ja od początku tego kursu mówiłem ci że dobrą
praktyką jest nazywanie index kiedy wyświetlamy wszystkie jakieś item'y, jakieś
zasoby, create kiedy tworzymy store, kiedy chcemy zapisać i tak
dalej. Create będzie pokazywało nowy formularz po prostu, więc po kolei sobie przez
te funkcje, które tutaj są przejdziemy. Natomiast co będzie robiło index,
index wyświetlałoby nam wszystkie wpisy jakie mamy, na
przykład w panelu administracyjnym, ale że u nas ten panel będzie uproszczony, czyli on nie
będzie zawierał zupełnie osobnego layoutu, aczkolwiek mógłbyś to
zrobić, dlatego że w resources views layouts mamy
layout naszej strony jako master można by było utworzyć drugi jako admin blade php i
on mógłby wyglądać zupełnie inaczej. Ja jednak nie będę tego robił, stąd można
założyć, że nas u nas index, wyświetlający wszystkie wpisy, wygląda
dokładnie tak samo jak dla użytkownika. Dla admina będzie wyglądał tak samo, dlatego u
nas ten index akurat się nie przyda, ale normalnie miał byś tutaj listę
wpisów, powiedzmy w panelu administracyjnym, dlatego mogę tą metodę usunąć. W
ogóle, jeżeli są tutaj jakieś metody, ale nie przepisujesz ich nigdzie w
web.php, do routing'u, no bo po prostu można je na spokojnie usunąć. Teraz
mamy metodę, która nam mówi jasno, jeżeli nazywa się create, to ona pokazuje
formularz dla tworzenia nowego zasobu i to jest to co nas interesuje, czyli
ja chciałbym mieć formularz dla tworzenia nowych postów i mamy już HTML
do niego przygotowany, dlatego tutaj będę chciał zwrócić po prostu widok, który
będzie w katalogu admin. Zaraz go utworzymy, post
i nazwiemy go create, to oznacza tylko tyle, że musimy
przejść to views, utworzymy sobie tutaj nowy katalog admin posts, może
w ten sposób poest. Następnie create blade php.
To jest widok, który będzie nas interesował i teraz jeżeli byśmy przeszli
do HTML i do Admin, zauważysz że tutaj mam coś takiego jak new i
właśnie z tego będziemy chcieli skorzystać, czyli cały ten wrapper, który jest tutaj,
wrzucam, przeformatujemy i to
już będzie w porządku, musimy sobie dodać jeszcze tylko odpowiednie tagi
sekcji i zasadzie bez znaczenia skąd sobie to skopiujmy,
tak jak mieliśmy wcześniej, jak wspomniałem, tutaj rozszerzamy layout z
master. Mógłbyś rozszerzać na przykład layout z Admin i wtedy byłoby to wczytywane zupełnie
inny widoku. Dla uproszczenia, my pozostaniemy w tym
samym frontendzie. Można tak powiedzieć i tak to u nas mogło wyglądać,
dlatego zanim tutaj zrobimy cokolwiek więcej, to będę chciał zarejestrować
sobie taki route. Na razie to będzie dostępne
dla wszystkich, ale później zajmiemy się tym, w jaki sposób możemy ograniczyć dostęp do
takiego zesobu, więc route get, zrobimy tutaj Admin
i następnie będzie to Post, po prostu create
i teraz jak odwołać do kontrolera,
który ma taki namespace, który podałem. Otóż po prostu Admin następnie PostController
i metoda będzie to create. Tutaj
możemy nadać name i też możemy zrobić sobie to podobnie, czyli admin.post.create.
Dzięki temu będziemy mogli stworzyć link, zatem
przechodzimy do master i znowu gdzieś tutaj będę chciał ten link sobie dodać. Może
to będzie tutaj admin.post.create. Odświeżam,
zobaczmy, pojawiło się Create. Moglibyśmy zrobić tak, żeby tylko dla zalogowanych użytkowników
było to widoczne, a potem i tak będziemy to wykluczać dla tych którzy nie
są adminami. Teraz jeżeli kliknę Create, mamy jakiś
błąd, okej. On wynika z tego, że tutaj przekopiowałem sobie
to wszystko i post title się przekopiował, a nie mamy takiej zmiennej, więc tutaj będzie Create
New post. Raz jeszcze odświeżam i jak widzisz nasz formularz
się tutaj pokazał. W tej lekcji zatem to tyle. W kolejnej będziemy chcieli
tutaj dodać sobie walidację, czyli będziemy musieli utworzyć metodę, która przyjmuje dane
wysyłane z tego formularza i jeżeli uda wszystko z walidować to będzie
można zapisać taki nowy wpis w bazie danych i on się na stronie powinien pojawić.