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
Obecnie wszystkie nasze wpisy przypisane są do użytkownika o identyfikatorze 1,
bo wygenerowaliśmy je za pomocą seeder'a. Natomiast teraz chciałbym zrobić tak,
że jeżeli przejdziemy do create i utworzymy sobie nowy wpis, to żeby on automatycznie
został przypisany do użytkownika, który go tworzy i teraz to by można było zrobić
na kilka sposobów, bo moglibyśmy w widoku, który mamy w create, w formularzu,
który tutaj jest zrobić ukryte pole do którego byśmy wrócili id
użytkownika, dlatego że mogłoby to wyglądać następująco, input hidden
mogłoby tam być name user_id i value
mogłoby wyglądać w następujący sposób. Możemy w dowolnym momencie odwołać się
do auth user i następnie
moglibyśmy zwrócić jego id. Natomiast dlaczego to jest bardzo złe rozwiązanie. Nigdy
nie powinnaś tego robić ten sposób bo user_id przechwyciłbyś po stronie serwera ale
oznaczałoby to że w dowolnym momencie ktoś może w takim formularzu podmienić user_id na
przykład na 2 i wtedy ten wpis zostanie przypisany do zupełnie innego użytkownika, niestety
można się spotkać z takim użyciem, dlatego chciałem o tym wspomnieć. Nie
ma potrzeby przekazywania id użytkownika z frontend'u z tego powodu, że
my możemy za każdym razem naszej aplikacji to id odczytać, jeżeli
użytkownik jest zalogowany, a wiemy że ten formularz może być wysłany wyłącznie
jeżeli jest zalogowany, zawsze będziemy mieli dostęp do modelu user
na którym będziemy mieli id, dlatego przejdźmy sobie to PostController,
który znajduje się w tym namespace'ie admin i w miejscu gdzie
mieliśmy store, czyli przechowywaliśmy wszystkie wpisy,
a więc zapisywaliśmy je, będziemy do wpisu tutaj gdzie robimy create
chcieli dodać id użytkownika, bardzo łatwo możemy to
zrobić, po prostu odwołamy się do data user_id i
to właśnie tutaj odwołamy się do auth user id. Natomiast
skoro tutaj mamy request możemy również zrobić to za pomocą zmiennej request,
to będzie dokładnie to samo, a więc takie id chcę przypisać, dopiero wtedy
przekazać to do post create. Przy edytowaniu, czyli update
nie będziemy tego zmieniać bo wyobraź sobie że inne admin na przykład zaktualizował
taki wpis jeżeli będzie miał taką możliwość i on ma identyfikator na przykład 2
to chcemy tego przepisywać do jego jakby
zasług że on ten wpis napisał, dlatego tylko przy zapisywaniu będziemy dodawać. Przy
aktualizacji nie ma potrzeby, dlatego że jeżeli wykonujemy post tutaj metoda update,
tylko te rzeczy które przekażemy zostaną zaktualizowane, więc jeżeli tutaj zabraknie
user_id to nie będzie tym żadnego problemu. Natomiast proponuję
jeszcze żebyśmy nie problemu z Mass Assigment exception to
żebyśmy tutaj dodali sobie user_id właśnie w tabeli fillable, ok,
teraz mam to powinno zadziałać. Spróbujemy
sobie dodać jakiś wpis i niech to będzie wpis
tekstowy, wybierzemy że jest opublikowany i wpiszemy jakąkolwiek
treść. Dodaję
wpis, błąd się nie pojawił. Jeżeli sobie zobaczymy w bazie danych taki wpis nam się
tutaj oczywiście pojawi user_id jest to 1, czyli w ten sposób będziemy
to mogę skojarzyć z użytkownikiem o identyfikatorze 1, na którego aktualnie jestem zalogowany,
okej. I teraz jeszcze chcę zrobić jedną rzecz w tej lekcji. Mianowicie
wyświetlić sobie kto napisał dany wpis. Żebyśmy
mogli zobaczyć jak to zrobić. Także mamy wpisy
i w miejscu w którym wyświetlaliśmy datę dodamy sobie coś takiego,
czyli ikonka użytkownika by i tutaj zobacz,
odwołuje się do post author i następnie do name i szybko ci jeszcze przypomnę dlaczego
author. Dlatego że nazwaliśmy metodę tutaj author w której zdefiniowaliśmy relację. To
nam zwróci model user czyli model użytkownika na którym
wiemy mamy name i dzięki temu właśnie będziemy to mogli wyświetlić. Dlatego
może to dodajmy sobie to wszędzie gdzie jest to potrzebne,
czyli to będzie na przykład tutaj i jeszcze musimy dodać
sobie w posts, czyli w tym
miejscu oraz w tym miejscu. Po odświeżeniu ten wpis
jak widzisz by Piotr Palarz już jest oznaczony przez odpowiedniego
użytkownika i to wszystko dzięki temu że kojarzymy wpis
za pomocą user_id z odpowiednim użytkownikiem.
Wyświetlanie autora wpisu · 4 min
<i class="fa fa-user"></i> by {{ $post->author->name }}Wyświetlanie autora wpisu · 4 min
<i class="fa fa-user"></i> by {{ $post->author->name }}Wyświetlanie autora wpisu · 4 min
<i class="fa fa-user"></i> by {{ $post->author->name }}