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 dodamy sobie jeszcze jeden komunikat, mianowicie o tym że użytkownik
został poprawnie zarejestrowany i to jest co przyda nam się wielokrotnie jeszcze w przyszłości
dlatego warto zrobić właśnie teraz. Więc to będziemy chcieli zrobić. Zanim
tutaj wypełnimy poprawnie dane, chciałbym zrobić rzecz następującą. Przyjdziemy
sobie do kontrolera RegisterController i teraz
chcielibyśmy tutaj dodać jakąś metodę, która pozwoli nam wykonać kod, kiedy
użytkownik zostanie zarejestrowany. Teoretycznie moglibyśmy to w tym miejscu, bo
wiemy, że tutaj użytkownik jest tworzony, ale nie musimy tego robić w ten sposób. Polecam
ci zawsze zaglądać do kodu źródłowego. Tutaj mamy ten trait RegistersUsers.
Jeżeli do niego przejdziemy, to tutaj mamy bardzo czytelne komentarze i jeden
z nich mówi nam The user has been registered, to jest metoda,
która zostanie wtedy wywołana. Oczywiście nie możemy tutaj nic zmodyfikować. Pamiętaj,
że ten plik jest wczytywany z katalogu vendor, a jest to katalog który nie jest
zapisywany w repozytorium tylko jest instalowany z użyciem composer'a. Natomiast
możemy tę metodę nadpisać. Jest to jak poprawna praktyka, więc ja ją
kopiuje, zwrócę ją sobie tutaj i wiemy w tej metodzie użytkownik jest już zalogowany. Teraz
pokażę Ci bardzo fajną rzecz, która jest dostępna w laravel. Czyli jak
możemy wstrzyknąć dane do sesji, do sesji to oznacza, że one będą żyły tylko
na czas konkretnego zapytania. Możemy odwołać się do globalnej funkcji,
którą laravel oferuje session, następnie one zwraca obiekty która ma
metodę flash i możemy podać jakby klucz i wartość. Wartością
może być dowolna rzecz, bo one są odpowiednio serializowanie, czyli może to być tablica i tak
dalej. Może to być zwykły string. Będziemy chcieli sobie tutaj robić coś takiego
jak message i wielokrotnie potem będziemy tego korzystać, a tutaj
chciałbym powiedzieć użytkownikowi Cześć, podaj jego imię i następnie
powiedzieć mu że został zarejestrowany. Automatycznie tutaj obiekt użytkownika jest
na przykład nam przekazywany. Jest to nic innego jak taki obiekt eloquent.
Czyli dokładnie tak samo jak byśmy wyszukali sobie user find i został
by nam zwrócony model. Dlatego tutaj będę chciał zrobić coś takiego Hi i z
interpolujemy sobie user name i dopiszemy You've
been registered and
logged in żeby było jasne o co chodzi, czyli teraz po zarejestrowaniu się, wywoła się
ta metoda, do sesji dodamy sobie pod kluczem message taką oto wiadomość i teraz musimy
ją jeszcze gdzieś wyświetlić, więc jeżeli przejdziemy do message to
możemy tutaj sobie zrobić kolejny if. Tutaj znowu będziemy mieli dostęp do funkcji session
i tutaj z kolei od razu można podać klucz, żeby coś zostało do nas zwrócone.
Czyli jeżeli w sesji znajduje się coś pod kluczem message, to chcę
tutaj dodać message, ale już bez klasy is-error i tą
wiadomość będę chciał wyświetlić. Ona
w ten sposób tutaj również będzie zwrócona. To powinno nam wystarczyć, spróbujmy
teraz zarejestrować jakiegoś użytkownika. Takiego już mieliśmy, nie usuwałem
go z bazy, więc będzie mieli błąd, ale w zasadzie nic nie stoi na przeszkodzie żeby po
prostu go skasować, jeszcze raz skorzystać z tych samych danych. Hasło
musimy wpisać 8 znakowe, chyba że sobie dostosujemy walidację. Próbujemy
i mamy jakiś błąd okej. Już
mówię z czego ten błąd wynika. Skopiowaliśmy sobie metodę, to bardzo ważne, żeby na to zwracać uwagę,
która tutaj robi sobie rype hinting request. Natomiast request
nie jest u nas dostępny, bo nigdzie tego nie zaimportowaliśmy nie powiedzieliśmy use. To
jest bardzo częste, jeżeli się coś kopiuje, trzeba zwracać uwagę na to co
było w danym pliku, więc przeszedłem sobie teraz do tego trait'a, kopiuje use, który
był u góry. To ja go mam tutaj i tym nam to już będzie działać. Z tym, że wygląda
na to że użytkownik został zarejestrowany. Dlatego jeszcze raz
go sobie usuniemy i wykonamy to z powrotem. Jak
widzisz przekierowało nas na home, to jest coś do czego jeszcze potem wrócimy. Przejdźmy sobie do account
register, okej. Widzimy
Hey Matthew you've been registered and logged in, czyli działa nam to świetnie. Zostało
to dodane do sesji, następnie strona została dla nas wczytana
i mogliśmy w sesji pobrać sobie tę wartość, oczywiście
za kolejnym przejściem stronę główną tego już nie ma, bo tylko jednorazowo jest dodawane do sesji.
Dzięki temu będziemy wielokrotnie jeszcze tym kursie mogli dowolnym miejscu robić
coś takiego, session flash message, doda się co tylko chcemy i wiemy,
że wtedy użytkownik zobaczy takie komunikaty na swoim ekranie.