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 lekcji zajmiemy się tym, aby tagi wyświetlać w tym miejscu poprawnie
oraz aby po kliknięciu na taki tag czytała się lista wszystkich wpisów, które
są do takiego tag'u przypisane albo do których ten tak jest przypisany, bo tutaj
możemy mówić tak i tak. Zatem najpierw zajmiemy się wyświetlaniem tych
tagów, to będzie dosyć proste, więc ja tutaj może wklej
od razu gotowe fragmenty kodu, czyli to co było to i tej pory zastąpimy
takim kodem, a zatem jeżeli posts tags count, jeżeli ich jest
więcej niż zero to wtedy chcemy zrobić foreach i każdy wyświetlić,
konkretnie wyświetlić jego name. Na razie linku nie robimy, zaraz się tym zajmiemy.
Natomiast jeżeli masz jeszcze przez moment wątpliwości skąd pod post tags coś
się bierze to przypomnę, że to my nazywaliśmy to tags definiując
relację, resztę robi za nas już laravel, pobierając te tagi z
odpowiedniej tabeli, zatem coś takiego jeżeli sobie tutaj dodamy, musimy
to dodać w kilku miejscach, bo tag jest zdefiniowany na szablon, tutaj i
to było posts i jeszcze w pojedynczym wpisie również
to zaktualizujemy i w tym
miejscu, okej, te wpisy teraz czy te
tagi powinny się wyświetlać. Zobaczmy, tak też się stało. Jeżeli przyjdę do
takiego wpisu również tak jest i teraz będziemy chcieli utworzyć odpowiedni kontroler i
podlinkować każdy tych tagów pod taki kontroler. W zasadzie, bo
tutaj możesz zauważyć że większość tych wpisów takich tagów nie ma, jeszcze jedna rzecz, którą możesz
zrobić jako zadanie domowe, czyli wygenerować sobie factory i seeder,
który przy seed'owaniu bazy danych, już to wielokrotnie tym kursie
widziałeś, będzie tworzył również fejkowe tagi i przypisywał je do
postów ale w jaki sposób je przypisywać to już zobaczyłeś lekcji
poprzedniej czyli za pomocą sync albo attach i detach i to spokojnie w factory
zrobić możesz. Skupmy się jednak na stworzeniu odpowiedniego kontrolera,
więc przejdziemy do konsoli i wygenerujemy taki kontroler z użyciem artisan
make controller i będzie to TagController. Teraz
go otworzę i w nim będziemy chcieli mieć jedną
metodę, w zasadzie, czyli index i zanim
jednak ją uzupełnimy to od razu przejdziemy sobie do web i może
w tym miejscu gdzie mieliśmy posty to
ją zdefiniujemy. Będzie to oczywiście get i następnie tag i slug
takiego taga, dlatego wcześniej ten slug utworzyliśmy, bo wiedziałem że będzie nam potrzebny. Odwołamy
się do TagController i następnie index i teraz
możemy ustawić dowolną, więc nazwijmy to posts tags, czyli mając
teraz taki route, jeżeli wrócimy do miejsca w którym linkowaliśmy
każdy z tagów., czyli tutaj to już będziemy mogli to poprawnie zrobić, a zatem
route będzie wyglądało tak posts.tags i
musimy tutaj przekazać jeszcze slug, czyli
tak tag slug, dokładnie coś takiego, znowu musimy
to kilku miejscach podmienić, tutaj
i również tutaj. Zobaczymy
i teraz po najechaniu na każdy z tagów jak
widzisz mamy adres na dole w przeglądarce tag typo style
i tak dalej i teraz po kliknięciu oczywiście wywoła się
ten oto Controller i co my w nim chcemy zrobić. Na pewno u
góry powiemy, że chcemy korzystać z App Post
i App Tag, bo obie rzeczy będą
nam i teraz chciałbym po prostu zwracać ten sam widok, w
którym w PostController zwracaliśmy, czyli jest to taki oto
widok tutaj, czyli
chcemy wyszukać jakichś postów. No właśnie ale jakich, takich
które zawierają tak przekazany tutaj jako slug, skąd
to się bierze, oczywiście w web zdefiniowaliśmy że jakiś slug tutaj będzie przekazywany,
on nam skoczy tutaj i chcemy wyszukać wszystkich postów które są opublikowane,
wiemy że tam definiowaliśmy taki queryscope, więc wszystko to
będzie działać dokładnie tak samo, chcemy żeby tu było latest, chcemy
paginować po 3 na stronę, ale wcześniej chcemy zrobić jedną istotną rzecz,
czyli wyszukać tylko takich, które zawierają tag o takim
slug'u, ale zauważ, że my tutaj mamy dosyć skomplikowaną tą tabele, bo w ten
sposób te przypisania wyglądają, więc jak można to zrobić. Okazuje się,
że laravel nam tutaj sprawę dosyć mocno ułatwia, dlatego możemy skorzystać
z takiej metody whereHas, podajemy tags i następnie
musimy podać taką funkcję, w której będzie query i w tym query
możemy następującą rzecz, zmodyfikować dokładnie mówiąc, where dlatego
że to query już się będzie odwoływać do tagów. Czyli mówiąc tutaj where odwołuje
się do tagów, where slug takiego taga jest
równy przekazanemu slug'owi ale w PHP jeszcze żeby tutaj do tej zmiennej był
dostęp, ona jest tutaj w tym scope'ie, tutaj do niej nie ma dostępu, to musimy
skorzystać z zapisu use slug
i teraz wewnątrz tej funkcji do tego dostęp mieć będziemy, czyli jeżeli mówimy whereHas tags,
to wewnątrz tej funkcji query odnosi się do tagów i na nim możemy robić where,
tak jakbyśmy pytali o tagi, dalej już będzie standardowo i to
powinno zadziałać, oprócz tego, że tutaj widzę że podświetla nam się jeszcze jakiś błąd.
Oczywiście średnika tutaj zabrakło. Zobaczmy. Po
kliknięciu na test powinno pokazać wszystkie wpisy które
mają taki tag, dokładnie tak też stało, a że mamy tylko jeden taki
wpis, to tylko jeden się pokazał, aczkolwiek gwarantuję, że pokazałyby
się wszystkie i łącznie z paginacją, która by działała i tak dalej. To
zatem tyle jeżeli chodzi o relacje. Mam nadzieję dosyć dobrze je zrozumiałeś, mamy
jeszcze różne inne typy relacji, które czasami się przydają, więc jeżeli będziesz potrzebował
zrobić coś innego koniecznie zerknij do dokumentacji laravel, tam wszystko jest
naprawdę dobrze i ciekawie opisane.
https://laravel.com/docs/eloquent-relationships
Wyświetlanie tagów · 1 min
@if($post->tags->count() > 0)
<ul class="tags">
<li><i class="fa fa-tags"></i></li>
@foreach($post->tags as $tag)
<li>
<a href="#">{{ $tag->name }}</a>
</li>
@endforeach
</ul>
@endifWyświetlanie tagów · 1 min
@if($post->tags->count() > 0)
<ul class="tags">
<li><i class="fa fa-tags"></i></li>
@foreach($post->tags as $tag)
<li>
<a href="#">{{ $tag->name }}</a>
</li>
@endforeach
</ul>
@endifWyświetlanie tagów · 1 min
@if($post->tags->count() > 0)
<ul class="tags">
<li><i class="fa fa-tags"></i></li>
@foreach($post->tags as $tag)
<li>
<a href="#">{{ $tag->name }}</a>
</li>
@endforeach
</ul>
@endif