[MUZYKA GRY] ERIC Ouyang: Hej, wszyscy. Witaj. Jest to budynek Dynamiczne Web Apps z Laravel. Nazywam się Eric Ouyang. Jestem studentem drugiego roku studiów badań społecznych z wtórnego w dziedzinie informatyki, a ja mieszkam w Adams Dom tutaj na Harvardzie. Więc Laravel, co jej najbardziej podstawowych, jest MVC web app ramy. Więc to, co macie robi z CS50 Finansów, Laravel jest struktura, która pozwala do tworzenia dynamicznych aplikacji internetowych. Tak więc można myśleć o nim w pewnym sensie jako przedłużenie typu rzeczy robiłeś w CS50 Finanse, ale system, który dużo bardziej wytrzymałe, wiele bardziej elegancki, w pewnym sensie, oraz zawiera wiele Funkcjonalność dla Ciebie budować dość skomplikowane aplikacje internetowe. Warto więc przejść przez niektóre z kluczowych cech, a następnie będziemy nurkować w przykładem budowania bloga Aplikacja z Laravel. Tak więc jedną z pierwszych rzeczy, które odróżnia go od typu pracy MVC że już robi z CS50 jest to zawiera silnik ORM. ORM stoi więc dla obiektu relacyjne mapowanie. Więc to pozwala budować Warstwa abstrakcji od bazy i kontrolery. Tak więc w przeciwieństwie do CS50 finansów, bezpośrednio dokonać zapytań, Warstwa ORM pozwala na Abstrakcyjny, że się i utworzyć Modele, które są bardziej wydajne niż można bezpośrednio z zapytań SQL. Inna sprawa, że ​​naprawdę pomocne jest dziedziczne szablony. Więc można zauważyć w CS50 Finansów, skończyć się przepisywanie wiele rzeczy, gdzie umieszcza mógłbyś potencjalnie ponownego wykorzystania rzeczy, nie jesteś w stanie. Więc w Laravel, można użyć co znany jako szablonu silnika ostrza w celu utworzenia układu głównego. A stamtąd, można odziedziczyć tak, że sub-szablony mogą rzeczywiście zawierać elementy w obrębie że większej szablonu bazowego. Migracji. Więc jest to dość standardowe wyposażenie większość nowoczesnych ram aplikacji internetowych. Więc to pozwala reprezentować Zmiany schematu bazy danych w kodzie. Więc nie powie, phpMyAdmin, rzeczywiście można utworzyć te migracje gdzie stanowią bazę Schemat zmian w kodzie bezpośrednio. A to pozwala to-- szczególnie jeśli masz kilka osób pracujących w tym samym application-- internetowej śledzić te zmiany, mówią w GitHub, lub jakiegoś innego repozytorium. Więc to jest bardzo pomocne i ogranicza potrzebę do, powiedzmy, przechodzą wokół dużo SQL wysypisk. I wreszcie, Kompozytor jest coś bardzo, bardzo przydatne która pozwala na korzystanie z innych Kod ludzi robić niesamowite rzeczy. Więc Laravel na strukturę kilka pakietów kompozytora. Więc powiedzieć, jeśli chcesz, aby doprowadzić w pakiecie uwierzytelniania lub jeśli chce doprowadzić w niektórych rodzaj skryptu generatora lub admina Interfejs można podłączyć i grać te składniki z kompozytorem. Więc zaczynajmy. Wszelkie pytania od Ciebie Chłopaki zanim zaczniemy? Żadnych pytań? Cool. Tak więc pierwszy etap jest instalacji Composer. Tak Kompozytor pozwala na zarządzanie zależnościami, czy to ramy Laravel lub jakieś inne rozszerzenie osoba trzecia. Pierwsze polecenie pozwala Ci pobrać Composer, i drugie polecenie pozwala na przenieść go do folderu lokalnego bin tak aby można było uruchomić Composer bezpośrednio przez terminal. Po tym, śmiało utworzyć nowy projekt Laravel. Jesteśmy rzeczywiście będzie korzystać z niektórych przykładowy kod że już ułożyła do stworzenia tego bloga. Ale jeśli zaczyna się od zarysowania, należy użyć tego polecenia tu, kompozytor stworzyć-projekt, Laravel slash Laravel, a następnie Nazwa projektu. I że będzie to cały kod dystrybucji na rozpoczęcie nowego projektu Laravel. Więc dla ostatecznych projektów CS50, będziesz prawdopodobnie chcesz użyć tego polecenia. Ale mamy zamiar zacząć z tym. Więc po co zrobiłeś że masz zamiar się dość rozległe liczba plików w blog50. Więc po prostu przejść przez Niektóre z tych składników. Zauważysz na tej trasie katalog, nie ma folderu aplikacji. W folderze app, nie Kilka osób foldery. Nuty na początek jest w tym folderze config. Więc to ustawia się jak aplikacja internetowa jest będzie, powiedzmy, uwierzytelniania osób lub rzeczy pieniężne lub połączyć się z bazą danych. A co jest naprawdę pomocne jest to, że Laravel pozwala ustawić różne środowisk programistycznych. Więc co zrobiliśmy tutaj jest, jeśli idziemy w folderze lokalnym, znajduje się plik database.php. I można zauważyć tutaj, że my skonfigurować połączenie MySQL, że umożliwia podłączenie jednostki do serwera MySQL, który jest bezpośrednio na urządzeniu CS50. I mamy połączenia do bazy danych że założyłem nazywa Blog50. Więc rzeczywiście iść do przodu i uruchomić wersję roboczą tego, po to, żeby zrozumieć, co Wniosek, że budujemy wygląda. Więc mam kopię to Blog50 zakończona. Więc Laravel rzeczywistości posiada wbudowany serwer które można uruchomić bezpośrednio z linii poleceń. Tak więc jest to podobne do Pset przed kiedy rzeczywiście zbudować własny serwer w C Więc oni jeden zbudowany w tak że można uruchomić aplikacje Laravel bezpośrednio z linii poleceń. Więc jeśli robimy php rzemieślnik służyć, to uruchomi serwer deweloperski na porcie 8000. Więc jeśli idziemy do lokalnego hosta 8000, można zauważyć, że hej. Mamy nasz blog i działa. Więc Laravel tutaj jest generowanie pierwszej stronie naszego bloga. Bardzo prosta aplikacja. Ale jest kilka bardzo ładne cechy że zawiera pod wyciągiem. Więc aplikacji bloga proste. Gdybyśmy chcieli stworzyć post, możemy kliknąć na ten przycisk. Można powiedzieć: "Hej, wszyscy. To jest naprawdę zabawne Seminarium: "na przykład. I napisać coś tutaj. Tekst tutaj. Jeśli kliknij przycisk Prześlij, będziesz zauważyć, że nasz nowy blog po dodaniu do przednia strona bloga. Jeśli wrócimy tutaj, można zauważyć, że nie było już kilka komentarzy na blogu. Jeśli więc przewinąć w dół, będziesz zauważyć, że Jonathan Tan mówi że był bardzo zaintrygowany tym poście. Więc idziemy w jaki sposób obiekt relacyjne mapowanie pozwala Ci zrobić te relacje w bezproblemowe sposób, jak również. Cool. Wszelkie pytania dotyczące funkcjonalności z tego, co mamy zamiar budować? Cool. Więc zacznijmy się z rzeczywistości tworzenie tabel bazy danych. Tak więc przypomnieć, że w CS50 Finansów, ci ułożyła stolik dla użytkowników jak również dla akcje w portfelu. Tak jak wspomniano wcześniej, czego używamy w Laravel jest coś, znany jako migracje. Tak więc, jeśli wrócimy do kod tutaj, dystrybucja, Pierwsze polecenie, które jest jako, że Laravel zapewnia jest to polecenie migrować. Tak więc możemy zrobić php rzemieślnik migrują: make. Więc ten pozwala nam na stworzenie migracji. A następnie będziemy chcieli stworzyć migracji nazywa create_posts_table, które będzie być tam, gdzie mamy zamiar za przechowywanie naszych blogach. I można zauważyć tutaj, że działa przez jakiś kod, który faktycznie generuje plik z znacznik czasu na to. Więc jeśli mamy iść i patrzeć na bazie danych, my zauważyć w Migracje że jest on tworzony Pusty plik, który dla nas ma kod szablonowe z nazwą że określone, tworzyć posty tabeli. I pełni dwie funkcje w nim. Maksymalnie jest to, co chcemy uruchomić, gdy migracji zastosowano do bazy danych. Iw dół, co mamy zamiar zrobić gdy chcemy wycofać migrację. Więc zacznijmy się z pisania tej migracji. Więc nie jako klasy w Laravel zwany schemat. Tak więc mamy zamiar uruchomić Schemat :: stworzyć. I mamy zamiar stworzyć Tabela nazywa posty. I tu zastosować to przy użyciu funkcji. Oraz w tutaj, będziemy rzeczywiście określają zawartość naszej tabeli. Mamy zamiar stworzyć identyfikator, które jest auto-przyrostu. Dodatkowo, będziemy , aby utworzyć pole, które stanowi tytuł naszego blogu. Mamy również zamiar stworzyć pole do przechowywania tekstu naszym blogu. I wreszcie, będziemy przechowywać niektóre znaczniki czasu do kiedy nasze stanowisko zostało utworzone a gdy zostaną zaktualizowane. I na dół, jest to dość proste. Wszystko, co chcesz zrobić, to spadek Stół, który stworzyliśmy. Wielki. Jakieś pytania? Więc teraz, gdy idziemy do przodu and-- rzeczywistości, host lokalny, pozwól mi usunąć to, co mieliśmy wcześniej. Idź do baz danych. Zamierzam usunąć to, co mieliśmy wcześniej. Rzuć to i stworzyć Nowa baza danych Blog50. Więc teraz to, co magiczne część jest tutaj, że my mogą bezpośrednio stosować te migracje do bazy danych za pomocą wiersza poleceń narzędziem. Więc jeśli robimy php rzemieślnik migrują, zauważysz, że hej. Jest on tworzony w tabeli migracji, które będziemy przyjrzeć się trochę, i jest stosowany ten pierwszy migracji. Więc patrzymy na Blog50, zauważysz że jest on stworzony dla nas dwa stoły. Pierwsza jest ta tabela migracje. Jeśli więc przeglądać to, można zauważyć, że tabela ta jest dość prosta. To jest po prostu powiedział, że hej. Musimy zastosować tę migrację. Chcemy wrócić i spojrzeć na posty. Można zauważyć, że konstrukcja jest dokładnie to, co poprosiliśmy go. Mamy autoinkrementacja ID. Mamy ciąg do przechowywania Tytuł i pole tekstowe do przechowywania materiałów. Wielki. Cool. Wszelkie pytania na temat migracji pracy, w jaki sposób możemy je stosować? Nie? Cool. Więc teraz mamy zamiar iść do przodu i rzeczywiście stworzyć model. Dlatego chcemy, aby stworzyć model posty, które przechowuje abstrakcję danych. Tak więc, zamiast robić zapytań MySQL bezpośrednio, mamy zamiar stworzyć. Musimy więc stworzyć Folder tutaj zwanych modeli. A wewnątrz tutaj, będziemy utwórz plik o nazwie post.php. Wewnątrz tego pliku PHP, mamy zamiar stworzyć klasa po której rozciąga wymowne. Wymowna jest nazwa ORM Silnik, który Laravel zapewnia. I tutaj, możemy się spodziewać, że rzeczywiście trzeba napisać kod. Mamy zamiar napisać niektóre funkcje pomocnicze później. Ale po wyjęciu z pudełka, to już będzie rozpoznać, co jest w bazie danych i możemy wejść, powiedzieć, tekst naszego blogu lub tytuł, i tworzyć rzeczy bezpośrednio prawie żaden kod w ogóle. Jest to więc jeden z magicznych składników. I wiatr po tej klasie jest bardziej pełnoprawną, będziemy zawierać informacje o tym, co jest to związane z tak komentarzach. Również utworzyć funkcję tak naprawdę możemy bezpośrednio uzyskać adres URL strony blogu. Cool. Wszelkie pytania na ten temat? Nie. Cool. Więc teraz, gdy mamy nasz model, my Aby utworzyć kontroler, który jest w stanie współpracować z tych modeli a następnie w bazie. Więc jeśli spojrzeć na BlogController, będziesz zauważyć, że nie jest dużo tu teraz. Wszystko co jest, to funkcja indeksu który generuje strony startowej, ale bez niczego tam jeszcze wyświetlić. Więc pierwszej funkcji które mamy zamiar stworzyć jest taka, która pozwala do tworzenia blogu. Tak więc mamy zamiar zadeklarować Nowa funkcja nazywa newPost. A wewnątrz tutaj po prostu, jedziemy ustawić układ strony za renderowanie wersji, jeśli przypomnieć z CS50, tego szablonu o nazwie blog.new, które mamy zamiar stworzyć w trochę. Można zauważyć tutaj, że na linii sześciu możemy określić tę zmienną, układ. A jeśli przyjrzymy w folderze Widoki istnieje podzial folderów, które zawiera bardzo prosty plik HTML. I notatki, można zauważyć, że mamy opakowanie tutaj daje zawartość. Więc wewnątrz naszego szablonu co będziemy robić jest stworzyć coś, co będzie podstawione bezpośrednio w tym układzie. Więc my powiedzieliśmy, że chcemy, aby uczynić Szablon nazywa blog.new. Ale wewnątrz Blog, nie jeszcze nie ten nowy szablon. Tak więc mamy zamiar stworzyć plik o nazwie new.blade.php. Mówi Laravel, że ten plik PHP powinny być wykonane z Ostrze system szablonów. Więc jest to dość prosty plik. To będzie forma, w którym faktycznie dodać w blogu. Więc magii tutaj od Dziedziczenie jest, że hej. Chcemy, aby określić, które sekcji, sekcja treść tu, który jest wyznaczony przezsection istop. Więc co jest pomiędzy tutaj będzie być podstawiony do układu głównego. A tu, co chcemy zrobić, to bardzo prosto utworzyć nowy plik HTML. Miejmy tylko dodać krótki tytuł. Dodaj blogu. A w niej, jesteśmy zamierza utworzyć formularz. Ta postać ma mieć działanie. I to ma być coś że zastąpienie w terminie, i zobaczymy, jak routingu pasuje do tutaj. Ale my po prostu się do zdefiniowania teraz Świadczy to o tym, że w zawartości od drogi z createPost. I wtedy to się dzieje mieć metody POST. W ramach tutaj, jedziemy mieć dwa pola. Div class = "form-grupa". Używamy bibliotekę Bootstrap CSS łaskawie dostarczane przez Twittera. Tak więc mamy zamiar stworzyć dwa z nich. Więc to pierwsze wejście jest będzie tytuł. Tak Wejście name = "title". Class = "formcontrol". Type = "text". Mam zamiar dodać zastępczy = "Tytuł". A potem drugi jest będzie obszar tekstu. Name = "content". Class = "formcontrol". I zastępczy = "Wpisz tutaj". Nie idziemy. Wreszcie będziemy dodać przycisk szybkiego przedstawienia. Type = "submit" class = "btn btn-podstawowej". Więc to wszystko cechy Bootstrap tak że można układać w sposób, który jest łupem dla użytkownika, a nie gołym HTML. Więc mamy zdefiniowane kontroler się tutaj. Odkryliśmy bardzo prosty widok. Ale to, co brakuje tkanka. Więc w tym momencie, Laravel nie ma pojęcia, jak jedziemy do rzeczywistości dostęp do tego kontrolera. Tak więc jest to określone w plik o nazwie routes.php. A teraz mamy jedną trasę. Który jest, gdy idziemy do Droga do domu na tej stronie internetowej, to się czyni Kontroler indeksu. Więc o co musimy zrobić, to wdrożenie Nowa trasa dla nas, aby utworzyć stanowisko. Tak więc korzystać z tej metody get, który określa że gdy użytkownik próbuje uzyskać to page-- specjalnie po slash nowy page-- co będziemy robić jest używać kontrolera o nazwie BlogController nowa wiadomość. Ten, który właśnie stworzył. A potem jedziemy skojarzenie go jako newPost. Mamy zamiar stworzyć inny Funkcja w trochę. Ale co tu pod Klucz "as" jest co możemy zastąpić ciągu nasze szablony Blade. Więc teraz, niech faktycznie też powiedzieć trasę. Więc my też będzie utworzyć kontroler tak, że możemy tworzyć te posty. Więc jeśli postów użytkownika do postu slash nowa, co będziemy robić to korzysta z kontrolera mamy zamiar wkrótce stworzyć nazywa BlogController na createPost. I jedziemy do aliasu to z jak createPost. Cool. Jakieś pytania? Cool. Warto więc działać, co mamy do tej pory. Więc jeśli robimy php rzemieślnik służyć, zobaczymy wiele błędów. Wygląda więc na to mamy błąd składni na trasach linii 27. Ach. Brakuje średnik. Więc jeśli idziemy do 8000, zobaczysz tutaj jeszcze nic. Więc to jest domyślna strona domowa. Ale jeśli pójdziemy do posta slash nowa, hej. To będzie postać, która właśnie stworzyliśmy. W tej chwili nie ma realizowane funkcje od kiedy nacisnąć przycisk Wyślij. Jeśli więc kliknij Zatwierdź przycisk, to będzie działać błąd. Ale jedziemy do kodu, który właśnie teraz, właśnie my chcesz zrobić, gdy użytkownik podnosi ten formularz. Więc zróbmy to. Wróć do pliku kontrolerów. Co zamierzamy zrobić, to wdrożenia tej nowej funkcji , które pozwala nam na stworzenie stanowiska. Oświadczam, nową funkcję. Public function createPost. I funkcja będzie trochę bardziej skomplikowany niż to, co mieliśmy wcześniej. Ale zobaczysz tutaj, że nie jesteśmy będzie właściwie pisać żadnego SQL. ORM, Wymowne ORM, ma umożliwić nam się to zrobić w niektórych sposoby bardziej elegancki sposób. Tak więc mamy zamiar stworzyć nowy post. I tu jesteśmy uruchamianiu nowego obiektu z modelu, który właśnie stworzył model po. A co mamy zamiar zrobić, to ustawić Tytuł cechą tego za pomocą czegoś że mamy z serwera. Więc to jest podobne do tego, co mieliśmy wcześniej w CS50 Finansów gdzie możemy zrobić, używając Super Globalny post Szukam tytułu. Więc Laravel zapewnia pewne sanitarnych i cokolwiek za pomocą tej funkcji pomocnika. Więc wolimy używać zamiast tego tej bardzo podstawowej formie surowego z PHP. A potem, co mamy zamiar zrobić, to ustawić treść umowy do wejścia uzyskać zawartość. Jesteśmy rzeczywiście będzie zawijać to w pomocny funkcji że PHP zapewnia nazywa nl2br, które Okazuje nowe linie, NLS, do BRS, przerwy, tak, że rzeczywiście możemy mieć różne ustępy w nim. I wreszcie, co będziemy zrobić, to tego wpisu. Tak nazywamy funkcję zapisz się na tym modelu. Mamy zamiar zapisać post. I wreszcie, co będziemy robić jest przekierować użytkownika specjalnie do trasy, który mamy zamiar wkrótce stworzyć, alias przez viewPost. I mamy zamiar przejść w argumentach id, jest id tym nowym stanowisku. Wielki. Więc teraz, jeśli faktycznie go i uruchomić tego. Mamy zamiar dodać nowy post. Powiedzmy, że jest to seminarium 50. I powiedzieć, na pewno. ASDL. Cokolwiek. Jakiś zawartości. I przedkłada go. A my zauważyć, że, hej. Trasy nie zdefiniowane. Ale jeśli spojrzeć na phpMyAdmin i poszukaj tego, czy naszym funkcji nie zrobił nic. Spójrz na stanowiskach Blog50. Będziemy zauważyć, że hej. W rzeczywistości, nie tylko stworzenie tego bloga zakładać z sygnatury czasowe określone. Więc teraz wróćmy i rzeczywiście stworzyć to inna funkcja w naszym kontrolerze, specjalnie sterownik viewPost. ViewPost Funkcja Więc publicznego. Więc co zrobimy, a nie posiadania pustych nawiasów, będziemy chcieli przekazać w ID post, który tworzymy. I stąd to, co mamy zamiar zrobić faktycznie kwerendy bazy danych dla niego. Jeśli więc zakładać, istnieje funkcja o nazwie Znajdź która pozwala nam zapytanie go przez ID. W szczególności, w rzeczywistości, będziemy użyć innej wersji tego nazwie Znajdź lub Fail, która pozwala nam aby wyjść z tej funkcji, wyjątek Jeśli ID mijamy się, nie istnieje. A potem mamy zamiar coś zrobić podobny do tego, co zrobiliśmy wcześniej gdzie ustawić zawartość tej strony jest renderowane wersja tego nowego widoku które mamy zamiar stworzyć, blog.view. I mamy zamiar przejść do it-- tak jak w CS50 renderowanie function-- słownika zmiennych. Kluczami tablicy asocjacyjnej stają się zmienne w szablonie. Tak więc mamy zamiar zrobić Posta. Więc przejść pośrednio stanowisko, że my zapytaliśmy z bazy danych. , Teraz to, co mamy zamiar zrobić, to stworzyć ten pogląd tak, że rzeczywiście możemy zobaczyć na blogach, że mamy zbudowane. Tak więc mamy zamiar stworzyć plik o nazwie view.blade.php. Więc wewnątrz tego szablonu, co będziemy robić jest umieszczany razem prosta strona, która pozwala na wyświetlanie zawartości. Więc robimy sekcję, to przed zawartości. Przestań. A co mamy zamiar do zrobienia w tutaj jest napisać HTML do wyświetlania tej strony. Tak więc mamy zamiar zawinąć go z fantazji nowy element HTML5 nazywa art. I tutaj, jedziemy mieć nagłówek gdzie będziemy po prostu mieć h1, który zawiera tytuł wpisu. Więc, jeśli spojrzymy na to podwójne kręcone notacja nawiasów, będzie to zrobić w zasadzie PHP echo tytuł wpisu. Więc jest to pomocne skrót że Laravel zapewnia nas. Tak więc mamy zamiar używać Ten zapis zamiast. I tu, będziemy również wydrukować zawartość tego. I tutaj, jedziemy zrobić pocztowy treści. A na dole, co jesteśmy zamiar zrobić, to utworzyć stopkę. Oraz w stopce, będziemy Pierwszy ekran, kiedy to został opublikowany. Więc ten został opublikowany w, stworzona na. I Laravel używa naprawdę ładne Data biblioteki nazwie Carbon. Tak naprawdę możemy zrobić coś, co nazywa difforHumans, które obejrzałeś wcześniej. Kiedy pisał. będzie to powiedzieć, jak pięć sekund temu. Więc to jest naprawdę ładne Funkcjonalność Laravel. I wreszcie, będziemy aby zamknąć to stopkę. Więc teraz, jeśli wrócimy do Strona główna jedziemy zobaczyć jeszcze tutaj, bo nic nie zostały zakodowane się na stronie głównej. Ale jeśli pójdziemy do posta jeden ukośnik, jedziemy zobaczyć wyjątek. Czy ktoś wie dlaczego widzimy wyjątek? Co nam brakuje? Jakieś pomysły? Więc to, co zrobiliśmy, wcześniej dla nas rzeczywiście do określenia, w jaki sposób dostać się do Poszczególne sterowniki? GŁOŚNIK 1: trasa? ERIC Ouyang: Tak. Więc musimy jeszcze określić trasy. Więc wracamy tutaj do routes.php. Zauważysz, że my nie właściwie zdefiniowana jak dostaniesz do tego kontrolera. Więc teraz jedziemy do zdefiniowania tej trasy. Jest to dość proste, podobny do tego, co zrobiliśmy wcześniej. Ale to, co mamy zamiar uwagi jest to, że będziemy mieć zastępczy. Więc jeśli robimy route.get ukośnik ID postu. Więc ID jest teraz, co się być przekazywane do sterownika. To będzie używać Kontroler, że po prostu stworzył, BlogController na viewPost. I będziemy Alias ​​to jako viewPost. Wielki. Więc teraz jedziemy do stworzenia tej trasy. Więc teraz, gdy jedziemy tutaj i odświeżyć stronę, że w rzeczywistości nie ma nasz nowy wpis na blogu. Więc to jest to, co stworzył wcześniej. Bardzo prosta strona, ale wyświetlacze blogu, że po prostu stworzył. Cool. A jeśli faktycznie przejść przez całość Proces tworzenia nowego blogu, my zauważyć, że wszystko przekierowania poprawnie. Jeśli powiem: "Cześć. Jestem Jonathan Tan ". Powiedz: "To jest mój wpis na blogu." I przedkłada go, to stworzy ten nowy wpis na blogu z ID 2, które przyrosty od tego, co mieliśmy wcześniej i wyświetla go poprawnie. Niesamowite. Jakieś pytania? Tak? GŁOŚNIK 2: Czy Laravel uchwyt dezynfekcja i wszystko dla Ciebie? ERIC Ouyang: Tak. Więc kiedy widzieliśmy wcześniej, kiedy zrobiliśmy wejście Colon się, że sanitates dowolny SQL zastrzyki i etażerka które mogą chcemy wykonywać, jeśli jesteśmy szkodliwy użytkownik serwisu. Więc Laravel zajmuje dużo stanowi, że za kulisami. Dobre pytanie. Warto więc spojrzeć na stronie głównej. Więc jeśli najpierw wrócić do Sterownik do strony głównej, można zauważyć, że to nie wiele zrobić tutaj. Zauważysz, że nie jesteśmy przechodząc do tego kontrolera coś szczególnie pomocne. To jest po prostu ten plik indeksu. Warto więc przejść do to coś pomocną. A konkretnie, jesteśmy przejdzie w postach. I Laravel pozwala nam zrobić słupek wszystko, co pozwoli nam uzyskać wszystkie posty. Teraz, jeśli wrócimy do index.php, zobaczysz, hej. Nic jeszcze tutaj. Ale to, co chcemy zrobić tutaj faktycznie iteracji, zrobić pętli foreach nad stanowisk pozwala wydrukować posty. Więc foreach posty jako po to, co chcemy zrobić jest wydrukować zawartość na blogu. Ale jedno można zauważyć, jest to, że faktycznie napisał większość tego kodu już w view.blade.php. Tak więc to, co mamy zamiar zrobić to w rzeczywistości używać piękny pomocne cechę Blade a czynnik ten wspólny kod. Więc tutaj. Zamierzamy wykorzystać tę treść tu, i co mamy zamiar zrobić jest utworzyć nowy folder. Miejmy tylko nazwać podszablonów. I tutaj, jedziemy stworzyć post.blade.php. Więc tutaj, uwzględniliśmy się sposób, w które chcemy wyświetlić te posty. A tu, co zrobimy, a nie która faktycznie posiada ten kod HTML bezpośrednio, będziemy korzystać z tej dyrektywy nazywa to blog.partials.post. A co mamy zamiar zrobić tutaj jest przekazać na stanowisku strony. Więc teraz, jeśli wrócimy tutaj, my będziemy Zauważ, że funkcja jest nadal same. Ale teraz mamy to zbitek kodu, ten kod HTML. Tak więc możemy używać go w indeksie. Więc, jest to bardzo proste. Wszystko co robimy jest m.in. blog.partials.post i tablicy. I gdzieś wcześniej, robimy Posta. Więc teraz, jeśli wrócimy do strona główna, zobaczymy, że hej. Mamy listę wszystkich blogi, które mieliśmy wcześniej. Możemy dodać kilka "jeśli" Warunki i "innego" warunki tak, że jeśli nie mamy coś na blogu, Chcemy, aby wyświetlić coś pomocne. Jak, hej. Nie ma jeszcze żadnych treści na blogu. A jeśli wy właściwie spojrzeć na Kod dystrybucji na GitHub, zobaczysz przykład, jak to zrobić. Cool. Jakieś pytania? Tak. GŁOŚNIK 2: Myślę, że po prostu podstawowe pytanie. Powrót na trasie. ERIC Ouyang: Tak. Jeśli spojrzeć na trasach. GŁOŚNIK 2: Gdzie uses.blogcontroller się stworzyć post, co to kieruje nas do? ERIC Ouyang: Tak. Tak. GŁOŚNIK 2: A co jest that-- ERIC Ouyang: Tak, spójrz, powiedz na przykład, trasa ta tutaj. Pierwsza część jest rzeczywista Adres URL, które użytkownik będzie udać. A ta tablica tutaj asocjacyjna, definiuje jaki chcemy mieć akt aplikacji w odpowiedzi na nią. Więc używa jest sterownik, Funkcja że chcesz zadzwonić, gdy użytkownik przechodzi do tego adresu URL. Więc viewPost tu był Funkcja że zdefiniowana wewnątrz z BlogController-- GŁOŚNIK 2: Widzę. ERIC Ouyang: -SO tym my w rzeczywistości może wygenerować widok wykonać kilka obliczeń, interakcji z bazą danych SQL. GŁOŚNIK 2: OK. ERIC Ouyang: A potem inne część, "jak" to pseudonim, którego używamy. Więc jeśli zauważymy, kiedy stworzyliśmy formularz, można zauważyć, że adres URL :: routecreatePost. Więc zastępuje się rzeczywiste URL tak, że nie jesteśmy mocno kodujący je w tak możemy go zmienić raz, powiedzieć, gdybyśmy chcieli zmienić nazwę. Zamiast po ukośniku Nowy, chcemy zrobić jak, p slash nowy tylko do czyszczenia się adresów URL bitowych. Chcemy zmienić go w jednym miejscu, a niż we wszystkich innych plików. Cool. To dobrze. Więc teraz mamy bardzo Podstawową platformą blog. Prawdopodobnie chcesz dodać przycisk tak że rzeczywiście możemy tworzyć nowe posty. Więc jeśli przyjrzymy w Układ Mistrza, mamy sekcję nagłówka Prawo że niedawno zdefiniowane u góry. Więc możemy dodawać przyciski do góra cel. Więc jeśli idziemy do index.blade.php, faktycznie zrobić, to określenie tego, co dzieje się wewnątrz tutaj. W tej sekcji Nagłówek Prawo, co będziemy robić jest dodanie w przycisk, aby przejść do URL określony przez trasy nowego posta. Wystarczy go oczyścić i uczynić jest ładna i wszystkie Bootstrap, mamy zamiar zrobić ten przycisk domyślny. Miejmy tylko sprawiają, że duża dla zabawy. A w środku, możemy umieścić jakiś tekst. Ale co Bootstrap zapewnia to glyphicons. Więc może faktycznie dodać, że ładne ołówek że widzieliśmy wcześniej. Glyphicon. Glyphicon-ołówek. Więc to pozwoli nam umieścić w ikonę zamiast tekstu. Teraz, jeśli przestaniesz, to określi tę sekcję. I, hej. Mamy ładny przycisk, który łączy nas bezpośrednio dodać stronę blogu. Mamy więc dość prosty blog. Możemy dodać rzeczy do niego. Ale to, co możemy się spodziewać z blogów komentuje. Więc to jest bardzo ważne dla nas mieć, powiedzieć, że jeśli ktoś odwiedza stronę internetową i naprawdę lubi stanowisko, że mogą uczestniczyć w dyskusjach z innymi ludźmi, którzy odwiedzają stronę. Tak więc mamy zamiar iść i tworzyć Nowa tabela bazy danych i nowy model tak, że możemy skojarzyć Komentarz z postami. Tak więc pierwszym krokiem, podobnie jak poprzednio, jest to, że musimy uruchomić migracji. Tak jak wcześniej, robimy php rzemieślnik migrować: zrobić. I mamy zamiar utworzyć nazywa create_comments_table. Spowoduje to utworzenie pliku że ma nasz nowy migracji. I będziemy, jak wcześniej zdefiniować nową tabelę. Więc Schemat :: create Tabela nazywa komentarzy. Funkcja ta tutaj. A w środku tabeli, co mamy zamiar zrobić, to po pierwsze, jak poprzednio, przypisać identyfikator. Zwiększa ID. Jedziemy, aby użytkownicy mogli skojarzyć ich nazwy ze szczególnym komentarza. My będziemy mieć pewne treści, które idzie w parze z tym, treści tekstu. A tu, co mamy zamiar to jest coś innego. Mamy zamiar stworzyć liczbę całkowitą to się nazywa post_id które będzie oznaczać, jakie stanowisko szczególności komentarz idzie z. Ponadto, jesteśmy rzeczywiście będzie ustawić klucz obcy w tej sprawie. Więc MySQL wymusić. Nie chcemy, aby przypisać numer komentarz 5 odpowiedzieć 5000, jeśli nie ma miał 5000 postów na jej temat. Więc co tu robimy, robimy obcego post_id będzie wiązać się z Pole ID od słupków tabeli. A my rzeczywiście coś zrobić inny pomocny, jest onDelete. Jeśli więc usunąć niektóre zakładać z bazy danych, że chcemy kaskadowo usuwa również w komentarzach. Bo to nie jest bardzo pomocne dla nas na komentarze dotyczące postów że nie istnieją. I wreszcie, jak wcześniej, jesteśmy zamiar ustawić znaczniki czasu na to. I tak jak poprzednio, będziemy mają być odwrotne migracja usunięcie tabeli komentarze. Więc teraz, jeśli wrócimy tu, będziemy do uruchomienia tej migracji, rzemieślnik migrują. A teraz zastosować ten migracji, które właśnie utworzyliśmy. Więc jeśli spojrzeć na phpMyAdmin, my, w rzeczywistości, teraz mieć tabeli komentarzy, które ma Struktura, że ​​po prostu określone. Tak jak wcześniej, jesteśmy W celu utworzenia nowego modelu do abstrakcyjnego tabeli SQL że po prostu stworzył. Więc Dodaj nowy plik. Mamy zamiar nazwać Comment.php. I to jest rzeczywiście będzie dość proste z niewielką zmianą z tego, co mieliśmy wcześniej. Tak Klasa Komentarz rozciąga Wymowne. A co mamy zamiar do zrobienia jest zdefiniowanie Funkcja jest relacje z innymi modelami. Więc będziemy mieć funkcję pocztowy tu, że wraca ten związek. Więc jesteśmy określając, że to należy odpowiedzieć, mówiąc, że istnieje jedno stanowisko że ten komentarz należy. To rzeczywiście musi być Kapitał P dla modelu. A teraz po drugiej klapki boczne, musimy powiedzieć, że hej. Posty ma komentarzy. Tak więc to, co mamy zamiar zrobić, to zdefiniować komentarzy funkcję publiczną. I tu jest zwracana Ma to wiele komentarz. Więc teraz magicznie, gdy mamy post, możemy uzyskać komentarzy atrybutów i będzie ona wypełnić ją informacje z bazy danych. Więc rzeczywiście przejść i dodać nową funkcję do naszego pliku widoku tak, że możemy zarówno wyświetlacz i tworzenia komentarzy. Tak więc mamy zamiar zdefiniować nowy rozdział. Miejmy tylko oddzielić ją w linii poziomej. Sekcja id = "komentarze". Co będziemy robić Oto, jak poprzednio, iterację wszystkich komentarzy. Tak naprawdę, jak robimy to, jak już wspomniałem, dość magiczne. Robimy komentować. A potem możemy to zrobić dla każdego Pętla nad każdym komentarzy. A co mamy zamiar zrobić, to div class komentarz, i jedziemy do rzeczywistości wydrukuj ten komentarz. Więc wyświetlić, że hej, komentarz name-- osoby kto pisał ten comment-- mówi dot dot dot. Mamy zamiar umieścić to w bloku cytat, tak aby wyglądał ładnie. A potem komentować zawartości bloku cytatu. I foreach. Więc teraz to będzie pętli przez wszystkie komentarze który jest związany z każdym ze słupków i wyświetlić każdy z tych uwag. Mam zamiar dodać kolejny rozdział w dół tu, co pozwala nam dodać komentarz. Więc h3 klasy. Umieścić tytuł tutaj. Dodaj komentarz. I mamy zamiar zdefiniować nową formę. Tak jak wcześniej, jesteśmy zrobić formularz działania. I tu, nowa akcja jest, że jesteśmy będzie zdefiniować nowy kontroler, który pozwala nam odpowiedzieć na posta wnioski o tworzenie komentarzy. Więc createComment URL :: trasy. Mam zamiar przekazać w parametrze tutaj. ID stanowisku, że tworzymy komentarza. A następnie metoda ta Formularz będzie po. Teraz mamy zamiar dodać dwa pola, grupa formą. To będzie wejście z Name "Nazwa" i class = "form-control", type = "text" oraz z zastępczy = "Twoje imię". Będziemy również zdefiniować innego pola formularza, będzie tekst Obszar jak mieliśmy wcześniej. Podobnie jak poprzednio, nazywają go treść. Class = "forma sterowania." Placeholder = "Wpisz tutaj." I tak, że może faktycznie przedstawia go, przedstawić rodzaj i class = "btn btn-podstawowej." Zamknij formularz. Zamknij tę akcję. Więc teraz, jeśli odświeżyć stronę gdzie mamy, powiedzmy, konkretny post. Musimy ponownie uruchomić serwer. PHP rzemieślnik służyć. Reboot to. Musimy określić trasy. Ale teraz, po prostu wziąć to tak, że rzeczywiście możemy pokazać, co strona wygląda, a następnie będziemy rzeczywiście stworzyć tę trasę. Więc, hej. Mamy tę nową formę tutaj tak, że możemy stworzyć komentarzy. Więc właściwie zdefiniować Funkcja w kontrolerze tak, że możemy dodawać komentarze. Wróćmy. Oraz w blogcontroller.php, co będziemy robić jest utworzyć nową funkcję nazywa stworzyć komentarz. Public function createComment. Ten będzie miał singiel parametr ID stanowisk że mamy do komentowania. I tak jak wcześniej, jesteśmy będzie najpierw uzyskać post. Tak więc zakładać, findOrfail id. Następnie jedziemy utworzyć nowy komentarz. Więc komentarz = nowy komentarz. Komentarz name = Wejście :: uzyskać nazwę. Treść komentarza = sama nowa linia w przerwach Wejście :: uzyskać zawartość. I wreszcie, będziemy musieli skojarzyć ten komentarz na stanowisku. Tak więc mamy zamiar używać ta funkcja, komentarze, która pozwala nam zapisać ten związek. Więc teraz będzie miał ten komentarz automatycznie ID postu. Możemy również ustawić go ręcznie, ale jest bardziej czytelny, jak daleko jako funkcja przechodzi. I po wykonujemy tego, co chcemy zrobić, jest przekierowanie użytkownika do Trasa określone przez viewPost z tablicy z parametr ID postu. I teraz tak, że rzeczywiście funkcje, musimy zdefiniować tę trasę. Droga :: postu. A teraz mamy zamiar nazwać slash po slash ID komentarz. Array wykorzystuje nową funkcję że po prostu stworzył. BlogController. CreateComment jak createComment. Wielki. Więc teraz mam nadzieję, że jeśli odświeżyć stronę i dodać w komentarzu, powiedzmy, David Malan. "Mam nadzieję, że to działa." Prześlij. My w rzeczywistości mieć komentarz na tym blogu. Cool. Więc teraz mamy dość funkcjonalna blogu. Jesteśmy po prostu się dodać kilka poprawek tak że mamy jedne bardziej użyteczne Informacje na tych stanowiskach. Tak więc, jeśli wrócimy do przednia strona, nie mamy poczucia ilu komentarze są na każdym z tych stanowisk. Więc co mamy rzeczywiście będzie Wystarczy, wewnątrz naszego modelu, zdefiniować funkcję pomocnika, który pozwala nam określić liczbę komentarzy że go z konkretnym stanowisku. Tak więc mamy zamiar stworzyć Funkcja pomocnika. Public function. GetNumCommentsStr. Tak więc ciąg znaków, który określa liczbę komentarzy, które go wraz z nim. A co mamy zamiar zrobić, to powiedzieć, num = liczyć, że to komentarze. Więc będziemy liczyć liczba komentarzy. Jeśli ta liczba jest równa 1, jesteśmy po prostu się do powrotu 1 komentarz. I wtedy inaczej, chcemy wrócić połączeniem num i komentarzy, więc mamy pluralizacji prawidłowe. Wystarczy zrobić to apostrof. Jeden komentarz. A teraz możemy korzystać z tej funkcji bezpośrednio wewnątrz naszego widzenia. Tak więc, jeśli wrócimy do częściowe postów, które utworzone, teraz chcemy rzeczywiście wyświetla liczbę komentarzy. Więc co możemy zrobić, to po, korzystać z tej funkcji że po prostu stworzone do wyświetla liczbę komentarzy. Więc jeśli teraz go odświeżyć, jest w rzeczywistości wyświetlacz Numer komentarze które go wraz z nim. Jeśli chcemy być wyobraźnia, jeśli Ciebie rzeczywiście spojrzeć na kod dystrybucji, faktycznie możemy połączyć to do komentarzy. Jeśli pamiętacie, że zdefiniowane w zobaczyć, że to ma komentarzy punkt ID. Więc jeśli naprawdę chce połączyć bezpośrednio do sekcji komentarzy, co zrobimy tu jest href URL viewPost trasy. Przejść array ID po ID. A potem chcemy, aby przejść do specjalnie sekcji komentarzy. Tutaj niech zamknąć tagu. Więc teraz, jeśli odświeżyć tę Strona, klikamy na ten temat. Pojedziemy bezpośrednio do Sekcja komentarzy. Gdybyśmy mieli dłuższy słupek, można rzeczywiście zobaczyć to odbicie w dół. Jednak można zauważyć, że jest to nie na górnej stronie. Cool. Wielki. Więc to jest bardzo prosta Przykładem czegoś prostego że można zrobić z Laravel. Ale można tutaj odnotować, że zrobiliśmy wiele rzeczy z dość małej ilości kodu. Laravel pozwala nam na Zapytań SQL za kulisami. Robi sanitarnych dla nas za kulisy. Pozwala nam na te relacje bardzo łatwe bez nas potrzebuje robić żadnych SQL przyłączyć oświadczeń łączyć komentarzy z jakich stanowiskach. Pozwala nam to zrobić dziedziczenie szablonów tak, że możemy zdefiniować te miejsca gniazdowania Pliki więc nie będziemy powtarzać się, tak jak wtedy, gdy mieliśmy, że wyświetlanie blogach że nie mamy do skopiować i wkleić kod. I tutaj można budować coraz bardziej skomplikowanych aplikacji. Można sobie wyobrazić, jeśli chciał wdrożyć logowania, moglibyśmy powiedzieć, przynieść osobie trzeciej ramy, która pozwala nam robić. Istnieje kilka z nich które są naprawdę, naprawdę wielka, że ​​może zrobić podobne, odzyskiwania hasła. I będzie to wysłać do zresetować hasło e-mail. Możemy realizować uprawnienia tak, że można stworzyć post, ale ktoś inny nie może go edytować. Możemy realizować Funkcjonalność usunąć posty. Ale widać tutaj, że mamy dość wiele wszystkie elementarne składniki zbudować niektóre naprawdę, naprawdę, dynamiczne i ekscytujące aplikacje webowe. Więc z tym, myślę, że jesteśmy dobrzy. Czy macie jakieś pytania? Tak? GŁOŚNIK 3: Jak Ci się uzyskać statyczny? ERIC Ouyang: statyczny. Więc widziałem wcześniej, kiedy mieliśmy To właśnie tutaj, w tym treść układ, Widok make, mieliśmy tego bez tej tablicy później. Blog.index, mieliśmy tego tylko jako pliku statycznego. Jeśli więc nie przechodzą wszystko razem z nim, będzie to po prostu renderowania HTML bezpośrednio. Ale jeśli mijamy w tym stowarzyszeniowej szereg stanowisk, które jest dynamicznie pobierane z bazy danych, to może sprawić, że strona dynamiczna. Cool. Jeszcze jakieś pytania? GŁOŚNIK 3: Jak można porównać Laravel się być może niektóre inne opcje? ERIC Ouyang: Jasne. Tak. Więc Laravel is-- to wielka question-- jedna z wielu opcji dotyczących ram internetowych. Więc Ruby on Rails jest jeden, który jest popularny. Uważam, Twitter kiedyś realizowane z Ruby on Rails. Myślę, że już od włączony. Jest jeszcze jeden o nazwie FuelPHP. Więc Ruby on Rails używa języka Ruby i realizuje wiele rzeczy MVC że widzimy tutaj. FuelPHP jest kolejnym frameworkiem. Django to jeden z moich ulubionych. To ramy internetowej dla Pythona. Więc można napisać aplikację w Pythonie. Więc jest mnóstwo tych opcji. Laravel, myślę, przez i duża jest moja ulubiona prawo teraz dla PHP, tylko dlatego, komponentów że rozmawialiśmy wcześniej. Za Kompozytor włączony. Obejmuje on naprawdę, naprawdę wyraziste System ORM. Również ma naprawdę niesamowite templating Język, który kilka innych po prostu nie dają. I migracje. Migracje są niesamowite, jak dobrze. Fajne? Niesamowite. Cóż, dzięki bardzo za oglądania tego seminarium, Powodzenia na swoich ostatnich projektów.