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
Aby nasza strona była bardziej dynamiczna potrzebujemy danych, które będzie
mogli wstrzyknąć do widoku. Natomiast te dane będą oczywiście pochodzić z tabeli
w bazie danych MySQL, dlatego pokażę ci w jaki sposób możemy utworzyć sobie
schemat takiej tabeli, a następnie rzeczywiście utworzyć już fizycznie taką tabelę
w bazie danych. Do tego celu skorzystamy z migracji. Natomiast ważna
uwaga jest taka, że na tym dobrze żebyś rozumiał przynajmniej Jak działają SQL'owe
bazy danych. Czym jest rekord, czym jest tabela i tak dalej i że
mamy różne typy danych, które możemy w bazie danych przechowywać, bo chociaż nie będziemy pisać
zapytań SQL'owych w tym kursie. Będziemy korzystać z narzędzi
które nam to wszystko opakowują w przyjemny sposób. To i tak należy
rozumieć w jaki sposób te bazy danych działają. Dlatego ja jestem już na stronie dokumentacji
laravel i przesłałem do tabeli która pokazuje nam różne typy danych, jakie
możemy reprezentować w bazie danych MySQL'owej i w jaki sposób to
zrobić. Natomiast gdzie wpisać to, co widzisz tutaj, o tym powiemy sobie właśnie
teraz. Czyli będziemy chcieli w naszej bazie danych do której zasadzie możemy się od
razu podłączyć za pomocą Chrome MySQL Admin, dodaliśmy ją tu wcześniej
do ulubionych. Możemy się do niej podłączyć i tutaj wybrać bazę danych larablogger.
Jak widzisz nic jej ma nawet byśmy tutaj odświeży. Będziemy chcieli
żeby tutaj pojawiła się tabela o nazwie posts i żeby w niej były
odpowiednie pola pozwalające nam na zapisanie posta, więc przejdziemy
sobie teraz tutaj i będę chciał przejść oczywiście do naszej wirtualnej
maszyny i tutaj skorzystamy ponownie tak jak w wersji poprzedniej z
php artisan make. Natomiast tym razem nie będzie to controller,
ale będzie to make migration. Przy okazji jeżeli byś sobie wpisał tutaj
php artisan to przypominam, że wszystkie komendy możesz zobaczyć i mamy tutaj
na przykład make migration i jeszcze taka jedna uwaga. Jeżeli
chcesz zobaczyć konkrety pomocy dla danej komendy możesz pisać php
artisan help i następnie dopiero make migration. Wtedy
zobaczysz dokładnie jakie tutaj dodatkowe argumenty można podać. Okej,
więc wpiszmy php artisan make migration i
teraz ważna rzecz zerknijmy na sekundę
do katalogu database, o którym już wcześniej mówiliśmy i do migration. Tutaj
są już jakieś dwie migracje i my chcemy utworzyć kolejną, więc
zauważ w jaki sposób one są nazywane. Jest to też pewna konwencja za
którą warto podążać. Jeżeli chcemy utworzyć tabelę o nazwie posts, jak będzie w naszym
przypadku, to nazwiemy migracje create posts table. Tutaj
mamy create users table. Te dwie migracje tutaj są dostępne zaraz po zainstalowaniu
laravel'a. My ich nie tworzyliśmy, więc wpiszmy sobie create posts table.
Wciskam enter i laravel wygenerował nam taką migracje.
Zobacz, przejdziemy do niej i od razu mamy tutaj pewien blueprint. Jak
zauważyłeś tutaj być może laravel wie że nazwa naszej tabeli
to będzie posts i on to wie dokładnie dlatego że w nazwie podaliśmy create
post table. Czyli już tej nazwy potrawi pewne rzeczy odczytać. Okej
i teraz będziemy chcieli stworzyć tabelę, która
będzie zawierała kilka pól, w zasadzie one będą odzwierciedlały
to co mamy tutaj w http controllers i post controllers, czyli będziemy
chcieli żeby było id title content date type i image. Te
pola chcemy sobie odzwierciedlić więc przejdźmy do create posts table.
Jak widzisz od razu tutaj laravel dodał dla nas big increments id.
Co to oznacza? Oznacza to że automatycznie będziemy mieli id które
będzie autoincrement'owane. Nie musimy tego zmieniać zawsze warto to zostawić
w naszym przypadku będzie to kluczowe i tak jest zazwyczaj w bazach danych że to id jest
potrzebne. Z kolei timestamps, jeżeli z tego skorzystamy to
utworzy nam dwa pola. Będzie to created ad oraz update ad. Polecam
również zawsze to zostawić dzięki tym polom będziesz wiedział kiedy dany rekord został utworzony.
Kiedy był aktualizowany i tak dalej. Warto te dane mieć, natomiast pomiędzy tymi
dwoma utworzymy sobie te które są dla nas potrzebne, czyli po
pierwsze potrzebujemy title dlatego napiszemy table
i string, string to będzie pole które ma 255
znaków w bazie danych więc jeżeli potrzebujesz dłuższego tytułu musisz skorzystać z pola typu
tekst. Tutaj podajemy nazwę właśnie tego pola w tabeli i w
naszym przypadku będzie to title, ok, tyle wystarczy. Jeszcze
jeśli byśmy wrócili tutaj i wyszukamy sobie tekst, gdzieś
tutaj powinno być oczywiście. Jak widzisz jest tym miejscu, to pokaże
nam że jest to text equivalent column. Jeżeli nie jesteś pewny co
oznacza dany znak. W naszym przypadku było to string, ja tutaj napisałem string, a
nie tekst okej. Tutaj można podać maksymalną długość jeszcze. To jest to odpowiednik
VARCHAR, jeżeli nie wiesz co on oznacza, ja to robię dosyć często po prostu sobie
googluje, mysql, wchodzę na pierwszy wynik
tak naprawdę i od razu mogę przeczytać więcej na temat tego
konkretnego typu danych, czyli co on sobie mieści,
kiedy go używać i tak dalej więc w razie czego polecam. Czyli to będzie nasz tytuł.
Kolejna rzecz której potrzebujemy to będzie content. No właśnie tutaj sytuacja jest
zupełnie inna, potrzebujemy bardzo długiego pola, takiego które dużo tekstu
może przechować, dlatego będzie to typ tekst. Nazwiemy to content i
chciałbym zrobić jeszcze jedną rzecz, bo kiedy będziemy mieli wpisy z obrazkiem, tam
nie będziemy mieli czegoś takiego jak content, czyli nie musi być to wymagane dlatego
chciałbym zrobić tak żeby to pole nie było wymagane, bo przeciwnym wypadku jeżeli będziemy dawać
rekord do bazy danych i nie podamy content to będziemy mieli błąd. Dlatego
można tutaj od razu dopisać nullable i to oznacza że to
pole będzie przyjmowało również wartość null, nie będzie obowiązkowe. Tutaj
można dopisywać jeszcze takie jak na przykład default, czyli jeżeli dodamy nowy rekord, to
na przykład mam domyślną wartość 0 i tak dalej i to również chciałbym
żebyś to zobaczył. Można znaleźć w tym miejscu, tutaj są
wszystkie te rzeczy jak na przykład nullable, po którym przed momentem, gdzieś
tutaj powinno być. Dokładnie tutaj i jeszcze kilka innych. Ja
chciałbym tutaj dodać jeszcze datę, bo chociaż powiedziałem ci że timestamps doda nam coś takiego
jak created ad oraz updated at. Natomiast one będą automatycznie aktualizowane
kiedy zostanie taki rekord utworzony w bazie i kiedy zostanie zaktualizowany. Natomiast
ja chciałbym mieć jeszcze swoją własną datę po to, żeby przy wpisie później można ją było
zmienić. Czyli jako administrator wpisuje sobie jakieś wpisy na bloga. Chciałbym móc ręcznie
ustawić datę. Nie chcę zmieniać tej oryginalnej created at, która tam będzie dlatego bo
mam sobie swoją datę i będzie to pole typu timestamp, nazwę
go date i ono również będzie wymagane jeżeli nic tutaj więcej nie podamy. Teraz
będziemy jeszcze mieli typ. Zauważ, że mieliśmy tutaj type i było to text to
photo. Tu już można się zastanawiać czy type to może lepiej gdyby to był
number, czyli na przykład 1 to będzie tekst 2 to będzie photo. To już jak wolisz.
Ja zrobię to w ten sposób, jak mieliśmy tutaj, czyli będę chciał nazwać to
pole czy określić je jako string, czyli do 255
znaków ono będzie zawierało. Będzie to warkar i nazwiemy je jako
type. To będzie również wymagane i teraz jeszcze ostatnia rzecz będzie to image
czyli link do obrazka. To będzie tylko przy wpisach, które są
o typie photo, a nie tekstowych. Dlatego to pole również musi być nieobowiązkowe,
ale też to będzie string, wpiszemy tutaj nazwę image i wybierzemy nullable
czyli ono jest nieobowiązkowe. Okej czyli zdefiniowaliśmy
tutaj co będzie się działo przy tworzeniu takiej tabeli. Zauważ, że od razu tutaj
również mamy metody down i mamy tutaj drop If exists dlatego
że możemy wykonywać migracje a potem możemy również je cofać więc jeżeli będziemy cofać migracje
to będzie wykonywana metoda down, okej. Jak
taką migracje wykonać? Przypomnę raz jeszcze, że my tutaj w tej bazie danych kompletnie
nic mamy, natomiast jeżeli teraz przyjdziemy sobie do naszego ssh i
wpiszemy php artisan migrate,
to wykonamy wszystkie migracje, które się tutaj znajdują, czyli również dla
nas zostanie utworzona tabela z użytkownikami, którą w razie czego później będziemy
mogli zmodyfikować. Możemy również od razu utworzyć tabelę do resetowania
hasła. To są te które laravel daje nam za darmo, że to powiem,
więc będą również utworzone. Moglibyśmy tutaj podać z której migracji
chcemy skorzystać ale wykonajmy po prostu wszystkie i zobaczmy. Wszystko
przebiegło poprawnie i pamiętaj że w pliku i env musimy mieć dobrze skonfigurowaną bazę
danych. Teraz jeżeli odświeżymy to się okaże że zostały
utworzone cztery tabele czyli pierwsza nich jest to migration, migrations i
jest to tabela dla laravela, żeby on wiedział które migracje już wykonał,
to on sobie tutaj to zapisuje, czyli jeżeli ponownie byśmy wykonali php artisan migrate, to
on wie nic nie musi migrować, ale gdybyśmy którykolwiek z rekordów
usunęli, to wtedy zostanie on na nowo zmigrowany, więc tutaj najlepiej nic nie
modyfikować. Chyba że wiesz co robisz i chcesz raz jeszcze coś wykonać. Natomiast
pokażę ci na to inne sposoby później, password reset została utworzona, users
również, ale do tego wrócimy później. Natomiast dla nas najważniejsze jest że została utworzona tabela
post. Jeżeli byśmy podejrzeli na jej strukturę, to widzimy wszystkie
pola. Właśnie w taki sposób jak my je zdefiniowaliśmy, to zatem
tyle jeżeli chodzi o migracje. Jak widzisz one ci pozwalają tworzyć strukturę tabeli
i następnie taką tabelę fizycznie już utworzyć. Będziemy ją później również mogli modyfikować. Do
tego wrócimy później. Natomiast w kolejnej lekcji dodamy sobie tutaj jakieś wpisy, po
to aby już dynamicznie na stronie je wyświetlać.
Nowy wpis · 5 min
$post = new App\Post(['title' => 'Beautiful image', 'date' => now(), 'type' => 'photo', 'image' => '/images/image-01.jpg'])Nowy wpis · 5 min
$post = new App\Post(['title' => 'Beautiful image', 'date' => now(), 'type' => 'photo', 'image' => '/images/image-01.jpg'])Nowy wpis · 5 min
$post = new App\Post(['title' => 'Beautiful image', 'date' => now(), 'type' => 'photo', 'image' => '/images/image-01.jpg'])