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
Teraz zajmiemy się wyświetlaniem widoku do edycji wpisu. Będziemy
chcieli podlinkować tutaj te linki Edit do odpowiedniej akcji kontrolera,
ale to za moment, bo najpierw sobie musimy stworzyć odpowiedni
route. Jeśli przejdziemy do PostController, tutaj w Admin to
zgodnie komentarzami będziemy chcieli dostosować się tutaj to Edit. Usuniemy show
dlatego, że show są normalnie wyświetlało by nam pojedynczy wpis, ale że my nie
będziemy go wyświetlać w tej sekcji administracyjnej tylko pojedynczy wpis wyświetlamy na
stronie normalnie, to ta metoda nie będzie nam potrzebna, ale Edit, jak widzisz,
wyświetla formularz do edycji i ten formularz będzie identyczny
z formularzem, który mamy teraz do tworzenia nowego wpisu. Niemniej jednak rozdzielimy
go na dwa pliki i teraz co będzie robić Edit. No właśnie będzie otrzymywać
tutaj id, chociaż można to dostosować dowolnie. Przejdźmy zatem do
route i będę chciał utworzyć admin post, to
będzie get oczywiście, ale admin post i tutaj id. Tu już
nie musi mieć tego slug'a, bo slug był po to, żeby dla użytkowników ładnie coś wyświetlać, żeby
nie pokazywać i dla nas jest okej jako dla adminów, więc to
nam będzie działać, PostController i odwołamy się do metody Edit.
Dodamy tutaj jeszcze nazwę i nazwę do
admin.post.edit, czyli tutaj jest id
i zanim w ogóle zrobimy coś, cokolwiek innego to podlinkujemy sobie
wszędzie gdzie mieliśmy odwołanie do Edit, będzie to post blade
na pewno, czyli route
admin.post.edit i musimy tutaj przekazać jeszcze id, przypominam. Mamy
to dostępne pod zmienną post id. W kilku
miejscach to się znajduje, bo mamy trochę powtórzonego kodu, również
posts tutaj
i tutaj. Teraz już powinno być porządku, powinno
nam się to wyświetlać, ale nie będziemy tego testować zanim nie uzupełnimy tutaj wszystkiego,
co jest potrzebne, czyli to id mieć będziemy i teraz będziemy musieli znaleźć post,
który ma takie id, dlatego zrobimy to w sposób post, find
or fail. Jeżeli będzie face, zwróci po prostu 404, jeżeli
takiego nie znajdzie. Tutaj przekażemy id, czyli do metody find przekazujemy zawsze id, do findOrFail
również. Jeżeli się uda i taki post zostanie znaleziony to będziemy chcieli
wyświetlić widok, czyli return view i ten widok to
będzie admin.posts.edit i będziemy
ten post tam chcieli przekazać, bo niego dane będziemy wczytywać, więc on jest nam potrzebny, compact post
nam go przekaże, dlatego to musi być osobny widok, bo zbyt wiele if'ów musielibyśmy
napisać w tym widoku, który mamy create. Niemniej jednak jeżeli teraz
przejdziemy sobie do admin, w widokach
tutaj, posts możemy zduplikować to co się tam znajdowało
wcześniej, nazwiemy to
on po prostu edit, tutaj
zrobimy Edit Post, tutaj również. Tą
akcję dostosujemy sobie w lekcji kolejnej teraz
tutaj zamiast old będziemy chcieli sobie wyświetlić post title czy po
prostu dane z bazy danych, bo ten wpis wiemy, że istnieje, skoro go edytujemy, to znaczy,
że on już był, więc tak musimy to zrobić, teraz tutaj mieliśmy disabled selected
to selected z tego usuniemy i tutaj musimy sobie zrobić takie oto sprawdzenie,
jeżeli post type równa się text
to wtedy chcemy tutaj zrobić output selected. W
przeciwnym wypadku nic, w tej
zrobimy to samo z photo, okej jeśli chodzi o input o
typie date, on jest specyficzny, bo jeżeli przekazujemy jego value to musi być odpowiednio
sformatowana, więc musimy ją dobrze sformatować post
date i następnie format i sformatujemy ją
jako rok, miesiąc, dzień. Właśnie
w taki sposób, tylko żeby ona mogła być formatowana za pomocą format,
to znaczy, że date to jest jakiś obiekt, zobaczmy co mamy w post. No
właśnie zdefiniowaliśmy to już wcześniej, że protected dates date,
czyli to nam mówi, które właściwości, które pola
tego obiektu mają być zamienione na instancje klasy Carbon. To
już jest zamienione, zrobiliśmy to wcześniej, ale właśnie dzięki temu, że możemy tutaj to tak sformatować,
następnie published Premium, to jest coś czym się będziemy dopiero później zajmować, image
również dopiero zrobimy później, dlatego ostatnia rzecz, którą tutaj chce wyświetlić
jest to post content. No i teraz
możemy kliknąć sobie na dowolny wpis i zobaczyć czy nam to w ogóle zadziała. Po
odświeżeniu oczywiście, okej
pojawił się błąd, który prawdopodobnie wynika tutaj z nieodpowiedniej
ścieżki. Jak widzisz, teraz jest porządku, czyli jest
odpowiednio tutaj wszystko dodawane, data się uzupełniła, jest wpis, mamy
tytuł, mamy tekst i to jest dla nas, dla tej lekcji wystarczające. W
kolejnej lekcji zajmiemy się tym co zrobić, kiedy wyślemy te dane na serwer, w jaki sposób
jest zwalidować i zapisać bazie danych.