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 obrazków na stronie. Zrobimy
to pomocą takiej fasady storage, która jest dostępna. Bo teraz jeżeli zapisaliśmy
ten obrazek to skorzystaliśmy z metody, która na obiekcie jakby request
dla nas była dostępna ale można to było również zrobić z użyciem takiej fasady storage i z
niej teraz skorzystamy, będzie to storage get i będziemy musieli podać nazwę pliku który
mamy zapisany w bazie danych. Nie musimy pogadawać dysku, tak jak tutaj jest to pokazane. Bo
my już ustawiliśmy jako domyślny dysk public, dlatego wystarczy w storage
get i ta ścieżka którą mamy przy wpisie w bazie danych, to nam zwróci pełną ścieżkę z której
będziemy mogli skorzystać, więc przejdziemy sobie tutaj i ja to
chcę zrobić sposób, który będzie na najlepszy to znaczy stworzymy
sobie taki wyliczony atrybut i to jest coś
co już robiliśmy, dlatego że robiliśmy getExcerptAttribute i teraz
chciałbym zrobić getPhoto bo mamy taką właściwość jak image, natomiast
nie możemy jej nadpisać za pomocą getImageAttribute dlatego nazwiemy to photo i
co ja tutaj chcę zrobić. Chcę zrobić dwie
rzeczy. Bo zauważ że my cały czas jak pracujemy developmen'cko to my mamy wpisy w naszej
bazie danych, które photo mają przypisane jako link https i tak dalej, więc
taki link, jak przekażemy do storage get, nam to zadziała dlatego chciałbym sprawdzić czy
na początku jest http. Jeżeli tak to po prostu to zwracamy. Jeżeli
nie tak tutaj photos, to będziemy szukać odpowiedniej ścieżki, więc tym celu
skorzystamy z Helper'a laravel string starts with. Jeśli
on się zaczyna od http tutaj musimy podać this image. Jeżeli
się zaczyna od http, to po prostu zwrócimy this
image. Natomiast w przeciwnym wypadku chcemy odwołać się do
storage. Musimy to zaimportować, wcisnąłem enter i tak to powinno wyglądać
u ciebie. To jest bardzo potrzebne i storage następnie
get this image i to mam zwróci
pełną ścieżkę, więc mamy teraz taki atrybut getPhotoAttribute i dzięki
niemu możemy przejść wszędzie gdzie z tego korzystaliśmy, czyli na przykład do pojedynczego
wpisu, tutaj gdzie on miał obrazek, to zamiast image skorzystamy z photo,
dokładnie w ten sposób i
teraz również do posts, bo nam się przewiało w kilku miejscach, tak
samo tutaj zrobimy photo. Zobaczymy czy coś nam się pokaże. Jak
widzimy obrazki się wyświetlają i gdzieś tutaj powinien być również ten który dodaliśmy,
był to taki czerwony obrazek, okej,
on się nam nie wyświetlił nie wiem dokładnie który to jest wpis,
musimy poszukać jest to test, wpis testowy. Przejdźmy
do jakiegoś i tutaj po prostu podmienimy, test post, okej.
Nie wczytał się ten obrazek ale zaraz powiem dlaczego. Zobaczymy jaka
ścieżka jest tutaj podstawiona okej ścieżka nie jest poprawna. Ja teraz się zortietowałem, że
prawdopodobnie skorzystaliśmy ze złej metody tutaj storage get. Powinno to być storage
URL oczywiście, storage get zwraca nam jakby plik na którym możemy pracować. On
jest opakowany w pewien sposób metodami. My potrzebujemy storage URL,
teraz ten URL jest poprawny. Co nie zmienia faktu że obrazek się nie wyświetla ale zobacz larablogger.test
storage photos i tutaj jest ta nazwa czyli wydaje się
że wszystko jest, z tym że ja ci mówiłem że jedyny katalog publiczny do którego
się można odwoływać to jest katalog public, a storage jest zupełnie gdzie indziej.
Dlatego teraz trzeba wykonać pewien symboliczny link, to się robi na serwerze i
ten symboliczny link będzie kierował tutaj
w public katalog storage na katalog public który jest tutaj i
wtedy będzie to działać poprawnie, dlatego przejdziemy sobie do naszej maszyny wirtualnej
i piszemy php artisan storage link i
jest takie polecenie jeśli również przy deploymencie wykonuje, na końcu tego kursu
ci pokażę jaki sposób to zrobić i utworzy nam to właśnie taki link
symboliczny. Dzięki temu jak tutaj odświeżymy to powinno być w porządku.
Bo kiedy przeglądarka wysyła zapytanie do serwera pod ukośnik storage
to właśnie ten link symboliczny symboliczny z katalogu public storage
kieruje w odpowiednie miejsce. Jeżeli kiedykolwiek słyszałeś takiej koncepcji linków
symbolicznych w systemie Linux to dokładnie to się teraz wydarzyło. No
teraz to wszystko działa poprawnie. Jeżeli podmienimy całą naszą aplikację, ale storage
zostanie z wszystkim plikami. Po jej podmianie znowu zrobimy storage link to
będzie to działać tak powinno. W ten zatem sposób możemy
sobie wysyłać obrazki na serwer, natomiast jeszcze chciałbym ci pokazać jak możemy
je usuwać kiedy usuwany będzie wpis.