
Wstęp do kursu. Omówienie tworzonej aplikacji internetowej i hybrydowej aplikacji mobilnej. Wymagania dla uczestnika kursu.
Omówienie metod instalacji serwera dla aplikacji Laravel: Ubuntu Linux, Laravel Valet, Homestead (Vagrant Box), Xampp, WampServer. Wymagania serwera dla aplikacji Laravel. Instalacja Laravel.
Kopiowanie template do Laravela. Instalacje paczek JavaScript, konfiguracja Laravel-Mix.
Kontynuacja przenosin template do systemu szablonowego Laravel Blade. Elementy routingu.
Zakończenie przenosin template do systemu szablonowego Laravel Blade. Wykorzystanie kontrolerów i Laravel Artisan. Tłumaczenia językowe routingu.
Logowanie, rejestracja, przypomnienie zapomnianego hasła.
Zaprojektowanie bazy danych poprzez stworzenie migracji w Laravel.
Zaprojektowanie bazy danych poprzez stworzenie migracji w Laravel.
Wypełnienie bazy danych przykładowymi danymi generowanymi automatycznie przy pomocy biblioteki Faker.
Wypełnienie bazy danych przykładowymi danymi generowanymi automatycznie.
Lista obiektów na stronie głównej. Wykorzystanie wzorca Repository Pattern. Tworzenie modeli w Artisan.
Lista obiektów na stronie głównej. Wykorzystanie wzorca Repository Pattern. Interfejs.
Lista obiektów na stronie głównej. Wyświetlanie danych w widoku. Modele, relacje jeden do wielu oraz polimorficzna jeden do wielu.
Instalacja Laravel Debugbar. Paginacja listy obiektów, sortowanie. Eager loading. Szczegóły obiektu turystycznego.
Listowanie szczegółów obiektu turystycznego. Relacje w bazie danych w tym polimorficzne. View Composer. Tworzenie zależnych modeli. Wzorzec Presenter. Traity w PHP.
Autocomplete jquery. Wzorzec Gateway. Dynamiczne wyszukiwanie miast w formularzu wyszukiwarki wyszukującej pokoje do wynajęcia.
Kontynuacja wyszukiwania pokoi do wynajęcia. POST Request w Laravel.
Filtrowanie listy pokoi do wynajęcia z danego miasta. Relacja hasManyThrough. Widok listy wyszukiwania. Zapamiętywanie danych w formularzu.
Dane pokoju w obiekcie turystycznym. Wyciąganie danych ajaxem dla kalendarza dostępności. Kalendarz jQuery Datepicker. Odseparowanie skryptu java script dla konretnego widoku w Laravel Blade.
Wyświetlanie dat niedostępności pokoju w szczegółach pokoju turystycznego. Opcje kalendarza Datepicker. Wykorzystanie Chromium Dev Tool do debugowania.
Szczegóły artykułu. Relacje bazodanowe.
Wyświetlenie szczegółów użytkownika we frontendzie. Traity, presentery. Polimorficzne wyświetlenie typu komentowalnego obiektu w widoku użytkownika.
System polubień i odlubień obiektów turystycznych i artykułów. Middleware auth dla wybranych metod frontendu. Dodawanie i usuwanie obiektów do modeli zależnych w relacjach bazodanowych. Skróty szablonowe Blade dla stanu autentykacji (zalogowania). Odpytywanie zależnych relacji bazodanowych.
Polimorficzne dodawanie komentarzy do artykułów i obiektów turystycznych. Walidacja formularzy.
Rezerwacja pokoju w obiekcie turystycznym. Zabezpieczenie przed Mass Assignment.
Gateway Pattern i Repository Pattern dla panelu administracyjnego. Logika biznesowa w obiekcie gateway. Obsługa ról użytkownika w systemie. Metody pobierające dane dla kalendarza turysty i właściciela obiektu.
Zapytania do bazy danych zwracające powiązane obiekty dla kalendarza rezerwacji turysty i właściciela obiektu. Wykorzystanie metod has() i whereHas() w Eloquent ORM. Funkcje anonimowe w Eloquent ORM.
Wstępne przygotowanie widoku kalendarzy z rezerwacjami.
Pobranie danych backend z repozytorium dla każdego kalendarza. Zwrócenie ich w postaci json. Trait dla zapytań ajaxowych. Przygotowanie html do wczytania danych ajaxowych. Utworzenie obiektów JavaScript organizujących kod jQuery.
Poprawki lekcji poprzedniej.
Utworzenie JavaScript-u dla każdego kalendarza rezerwacji. Uzupełnienie tabeli html o dane rezerwacji pobrane ajaxem z backendu.
Zakończenie uzupełnienia tabeli html o dane rezerwacji pobrane ajaxem z backendu.
Dynamiczne pobieranie zalogowanego użytkownika. Jquery events. Atrybut novalidate w formularzu. View composer. Utrzymanie pozycji paska przewijania po przeładowaniu strony.
Potwierdzanie i usuwanie rezerwacji z kalendarza. Komunikaty o usunięciu rezerwacji. Autoryzacja zalogowanego użytkownika do wykonania akcji usuwania i potwierdzania - Laravel Policies.
Zastrzeżenie akcji w systemie w zależności od roli użytkownika. Middleware. Wybór rejestracji w systemie jako turysta lub właściciel obiektu turystycznego.
CRUD controller w Laravel. Wyciąganie danych miasta z bazy danych. Kod zapisu miast do bazy danych.
Dokończenie obsługi miast. Walidacja formularzy. Sortowanie danych tabeli w bazie danych.
Szczegóły profilu użytkownika. Obsługa różnych typów requestów przez jeden route. Autoryzacja do usuwania fotografii.
Upload zdjęcia użytkownika na serwer. Usuwanie zdjęcia, edycja. Autoryzacja usuwania zdjęcia.
Szkielet metody w kontrolerze dla operacji na obiekcie turystycznym.
Uzupełnienie repozytorium i gateway dla operacji na obiekcie turystycznym.
Upload plików graficznych obiektu turystycznego. Reguły walidacji dla plików graficznych.
Uzupełnienie widoku dla szczegółów obiektu turystycznego w panelu administracyjnym.
Uzupełnienie metod dla dodawania i usuwania artykułów dla obiektu turystycznego. Autoryzacja dla usuwania i dodawania artykułu dla obiektu turystycznego.
Lista obiektów turystycznych właściciela. Autoryzacja usuwania obiektu turystycznego.
Kod backend odpowiedzialny za zapisywanie pokoju dla obiektu turystycznego.
Dokończenie kodu odpowiedzialnego za pokoje w obiekcie. Uzupełnienie pliku widoku.
Utworzenie i wykorzystanie zmiennej dostępnej dla każdego widoku backend przechowującej powiadomienia dla zalogowanego użytkownika.
Update klikniętego powiadomienia w bazie danych za pomocą jQuery, ajax i obiektów JavaScript. Licznik powiadomień.
Wykorzystanie Memcached i pamięci RAM serwera do powiadomień w czasie rzeczywistym.
Kod dla powiadomień w czasie rzeczywistym - ustawianie notifikacji pokazanych i wyświetlanie ich.
Uzupełnienie systemu powiadomień o kod dla aplikacji hybrydowej.
Dwa eventy w aplikacji Laravel - potwierdzenie rezerwacji i złożenie rezerwacji. Współpraca eventów i listenerów z systemem powiadomień w czasie rzeczywistym.
Utworzenie cache-repozytorium dla frontendu. Warunki na czyszczenie cache. Rejestracja nowego repozytorium w kontenerze obiektów.
Instalacja i konfiguracja Redis do obsługi cache i sesji użytkownika.
Komendy do uruchamiania i restartowania Redis w Linux Ubuntu.
Instalacja i konfiguracja paczki do autentykacji i autoryzacji za pomocą tokenów JWT. Zmiana kodu Laravel w celu obsłużenia dwóch metod autentykacji i autoryzacji.
Dalsza zmiana kodu Laravel w celu dostosowania do obsłużenia dwóch rodzajów autentykacji i autoryzacji - jednego opartego o standardowy mechanizm sesji i drugiego opartego o tokeny JWT. Headery CORS.
Zakończenie dostosowania kodu do aplikacji mobilnej hybrydowej. Testy przy pomocy Postman i Postman Interceptor.
Poprawki aplikacji webowej, dodatkowe informacje.
Metody obiektu App dla aplikacji hybrydowej.
Metody obiektu App dla aplikacji hybrydowej. Plugin dla Apache Cordova do powiadomień.
Metody obiektu App dla aplikacji hybrydowej.
Logowanie do aplikacji hybrydowej.
Sterowanie aplikacją hybrydową.
Sterowanie aplikacją hybrydową. Obsłużenie eventów typu click.
Obiekt Html aplikacji hybrydowej. Zakończenie kursu.
To nie jest typowy kurs omawiający kolejne rozdziały dokumentacji. Stworzysz Praktyczną Aplikację Webową W PHP 7 Oraz pod koniec kursu Dodatkowo Wersję Na Smartfony Jako Hybrydowa Aplikacja Mobilna.
W trakcie kursu stworzysz aplikację internetową do rezerwacji miejsc noclegowych w obiektach turystycznych oraz dodatkowo w końcówce wersję hybrydową tej aplikacji jako aplikacja mobilna na smartfony. Zbudujesz uniwersalne API, które obsłuży zarówno aplikację webową (14 tabel w bazie danych) jak i hybrydową aplikację mobilną. W aplikacji użyjesz wszystkich dostępnych w Laravelu relacji bazodanowych - w tym polimorficznych, dzięki czemu aplikacja jest później łatwiejsza w modyfikacji i utrzymaniu. Poznasz popularne wzorce projektowe, dzięki którym późniejsze poruszanie się po kodzie i modyfikacje są łatwiejsze. Poznasz obiektowy Java Script, dzięki któremu kod jQuery będzie lepiej zorganizowany i czytelniejszy.
Ten kurs jest przeznaczony dla trochę bardziej zaawansowanych użytkowników. Nie jest to taki typowy kurs, bardziej tutorialowy, gdzie pokazuję jak zbudowałem od podstaw zaawansowaną aplikację internetową. W razie gdybyś czegoś nie rozumiał możesz zapytać w sekcji QA kursu, możesz też poszukać w google lub dokumentacji Laravela. Możesz również sięgnąć do wersji skróconej tego kursu (zobacz listę moich kursów na Udemy), gdzie nie skupiam się na pisaniu na ekranie lecz na dodatkowym tłumaczeniu zagadnień. Dla mniej zaawansowanych użytkowników polecam przerobić równocześnie obydwa kursy (nie najpierw jeden cały kurs potem drugi, tylko kolejne lekcje z obydwu kursów).
W tym kursie pokazuję kolejność tworzenia aplikacji tak aby jak najszybciej ją stworzyć. Oczywiście płynność tworzenia zależy od doświadczenia, w rzeczywistości aplikacji nie tworzy się tak płynnie jak to jest w kursie, bo jak nazwa wskazuje to jest kurs (taki tutorialowy) a nie pisanie na żywo. Średnio wprawiony full stack web developer stworzy taką aplikację od podstaw samodzielnie w kilkaset godzin (łącznie z planowaniem).
Kurs powstał na wersji Laravel 5.5. Pliki do lekcji kursu zostały zaktualizowane do wersji 5.8. Zobacz sekcję upgrade aby zaktualizować Laravela do następnych wersji (w tym Laravel 6).
Zagadnienia Laravel wykorzystane w kursie: instalacja, konfiguracja niezbędna do pracy, service container i bindowanie implementacji interfejsów do kontenera obiektów, fasady, wstrzykiwanie obiektów (zależności), routing, filtry (middleware), ochrona csrf, kontrolery, zapytania GET i POST, przekierowania http, widoki i system szablonowy Blade, helpery (np. funkcja route), sesje, walidacja formularzy, wielojęzykowość aplikacji www, Laravel Mix, autentykacja (logowanie) + autoryzacja (uzyskiwanie dostępu do zasobu na podstawie uprawnień), resetowanie zapomnianego hasła, polecenia konsoli Artisan, cache-owanie w Redis, eventy i listenery, upload plików, operacje na bazie danych: fluent query builder i eloquent orm, lazy i eager loading bazy danych, paginacja wyników z bazy danych, accessory, migracje bazy danych, seedery bazy danych, relacje w bazie danych: jeden do jednego, jeden do wielu, wiele do wielu, jeden do wielu poprzez model zależny (hasManyThrough), polimorficzna jeden do wielu, polimorficzna wiele do wielu. Ponadto: jQuery, jQuery Mobile, obiektowy Java Script. Gateway Pattern, Repository Pattern, Presenter Pattern, Singleton Pattern, interfejsy, traity, elementy PHP 7. Twitter Bootstrap zmodyfikowany przez Bootswatch. Apache Cordova. Autentykacja i autoryzacja JWT (Json Web Token).
Pamiętaj, że tylko praktyka czyni mistrza. Jeśli trzeba - przerób kurs dwa lub więcej razy. Notuj w trakcie kursu jak prawdziwy student. Korzystaj z dokumentacji, z wyszukiwarki Google. Wreszcie postaraj się napisać aplikację samodzielnie, niekoniecznie tą samą jak w kursie, możesz próbować coś zmienić, dodać itd. Żaden pojedyńczy kurs nie zrobi z ciebie bardzo dobrego web developera. Może jedynie mocno przybliżyć cię do tego celu. Im więcej praktyki tym lepiej.
QA:
Dlaczego używasz jquery mobile a nie inny framework ?
Aplikacja mobilna to nie główny temat kursu, to kilka ostatnich lekcji kursu. Poprzez zbudowanie aplikacji mobilnej pokazuję co można zrobić z Laravel. To są pewne generalne koncepcje, które później mogą być zastososowane przy innych frameworkach dla aplikacji mobilnych. Kurs skupia się na Laravelu i wzorcach projektowych. Jednak jquery nie zniknął z rynku. Wiele firm jeszcze go wymaga do utrzymywania istniejących stron czy nawet budowania nowych.
Stworzyłeś aplikację w tym kursie używając Laravel 5. Teraz mamy już Laravel 10. Czy to znaczy, że ten kurs jest przestarzały i niczego się z niego nie nauczę?
Absolutnie nie! W narzędziach takich jak frameworki PHP podstawy i bazowa składnia prawie nigdy się nie zmieniają niezależnie od wersji. Ale oczywiście każde utrzymywane oprogramowanie ewoluuje z biegiem czasu. Dlatego zawsze sugeruję abyś używał tej samej wersji oprogramowania jakiej używa instruktor. To zapobiega błędom i zakłopotaniu. Jako ktoś, kto chce się nauczyć tworzyć aplikacje internetowe, musisz mieć świadomość, że prawdziwy web development wymaga czasami dostosowania kodu do najnowszej wersji - ale nie zawsze jest to konieczne, nie każda firma dostosowuje swój soft do najnowszej wersji, która właśnie się pojawiła. Oprogramowanie zmienia się tak szybko, że instruktorzy nie nadążaliby z tworzeniem kursów, które pasują do najnowszej wersji oprogramowania, które jest tematem kursu. To nawet nie jest zalecane, bo jako student utraciłbyś ważny aspekt web developmentu jakim jest świadomość, że wszystko często się zmienia i trzeba umieć dostosowywać się do tego.