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
Nasza strona nabrała już kolory tu dlatego że ładnie się wyświetla.
Nie mniej jednak cały jest to jeden statyczny plik który jest tutaj serwowany
dlatego będę chciał ci pokazać jak możemy podzielić ten plik na
kilka różnych plików i czym jest layout. Na razie wpakowaliśmy
to wszystko pliku index blade php, natomiast mówiłem ci że w
ogóle w katalogu resources tak naprawdę to ty rządzisz. Robisz co chcesz więc
tutaj mamy pełną dowolność w tym katalogu view views jak
chcemy nazywać nasze pliki, jaką tutaj stworzymy strukturę katalogów, więc
ja pokażę ci taką z jaką ja lubię pracować. Nie mniej jednak pamiętaj że możesz ją zrobić
dowolnie. Ja robię tak główny plik nazywam master
czyli będę chciał zrobić rename na tym pliku i będę
chciał zmienić jego nazwę na master blade php. Czy
to jest pierwsza zmiana, natomiast umieszczę go również katalogu layout czyli stworzymy sobie
tutaj nowy folder, nazwę go layouts i ten
plik master będę chciał po prostu przenieść okej
czyli taką będziemy mieli strukturę teraz layout to będzie dla nas coś
co jest jakby takim shell'em, taką skorupą, nie wiem jak to
dokładnie określić, ale całej naszej aplikacji czyli tym co ma head tutaj. Tym
co ma footer i tak dalej. Chociaż można jeszcze footer header podzielić na osobne pliki, ale
nie będzie to nas konieczne, więc layout jest taki główny layout
naszej strony do którego będą można powiedzieć wstrzykiwane poszczególne sekcje
i layout'ów możesz mieć wiele dlatego że możemy mieć na przykład zaplecze administracyjne
i tutaj utworzyć zupełnie inny wygląd, inny layout dla tego zaplecza. My będziemy
mieć tylko jeden i umieściłem go jak widzisz katalogu layouts i teraz
oczywiście nasza strona się zepsuje, bo nie mamy już pliku index
który web php serwowaliśmy. Natomiast co będę teraz chciał zrobić, zobacz, w
layout'cie chodzi o to żeby rzeczy które są wspólne dla wszystkich podstron
zostawić, a to co będzie się zmieniać po prostu powyciągać do osobnych plików, więc u nas wspólne
na pewno będzie to menu, cały ten header i chociaż można go jeszcze do takiego partial'a
czyli do osobnego pliku w wyekstrahować i zrobić tutaj include
to nie będziemy tego robić bo nie ma tutaj wiele kodu html żeby nam
to przeszkadzało. Natomiast jeżeli przejdziemy sobie tutaj do sekcji main
content to to jest właśnie to co będzie się na przestrzeni różnych
podstron zmieniać, dlatego będę chciał wszystko co tutaj jest wyciąć i w
tym miejscu wstawić taką dyrektywę jak yield i napiszemy
tutaj content. Okej, nie stawiamy
tutaj na końcu średnika, bo jeżeli zrobimy to on pojawi na stronie. Jak widzisz mam
tutaj ładne kolorowanie tej składni blade, właśnie przez dodatki o których mówiłem wcześniej do VS Code, ale
co jest istotne to w blade czyli właśnie w tych widokach, mamy
dyrektywy, które właśnie zaczynają się od małpki oraz
będziemy mieli wyrażenia które będziemy za moment również w inny sposób zapisywać
i teraz jeżeli chciałbyś się więcej dowiedzieć na temat samego blade to znajdziesz tutaj
wszystko w tej dokumentacji i jest to ogólnie bardzo proste. Ja ci tym
kursie wiele z tych rzeczy pokażę ale jeżeli chcesz to poczytaj również o tym tutaj i
jeżeli tutaj zrobiliśmy yield content to znaczy że to miejsce będzie
wstawiana sekcja nazwie content z poszczególnych szablonów.
Czyli mamy główny layout i teraz ja będę chciał w views utworzyć sobie nowy plik
w katalogu pages i nazwiemy go posts blade
php. Znowu tutaj jest dowolność. Możesz ten katalog nazwać jak chcesz. Ja
ten plik będę chciał zapisać ale uprzednio wklejając do niego wszystko to co wycięliśmy
wcześniej, okej chyba jest to dobrze sformatowane, tak
i powinno nam się to tutaj pojawić odświeżmy jeszcze ten widok, jak
widzisz pages post tutaj się znalazło i teraz
musimy zrobić jedną ważną rzecz. Otóż na samej górze zrobimy coś takiego,
użyjemy dyrektywy extends i napiszemy
tutaj layouts master. Co
to oznacza? Oznacza to że kiedy skierujemy nasz routing na wyświetlanie
widoku posts to oznacza że on chce rozszerzać layouts
master, a więc dokładnie odzwierciedlamy w katalogu view strukturę katalogów layouts
i nazwa master. Tutaj również możesz skorzystać z ukośnika. Ja preferuję
kropkę, jeżeli katalog layouts nazwiesz inaczej, tutaj musisz również to dostosować i
to oznacza że ten layout będzie rozszerzał ten layout i
co to dokładnie oznacza zobaczysz w tym momencie. Chcielibyśmy całość
która tutaj się znajduje wstrzyknąć do głównego layout'u do sekcji content,
czyli tutaj, żeby to zrobić musimy skorzystać z dyrektywy section
i napisać tutaj content. Te nazwy oczywiście są dowolne, natomiast
bardzo ważne jest to żeby taką sekcje domknąć za pomocą takiego zapisu and
section, czyli sekcja się rozpoczyna i kończy wszystko co jest wewnątrz. Powinno
zostać wstawione tutaj i teraz pozostało nam jedynie przejść
do web i w miejscu w którym kierowaliśmy na widok index
to skierujemy na widok pages post, zapisuje
i możemy przejść do przeglądarki, odświeżyć naszą stronę i jak widzisz działa
nam to poprawnie, posty nam się jak najbardziej wczytują, czyli zostały wstawione w to
miejsce dokładnie gdzie chcieliśmy. Na koniec tej lekcji pokażę
ci jeszcze jedną rzecz, otóż sekcja taka jak zdefiniowana tutaj nie musi zawierać
w sobie jakiegoś kodu. Możemy zrobić sekcję w ten sposób, nazwiemy ją
na przykład title i możemy jako drugi parametr pobrać tutaj od jakby zawartość
tej sekcji więc ja będę chciał żeby tytuł tej podstrony to było posts i coś
takiego tutaj zostawimy, to samo w sobie nie zmienia zupełnie nic. Natomiast jeżeli teraz
przejdziemy do layout'u który rozszerzamy to możemy podobnie jak tutaj robiliśmy yield
zrobić taki yield w miejscu gdzie mamy title czyli będziemy chcieli
na każdej podstronie móc zmieniać sobie title. Nie chcę żeby on tutaj bo na sztywno
zapisany jako posts ale żeby był on tutaj wstrzykiwany z poszczególnych
szablonów, więc napiszemy tutaj yield title
i co ważne to yield jako drugi parametr zawsze możemy podawać wartość
domyślną, czyli jeżeli zdarzy się jakiś szablon który nie zdefiniuje takiej sekcji
to chcemy tutaj wstawić jakąś wartość domyślną. Możemy tutaj pisać po prostu home. Zobaczmy
czy nam to zadziała, odświeżam tutaj stronę i po pasku u góry widzimy
że ten tytuł, jak najbardziej jest w tym miejscu.
Okej, jeżeli go zmienimy tutaj czyli dodałbym
jakiś wykrzyknik i tutaj odświeżę to również to się w miejscu zaktualizuje. Jak
zatem widzisz w taki sposób możemy stworzyć sobie layout oraz podwidoki
w których mamy już mniej kodu i będzie to kod do którego później jeszcze będziemy mogli z
kontrolerów przekazywać odpowiednie dane i oczywiście to wszystko
będzie działać dynamicznie.