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 pokażę ci w jaki sposób do naszej strony możemy dodać taki edytor Trumbowyg,
czy jest edytor typu What you see is what you get i chciałbym go dodać
w miejscach, gdzie dodajemy treść naszych wpisów czyli u
nas to w Create i w Edit. Być może pamiętasz i dokładnie
coś chcemy dodać i to nam pokaże jaki sposób możemy pracować z
frontend'em i konkretnie JavaScript'em we frontend'ie. Jeżeli
przejdziemy do get started, tutaj widzimy że można zainstalować ten Trumbowyg za
pomocą npm install więc będę chciał zrobić. Ja to robię wewnątrz wirtualnej
maszyny, możemy zrobić na zewnątrz tej maszyny, tak czy siak to się pojawi w
tym katalogu. Natomiast w tej maszynie mamy zainstalowany npm i note
więc możemy takie polecenie tutaj uruchomić. To nam się zainstaluję, a
w międzyczasie będziemy mogli przygotować odpowiednie
do tego widoki, okej ten plugin został zainstalowany i teraz
jeszcze uruchomię sobie npm run watch, żeby śledziło zmiany
w plikach i zaraz będziemy sobie mogli część tych plików
utworzyć, chociaż może zanim to uruchomimy to będę chciał
jeszcze dodać sobie webpack mix, śledzenie
pliku JavaScript' owego który za sekundę sobie utworzymy, potem zrobimy dopiero watch
żeby to wszystko było odpowiednio śledzonem a zatem c hciałbym tutaj dodać sobie
coś takiego czyli resource js main. Chcemy ten plik śledzić,
kompilować i będzie on ustawiony do public js. Zatem przejdźmy
sobie do resources i utworzymy tutaj po prostu katalog js,
znowu tak jak ci już wspominałem wielokrotnie ty tutaj rządzisz w tym katalogu, możesz
dowolną strukturę tworzyć, main.js i ten plik
już będzie odpowiednio wyłapywane. Okej przejdźmy do konsoli,
tutaj sobie uruchomimy npm run watch. Powiem ci tylko mojego doświadczenia, że
uruchamianie tego polecenia wewnątrz tej wirtualnej maszyny jest zazwyczaj sporo
wolniejsze niż bym to uruchomił w terminalu u siebie po prostu na Mac'u
więc to jest moim zdaniem dobre wyłącznie wtedy jeżeli
swoim systemie nie chcesz w ogóle instalować node npm. Nic z tych rzeczy, chcę
żeby to było zainstalowane tylko wewnątrz wirtualnej maszyny, ale skoro już tu jestem
uruchomię sobie to i poczekamy chwilę. Okej, udało się i teraz kolejny
plik tutaj będzie generowany, będzie to dokładnie main.js.
Dlatego warto byłoby ten plik sobie również podlinkować, podobnie jak
tutaj u góry za pomocą mixa to robiliśmy to teraz gdzieś na
dole podlinkujemy sobie skrypt i znowu mix.
Jeżeli nie jesteś pewny jaką
ścieżkę tutaj wpisać, to wystarczy podejrzeć sobie ten plik. Będzie to
wyglądać dokładnie tak, okej on już na naszą stronę
będzie wstawiany i teraz pozostało nam uzupełnić
te pliki w taki sposób, aby wszystko poprawnie i teraz ja w tej
lekcji nie chce się skupiać dokładnie tym jak zintegrować ten edytor
What you see is what you get, bo każdy edytor jest specyficzny i do każdego
trzeba przeczytać dokumentację. Bardziej chciałem ci pokazać na praktycznym przykładzie
w jaki sposób tutaj można z JavaScriptem pracować, czyli generalnie z frontend'em
w laravel, jedno natomiast co będę chciał tutaj zrobić
w resources w js,
to utworzyć sobie katalog components i w nim plik editor js
czyli tam moglibyśmy mieć więcej, więcej
takich komponentów i tam plik będę chciał zaimportować tutaj, webpack
mix działa tak że działają w nim importy z ES6, czyli
możemy napisać import i podać tutaj plik components
i następnie editor można również z require,
czyli tego co znamy na przykład node js jeżeli kiedykolwiek z tym pracowałeś,
to sprawi że skoro my ten plik main nasłuchujemy to on zaimportuje
cały ten plik, który jest tutaj, a w nim skonfigurujemy sobie wspomniany wcześniej edytor. Ja
pozwolę sobie wkleić gotowy kod i wytłumaczę ci na szybko co się nim dzieje. Po
pierwsze chce do window przypisać jquery, które tutaj importuje za pomocą właśnie
require, to jest potrzebne po to że w momencie kiedy zaimportujemy zainstalowany
przed momentem moduł npm trumbowyg to on oczekuje że globalnie
będzie dostępne jquery, dlatego właśnie robimy to tak. Jeżeli chodzi o ikonki,
a tutaj musimy je również zaimportować, podać do nich ścieżkę. Jeżeli
tego nie zrobisz to nie wyświetlą nam się icon.svg i to szczerze
mówiąc znalazłem na Stack overflow dlatego pokazuje ci to tylko po
to żeby powiedzieć że z każdym edytorem się pracuje indywidualnie
i nie sensu tutaj tłumaczyć dokładnie wszystkiego co tutaj zrobiłem
i na końcu w jquery wyszukujemy wszystkich elementów które
mają taki identyfikator za moment to będziemy dodawać i na nich wywołujemy
plugin trumbowyg, czyli tak to wygląda, ale ważne że jeszcze musimy
sobie style zaimportować i tutaj mamy javascript, a tutaj mamy
sass, więc jeżeli w sass przejdziemy do components, chciałbym tutaj szybko utworzyć sobie
plik vendors scss i w nim zrobimy taki
oto import, czyli zaimportuje plik CSS'owy właśnie z node modules,
czyli zainstalowanego modułu i tenże vendors teraz podlinkujemy sobie jeszcze
tutaj w głównym pliku main. Pamiętaj, że na ten
plik nasłuchujemy, to jest ważne, żeby to tutaj dodać, okej. Każda
ta zmiana kiedy coś zapisuje sprawia, że tutaj jest to wyłapywane i nasza
strona również powinna być automatycznie odświeżana i teraz
w zasadzie ostatnie co powinniśmy zrobić to przejść do create i w
miejscu gdzie mieliśmy textarea dodać jej klasę What
you see is what you get i dokładnie taką samą dodamy
w edit. Teraz
jeżeli przejdziemy do edycji zobaczmy czy taki edytor się wpisuje, czy
tutaj wstawia, tak i to są te wspomniane ikonki svg do których pewną
sztuczkę należało zastosować. Jeszcze jedna rzecz którą możemy zrobić to
zmienić klasę na is-full zarówno w create jak i w edit. Będziemy
tam mieli troszeczkę więcej miejsca na ten edytor, automatycznie to zostało odświeżone i
jak widzisz takie edytor tutaj się pojawił. Teraz jeżeli na przykład będziemy chcieli
pogrubić to jak najbardziej to się nie pogrubia. Robimy update i
jeżeli teraz przejdziemy sobie do takiego postu to możesz zobaczyć że
to pogrubienie jak najbardziej się tutaj pojawiło. Jak zatem widzisz praca
z webpack mix może być bardzo prosta i przyjemna. Niemniej
jednak nic się tutaj nie ogranicza, możesz stworzyć dowolny workflow lub możesz
nie mieć workflow frontend'owego. To od ciebie zależy, w jaki sposób chcesz pracować.
https://alex-d.github.io/Trumbowyg/
editor.js · 4 min
window.jQuery = require("jquery");
require("trumbowyg");
const icons = require("trumbowyg/dist/ui/icons.svg");
jQuery.trumbowyg.svgPath = icons;
jQuery("#wysiwyg").trumbowyg();_vendors.scss · 5 min
// *--------- VENDORS ---------*
@import "../../../node_modules/trumbowyg/dist/ui/sass/trumbowyg";_vendors.scss · 5 min
// *--------- VENDORS ---------*
@import "../../../node_modules/trumbowyg/dist/ui/sass/trumbowyg";editor.js · 4 min
window.jQuery = require("jquery");
require("trumbowyg");
const icons = require("trumbowyg/dist/ui/icons.svg");
jQuery.trumbowyg.svgPath = icons;
jQuery("#wysiwyg").trumbowyg();_vendors.scss · 5 min
// *--------- VENDORS ---------*
@import "../../../node_modules/trumbowyg/dist/ui/sass/trumbowyg";editor.js · 4 min
window.jQuery = require("jquery");
require("trumbowyg");
const icons = require("trumbowyg/dist/ui/icons.svg");
jQuery.trumbowyg.svgPath = icons;
jQuery("#wysiwyg").trumbowyg();