[Hudba hrať] ERIC Ouyang: Ahoj, všetci. Vitajte u nás. To je vytváranie dynamických Web Apps s Laravel. Moje meno je Eric Ouyang. Som vo druháku študovať spoločenské vedy sa sekundárne vo vede o počítačoch, a žijem v Adams Dom tu na Harvarde. Tak Laravel, na jeho najviac jadre, je webová aplikácia rámca MVC. Tak sa mi, čo vy máte robil s CS50 Financie, Laravel je rámec, ktorý umožní vám na vytváranie dynamických webových aplikácií. Takže si môžete myslieť na to, v niektorých zmysloch ako rozšírenie druhu veci si robil v CS50 Financie, ale systém, ktorý je oveľa robustnejšie, veľa viac elegantný v niektorých zmysloch, a ponúka mnoho Funkcia pre vás budovať pomerne zložité webové aplikácie. Takže poďme prejsť niektoré z kľúčových vlastností, a potom budeme ponoriť do Príkladom budovanie blog aplikácie s Laravel. Takže jedna z prvých vecí, ktoré odlišuje ju od MVC druh práce že ste robil s CS50 je, že obsahuje ORM motor. Takže ORM znamená objekt relačné mapovanie. Tak to vám umožní vytvoriť vrstva abstrakcie medzi databázou a vaše regulátory. Takže na rozdiel od CS50 financií, ak priamo vytvoriť otázky, ORM vrstva umožňuje abstraktné to preč a vytvárať Modely, ktoré sú silnejšie než môžete priamo s SQL dotazy. Ďalšia vec, ktorá je naozaj užitočné je dedičné šablóny. Takže budete oznámenia v CS50 Financie, skončíte prepisovanie veľa vecí, kde miesta by ste mohli potenciálne opätovné použitie veci, nie ste schopní. Tak tu v Laravel, môžete použiť to, čo je známy ako šablóny motor čepele k vytvoreniu hlavného rozloženia. A odtiaľ, môžete zdediť tak, aby čiastkové šablóny môžu v skutočnosti obsahovať prvky vnútri že väčšie základné šablóny. Migrácie. Takže to je pomerne štandardné funkcie na väčšina moderných webových aplikačných rámcov. Tak to vám umožní reprezentovať Zmeny databázy schéme v kóde. Takže, bez toho by sa povedať, phpMyAdmin, môžete skutočne vytvoriť tieto migrácie kde sa predstavujú databázy schéma zmeny v kóde priamo. A to vám umožní to-- zvlášť ak máte viac ľudí pracujúcich na rovnakej webovej application-- tieto zmeny sledovať, povedať, GitHub, alebo nejaký iný úložiska. Tak toto je naozaj užitočné a zmierňuje potrebu na, povedzme, prejsť okolo mnohých SQL skládok. A konečne, je Composer niečo naozaj, naozaj užitočné ktorá vám umožní používať ďalšie Kód ľudí robiť úžasné veci. Takže Laravel je štruktúrovaný niekoľko skladateľ balíčky. Takže povedať, či by ste chceli, aby v balení overovanie alebo ak by ste chceli, aby v niektorých druh generátora skriptu alebo admin rozhrania, môžete pripojiť a hrať tieto komponenty sa skladateľom. Tak poďme začať. Akékoľvek otázky od vás chalani Než začneme? Žiadne otázky? Super. Takže prvý krok je inštalácia Composer. Takže Composer umožňuje spravovať tieto závislosti, či už je to rámec Laravel alebo nejaké iné rozšírenia tretích strán. Prvý príkaz umožňuje si môžete stiahnuť Composer, a druhý príkaz umožňuje presunúť ju do miestnej zložky bin takže môžete spustiť Composer priamo cez terminál. Po tom, choďte do toho a vytvorenie nového projektu Laravel. Sme vlastne bude použiť nejaký príklad kódu že som sa dal dokopy k vytvoreniu tohto blogu. Ale ak ste od scratch, mali by ste použiť tento príkaz tu, skladateľ vytvoriť projekt, laravel lomítko laravel, a potom názov projektu. A to bude zahŕňať všetky distribúcie kód pre začatie nového projektu Laravel. Takže pre vaše CS50 záverečných prác, budete pravdepodobne budete chcieť použiť tento príkaz. Ale budeme začať s tým. Takže potom, čo ste urobil to, že budete dostať pomerne rozsiahly číslo súborov v blog50. Tak nech to len prejsť niektoré z týchto zložiek. Určite ste si všimli na tejto trase adresár, tam je zložka app. Vnútri zložky app, je tu pár užitočné zložky. Za zmienku začať s Je to zložka config. Tak to nastaví ako vaša webová aplikácia je ísť do, povedzme, overiť ľudí alebo peňažné veci, alebo sa pripojiť k databáze. A čo je vlastne užitočné je, že Laravel umožňuje nastaviť rôzne vývojové prostredia. Takže to, čo sme tu urobili, ak je pôjdeme pod miestne zložky, tam je súbor database.php. A všimnite si, že sme tu nastavenie pripojenia k MySQL, že umožňuje jednotlivcom pripojiť k MySQL serveru, ktorý je priamo na CS50 spotrebiča. A my sa pripájate k databáze že som sa nastaviť volal Blog50. Takže poďme skutočne ísť dopredu a spustiť pracovný verzie tohto, len preto, aby o tom, čo aplikácie, ktorá staviame vyzerá. Tak som mať kópiu to Blog50 dokončená. Tak Laravel vlastne vybudovala na serveri že môžete spustiť priamo z príkazového riadku. Takže je to podobné Pset predtým, keď ste vlastne vytvoriť svoj vlastný server v C. Takže oni majú jeden vybudovanú tak že môžete spustiť svoje Laravel aplikácie priamo z príkazového riadku. Takže ak budeme robiť php remeselník slúžiť, to začne vývojový server na porte 8000. Takže ak ideme do miestneho hostiteľa 8000, zistíte, že, hej. Máme blog hore a beh. Tak Laravel tu je generovanie predná strana našom blogu. Veľmi jednoduchá aplikácia. Ale je tu pár naozaj šikovných funkcií, že poskytuje pod kapotou. Takže blog aplikácie je priamočiare. Ak by sme chceli vytvoriť miesto, môžeme kliknite na toto tlačidlo. Dá sa povedať, "Ahoj, všetci. To je naozaj zábavná seminár, "napríklad. A napísať niečo tu dole. Text tu. Ak kliknite na tlačidlo Odoslať, budete Všimnite si, že náš nový blog Príspevok bol pridaný do Titulná strana blogu. Ak sa vrátime sem, zistíte, že tam boli niektoré pripomienky už Na blogu. Takže ak by sme sa posunúť nadol, budete Všimnite si, že Jonathan Tan hovorí že ho veľmi zaujal tento post. Takže pôjdeme do toho, ako objekt relačné mapovanie umožňuje aby si tieto vzťahy v pomerne bezproblémové spôsobom tiež. Super. Akékoľvek otázky týkajúce sa funkčnosti o tom, čo budeme stavať? Super. Tak poďme začať s naozaj vytváranie databázové tabuľky. Takže pripomenúť, že v CS50 Financie, vás dať dohromady tabuľku pre užívateľa rovnako ako pre zásoby vo svojom portfóliu. Tak ako sme sa zmienili skôr, to, čo používame v Laravel je niečo, známy ako sťahovanie. Takže keď sa vrátime do Distribúcia kód tu, Prvý príkaz, ktorý je užitočné, že Laravel vám poskytne je tento príkaz migrovať. Takže môžeme urobiť php remeselník Presunúť: robiť. Tak to nám umožňuje vytvárať migráciu. A potom budeme chcieť vytvoriť migrácii volal create_posts_table, čo sa deje byť tam, kde budeme byť uloženie našich blogu. A všimnite si, že tu beží cez nejaký kód, ktorý vlastne generuje súbor s časovú pečiatku na to. Takže keď sme sa ísť pozrieť na databázy, sme si všimli v migrácii že to vytvoril prázdny súbor, pre nás, ktoré má často používaný kód s názvom že sme špecifikovali, vytvorte príspevky tabuľky. A to má dve funkcie v ňom. Up je to, čo chceme bežať Migrácia sa aplikuje do databázy. A dole je to, čo budeme robiť keď chceme zvrátiť migrácie. Tak tu poďme začať s písaním tohto prechodu. Takže tam je užitočný class v Laravel volal schéme. Takže budeme spúšťať Schema :: vytvoriť. A budeme vytvárať tabuľku s názvom príspevky. A tu sme sa aplikovať tento pomocou funkcie. A v tú, budeme skutočne upresniť obsah nášho stola. Chystáme sa vytvoriť ID, čo je auto-inkrementace. Okrem toho, ideme na vytvorenie poľa, ktoré predstavuje názov nášho blogu. Sme tiež bude, aby vytvoriť pole pre uloženie textu nášho blogu. A konečne, ideme uložiť niektoré časové pečiatky , Keď bol vytvorený náš príspevok a keď to bola aktualizovaná. A dole, je to celkom jednoduché. Všetko, čo chcete urobiť, je pokles tabuľky, ktoré sme vytvorili. Skvelé. Nejaké otázky? Takže teraz keď sme pokračovať a- v skutočnosti, miestne hostiteľ, dovoľte mi, aby som odstrániť to, čo sme mali predtým. Choďte do databáz. Budem-li odstrániť to, čo sme mali predtým. Drop to a vytvárať nová databáza Blog50. Takže čo teraz magický časť je tu, že sme Môžete použiť tieto migrácie priamo do databázy pomocou príkazového riadka nástroje. Takže ak budeme robiť php remeselník migrovať zistíte, že, hej. Je to vytvorenie tabuľky migrácie, ktoré sa pozrieme na v trochu, a to aplikovať túto prvú migráciu. Takže sa pozrieme na Blog50, zistíte, že to vytvoril dve tabuľky pre nás. Prvý z nich je to migrácia tabuľku. Takže ak budeme prehliadať to, zistíte, že táto tabuľka je pomerne jednoduché. Je to len povedal, že, hej. Sme využilo túto migráciu. Sme sa vrátiť a pozrieť sa na príspevky. Určite ste si všimli, že štruktúra je presne to, čo sme sa opýtali to. Máme auto-zvyšovanie ID. Máme reťazec pre ukladanie titul, a textové pole pre ukladanie obsahu. Skvelé. Super. Máte otázky k migrácii práce, ako môžeme ich použiť? Nie? Super. Takže teraz budeme pokračovať a vlastne vytvorenie modelu. Preto chceme vytvoriť model, ktorý príspevky ukladá abstrakcie databázy. Takže skôr než robiť MySQL dotazov priamo, budeme vytvárať. Takže musíme vytvoriť Zložka tu nazývajú modeloch. A vnútri tu, ideme do vytvoriť súbor s názvom post.php. Vnútri tejto PHP súboru budeme vytvárať trieda pracovné miesto, ktoré rozširuje výrečné. Výrečný je názov ORM Motor, ktorý Laravel poskytuje. A tu, môžeme očakávať, že skutočne potrebujete napísať nejaký kód. Budeme písať nejaký pomocné funkcie neskôr. Ale po vybalení z krabice, to bude už rozpoznať, čo je v databáze a môžeme pristupovať, povedzme, text nášho blogu, alebo názov, a vytvárať veci priamo skoro žiadny kód vôbec. Takže to je jedna z magických prvkov. A vietor raz do tejto triedy je viac plnohodnotné, budeme zahŕňať informácie o tom, čo Súvisí to tak, komentárov. Tiež vytvoriť funkciu takže môžeme vlastne priamo zistiť adresu URL na stránke blog post. Super. Akékoľvek otázky o tom? Nie. Super. Takže teraz akonáhle budeme mať náš model, my Chcete vytvoriť radič, ktorý je schopný komunikovať s týmito modelmi, a následne databázy. Takže ak sa pozrieme na BlogController, budete Všimnite si, že to nie je moc tu práve teraz. Všetko, čo je, je funkcia index ktorý generuje domovskej stránky, ale bez čokoľvek tam zobrazí doteraz. Takže prvá funkcia že budeme vytvárať je ten, ktorý nám umožňuje k vytvoreniu blogu. Takže budeme deklarovať nová funkcia s názvom newPost. A vnútri tu proste ideme nastavenie rozloženia stránky byť poskytnúť verziu, Ak si spomínate z CS50, tejto šablóny s názvom blog.new, ktorý budeme vytvárať v trochu. Všimnite si, tu na linke šesť, ktoré sme špecifikovali tejto premennej, rozloženie. A ak sa pozrieme na zložku pohľady, je rozvrhnutie zložka, ktorá obsahuje veľmi základné HTML súboru. A poznámky, zistíte, že máme tento obal tu to prináša obsah. Takže v našej šablóny to, čo budeme robiť je vytvoriť to, čo sa bude substituované priamo v tomto usporiadaní. Tak sme si povedali, že chceme na to, aby šablóna s názvom blog.new. Ale vnútri blogu, je tu Zatiaľ nie je táto nová šablóna. Takže budeme vytvárať Súbor s názvom new.blade.php. To hovorí, že Laravel tento súbor PHP by byť vykreslený s čepeľ šablóny motor. Tak to je celkom priamočiare súborov. Je to bude forma, ktorú vlastne pridať blogu. Takže kúzlo sem z dedičstvo je to, hej. Chceme určiť, že časť, úsek obsah Tu, ktorý je vymedzený bysection astop. Takže to, čo je medzi tým tu bude byť nahradený do hlavného rozloženia. A tu to, čo chceme urobiť, je veľmi jednoducho vytvoriť nový súbor HTML. Poďme sa len pridať rýchly titul. Pridajte blogu. A v nej, že sme chystáte vytvoriť formulár. Tento formulár bude mať akciu. A to bude niečo že sme sa nahradiť neskôr, a uvidíme, ako smerovanie zapadá do tu. Ale my sme len tak definovať teraz že to ide na adresu URL s trasy od createPost. A potom sa to deje mať metódy POST. V tu, ideme mať dve polia. Div class = "form-skupina". Sme pomocou knižnice Bootstrap CSS láskavo poskytol Twitter. Takže budeme vytvárať dva z nich. Takže tento prvý vstup je Bude titul. Takže input name = "title". Class = "FormControl". Type = "text". Chystám sa pridať zástupný symbol = "Názov". A potom druhá je Bude textovej oblasti. Name = "obsah". Class = "FormControl". A symbol = "Napíšte tu". Tam sme ísť. Nakoniec budeme pridať rýchlu tlačidlo Odoslať. Type = "submit" class = "BTN BTN-primárnej". Tak to sú všetky rysy bootstrap tak že to môže byť stanovená sa spôsobom, ktorý je korisť pre užívateľov, skôr než obyčajným HTML. Takže sme definovali radič tu. Sme definovali veľmi jednoduchý pohľad. Ale to, čo chýba, je spojivového tkaniva. Takže v tomto bode, Laravel nemá potuchy, ako budeme skutočne Prístup k tejto radič. Tak toto je definované v Súbor s názvom routes.php. A práve teraz, máme jednu trasu. Čo je, keď ideme do home cesta k tejto webovej stránke, to bude na to, aby index regulátor. Tak tu to, čo musíme urobiť, je vykonať nová cesta pre nás vytvoriť post. Tak sme sa použiť túto metódu dostať, ktorý stanovuje že ak sa používateľ pokúsi si to page-- výslovne pošta lomítko novú page-- to, čo budeme robiť je použiť ovládač s názvom BlogController nový príspevok. Ten, ktorý sme práve vytvorili. A potom pôjdeme na alias ako newPost. Budeme vytvárať ďalšie Funkcie v trochu. Ale to, čo je tu v rámci kľúč "ako" je to, čo môžeme dosadiť do Naši šablóny čepeľou. Takže teraz, poďme vlastne tiež povedať trasu. Takže sme tiež bude k vytvoreniu radiče takže môžeme vytvoriť tieto miesta. Takže ak používateľ príspevkov na stránku stĺpiku lomítko nový, čo budeme robiť je používa radič, ktorý budeme v dohľadnej dobe vytvoriť volal BlogController na createPost. A budeme alias to sa ako createPost. Super. Nejaké otázky? Super. Takže poďme bežať, čo máme tak ďaleko. Takže ak budeme robiť php remeselník slúžiť, uvidíme veľa chýb. Takže to vyzerá, že máme syntaktická chyba na trasách riadku 27. Ah. Chýba bodkočiarka. Takže ak ideme do 8,000, uvidíte, nič ešte tu. Tak to je predvolenú domovskú stránku. Ale keď ideme pridanie lomka nový, hej. Bude to formulár, ktorý sme práve vytvorili. Práve teraz, my nie implementovaná funkcia keď sme stlačte tlačidlo Odoslať. Takže ak budeme kliknite na Odoslať tlačidlo, bude to beh chybu. Ale budeme kódu, ktorý práve teraz, presne to, čo sme chcete urobiť, keď používateľ predkladá tento formulár. Tak poďme to urobiť. Vráťte sa do súboru regulátorov. To, čo budeme robiť, je zaviesť túto novú funkciu ktorá nám umožňuje vytvoriť príspevok. Deklarovať novú funkciu. Verejná funkcia createPost. A táto funkcia bude trochu zložitejšie, než to, čo sme mali predtým. Ale uvidíte, tu, že nie sme bude vlastne písať nejaký SQL. ORM, výrečný ORM, bude umožňovať nám to urobiť v niektorých spôsoby, ako viac elegantným spôsobom. Takže ak budeme vytvoriť nový príspevok. A tu sme konkretizáciu nový objekt z modelu, ktorý sme práve vytvorený model pošta. A to, čo budeme robiť, je nastavený názov atribút tohto pomocou niečoho že sme si zo servera. Tak toto je podobné tomu, čo sme mali predtým v CS50 Financie kde budeme robiť, za použitia Super Global Post hľadá titul. Takže Laravel poskytuje niektoré kanalizáciu a ktovie čo ešte túto funkciu pomocníka. Tak sme sa radšej použiť namiesto tohto veľmi základné surovej forme z PHP. A potom to, čo budeme robiť, je nastavený obsah ho na vstup dostať obsah. Sme vlastne bude zabaliť To užitočnú funkciu že PHP poskytuje tzv nl2br, ktorý Ukazuje nových tratí, NLS do BRS, prestávky, takže vlastne môžeme mať rôzne body v ňom. A konečne, čo budeme urobiť, je uložiť tento príspevok. Tak sme volanie funkcie ušetriť na tomto modeli. Chystáme sa zachrániť príspevok. A konečne, čo budeme robiť je presmerovať užívateľa špecificky na trase, ktoré budeme spoločne vytvoriť krátko, alias by viewPost. A ideme prejsť v argumentoch id, je id tejto novej funkcie. Skvelé. Takže teraz keď sme skutočne ísť a spustiť to. Ak budeme pridať nový príspevok. Povedzme, že je to seminár 50. A hovoria, určite. ADSL. Čokoľvek. Nejaký obsahu. A predloží ju. A všimnite si, že, hej. cesty nie je definovaná. Ale ak sa pozrieme na phpMyAdmin a pozrite sa na tom, či naša funkcia nič neurobil. Pozrite sa na Blog50 miest. Budeme Všimnite si, že hej. V skutočnosti sme sa len vytvoriť tento blog post s časové pečiatky, ako je uvedené. Takže teraz sa vráťme a dokonca vytvárať táto iná funkcia v našom regulátora, konkrétne viewPost regulátor. Takže public function viewPost. Tak tu to, čo budeme robiť, namiesto toho mať prázdne zátvorky, budeme chcieť odovzdať ID príspevok, ktorý vytvárame. A odtiaľ, čo budeme robiť je vlastne dotaz databázy pre neho. Takže ak sa nám písať, tam je funkcia s názvom Zistíte, že nám umožňuje vyhľadávať ju ID. Konkrétne, v skutočnosti, budeme použiť alternatívne verzie tohto názvom Nájsť alebo Fail, čo nám umožňuje ukončite z tejto funkcie, vyvolať výnimku, ak je ID míňame v neexistuje. A potom budeme robiť niečo podobné tomu, čo sme robili predtým kde sme si stanovili obsah tejto stránke je tavené verzia tohto nového pohľadu ktorý budeme vytvárať, blog.view. A my ideme prejsť do to-- rovnako ako v CS50 činí function-- slovník premenných. Kľúče tejto asociatívneho poľa štát premenné vnútri šablóny. Takže budeme robiť príspevok príspevok. Takže prejsť nepriamo na príspevok, ktorý sme respondent z databázy. , Čo teraz budeme urobiť, je vytvoriť tento názor takže vlastne môžeme zobraziť na blogu, ktorý sme si vybudovali. Takže budeme vytvárať Súbor s názvom view.blade.php. Takže v tejto šablóny, to, čo budeme robiť je dať dohromady jednoduchú stránku, ktorá nám umožňuje zobraziť obsah. Tak sme urobiť bod, to je pred obsahom. Prestaň. A čo budeme k tomu v rámci tu napísať nejaký HTML na zobrazenie tejto stránky. Takže budeme zabaľte do fantázie Nový HTML5 element s názvom článku. A tu, ideme mať záhlavie kde budeme proste mať H1, ktorý obsahuje názov príspevku. Tak tu, ak sa pozrieme na to double zložená zátvorka notácie, to bude robiť v podstate PHP echo Názov príspevku. Takže je to užitočná skratka že Laravel nám poskytuje. Takže budeme používať Tento zápis miesto. A tu, budeme tiež vytlačiť obsah z toho. A tu, ideme k tomu príspevok obsahu. A dole na dne, čo sme robiť, je vytvoriť päta. A v zápätí, budeme Prvý display keď to bol vyslaný. Tak toto bol vyslaný na, vytvoril na adrese. A Laravel používa naozaj pekný dátum knižnica s názvom Carbon. Takže môžeme vlastne robiť niečo, čo nazýva difforHumans, ktoré ste videli predtým. Keď sme dosiahli. to poviem, rovnako ako pred piatimi sekúnd. Tak toto je naozaj pekný funkčnosť Laravel. A konečne, ideme zatvorte toto pätu. Takže teraz, ak sa vrátime do Úvodná stránka ideme sa ešte tu, pretože nevidí nič sme sa kódované na domovskú stránku. Ale keď ideme pridanie lomítko jeden, budeme vidieť výnimku. Vie niekto, prečo vidíme výnimku? Čo nám chýba? Nejaké nápady? Takže to, čo sme robili skôr pre nás vlastne definovať, ako sa dostaneme do konkrétne regulátory? Reproduktor 1: cesta? ERIC Ouyang: Jo. Takže sme ešte definovať trasu. Tak sme sa vrátiť sem do routes.php. Určite ste si všimli, že sme nemajú vlastne definovaný ako budeme dostať tento radič. Takže teraz budeme definovať touto cestou. Je to pomerne jednoduché, podobné tomu, čo sme robili predtým. Ale to, čo budeme všímať tu že budeme mať vyhradené miesto. Takže ak budeme robiť route.get lomítko ID príspevku. Takže ID teraz je to, čo sa deje na odovzdané do regulátora. To sa bude používať ovládač, ktorý sme práve vytvoril, BlogController na viewPost. A budeme sa alias to ako viewPost. Skvelé. Takže teraz budeme vytvárať touto cestou. Takže teraz keď pôjdeme tu a obnovte túto stránku, my v skutočnosti to sú naše nové blogu. Tak toto je to, čo sme vytvorili skôr. Veľmi jednoduché stránky, ale zobrazí blog post, ktoré sme práve vytvorili. Super. A keď sme vlastne prejsť celú Proces vytvárania nového blogu, sme si všimli, že všetko, čo presmerovanie správne. Keď poviem, "Ahoj. Som Jonathan Tan. " Povedz: "To je môj blog post." A predloží ju, to bude vytvárať tento nový blog post s ID 2, ktorý prírastky z toho, čo sme mali skôr a zobrazuje správne. Desivý. Nejaké otázky? Ano? SPEAKER 2: Má Laravel rukoväť sanitáciu a všetko pre vás? ERIC Ouyang: Áno. Takže keď sme videli skôr, keď sme vstup tračníka hrubého čreva dostať, že sanuje akékoľvek SQL injekcie a ktovie čo ešte že by sme mohli chcieť vykonať, ak Sme používateľ so zlými úmyslami webové stránky. Takže Laravel spracúva veľa z toho v zákulisí. Dobrá otázka. Takže poďme sa pozrieť na domovskú stránku. Takže keď sme sa prvýkrát vrátiť do regulátor na domovskej stránke, zistíte, že to nerobí moc sem. Všimnite si, že nie sme prechádzať do tohto regulátora niečo obzvlášť užitočné. Je to práve tento index súbor. Takže poďme prejsť do to niečo užitočné. A konkrétne, my sme bude sa potom v príspevkoch. A Laravel nám umožňuje urobiť miesto vôbec, čo nám umožní získať všetky príspevky. Teraz, keď sa vrátime do index.php, uvidíte, hej. Zatiaľ nič tu. Ale to, čo chceme, aby to tu je vlastne iterovat, robiť slučky foreach nad príspevky, ktoré nám umožňuje vytlačiť pracovné miesta. Takže foreach príspevky ako pošta, čo chceme robiť je vytlačiť obsah na blogu. Ale jedna vec, ktorú si všimnete, je, že sme vlastne písal väčšinu z tohto kódexu Už v view.blade.php. Takže to, čo budeme robiť, je v skutočnosti použite pekný užitočné funkcie ostrie a faktor tento spoločný kód. Tak sme sa ísť sem. Budeme sa brať tento obsah tu, a to, čo budeme robiť je vytvoriť novú zložku. Proste hovorím partials. A tu, ideme vytvoriť post.blade.php. Tak tu sme vytknúť, akým spôsobom ktoré chcete zobraziť tieto miesta. A tu to, čo budeme robiť, miesto v skutočnosti má tento HTML priamo, budeme používať túto smernicu volal patrí blog.partials.post. A čo budeme robiť tu je odovzdať funkciu stránky. Takže teraz keď pôjdeme naspäť, budeme Všimnite si, že funkcia je stále rovnaký. Ale teraz máme to vytknúť kód, tento HTML. Takže môžeme použiť v indexe. Tak tu, je to veľmi jednoduché. Všetko, čo robíme, je zahrnúť blog.partials.post a polia. A niekde na predtým, my príspevok post. Takže teraz, ak sa vrátime do Hlavná stránka, budeme vidieť, že, hej. Máme zoznam všetkých blogov, ktoré sme mali predtým. Mohli by sme chcieť pridať nejaké "keby" Podmienky a "inde" podmienky tak, že ak nebudeme mať niečo na blogu, chceme zobraziť niečo užitočného. Rovnako ako, hej. Neexistuje žiadny obsah, ale na blogu. A ak vy skutočne pozrieť sa na Distribúcia kód na GitHub, uvidíte príklad toho, ako to urobíme. Super. Nejaké otázky? Áno. SPEAKER 2: Myslím, že práve zásadná otázka. Späť na trase. ERIC Ouyang: Jo. Ak vezmeme sa pozrieť na cestách. SPEAKER 2: Kam uses.blogcontroller na vytvorenie príspevok, Čo to nám priamo do? ERIC Ouyang: Jo. Jo. SPEAKER 2: Alebo čo je that-- ERIC Ouyang: Tak, pozrite sa, hovoria Napríklad, táto trasa tu. Prvá časť je skutočná URL, že užívateľ bude ísť. A to pole tu, asociatívne pole, definuje ako chceme mať Aplikácie akt v reakcii na to. Takže použitie je regulátor, funkcie, ktoré sme chcem zavolať, keď užívateľ prejde na túto adresu URL. Takže viewPost tu bol funkcie, ktoré sme definovali v z BlogController-- SPEAKER 2: Vidím. ERIC Ouyang: -SO, že sme môže skutočne poskytnúť pohľad, vykonať niektoré výpočty, interakciu s SQL databázou. SPEAKER 2: OK. ERIC Ouyang: A potom druhý diel, "ako" je alias, ktorý používame. Takže ak sme si všimli, keď sme vytvorili formulár, Všimnite si, že adresa URL :: routecreatePost. Tak to nahradí v aktuálnej URL, takže nie sme ťažké kódovanie je do tak môžeme zmeniť raz, povedať, či by sme chceli premenovať. Namiesto toho, aby po lomítka nový, chceme urobiť podobne, p lomítko nový len vyčistiť up našich adries URL bit. Radi by sme to zmeniť na jednom mieste dosť ako vo všetkých rôznych súborov. Super. To je dobre. Takže teraz máme veľmi Základná blog platformu. Pravdepodobne budeme chcieť pridať do tlačidla, aby že vlastne môžeme vytvárať nové pracovné miesta. Takže ak sa pozrieme na Master Rozvrhnutie máme sekciu nazvanú Header Right že sme práve definovaná až v hornej časti. Takže môžeme pridať tlačidlá pre v hornej časti hlavičky. Takže ak ideme do index.blade.php, vlastne urobiť, je definovať, čo sa deje vo vnútri tu. Takže táto časť Header Right, to, čo budeme robiť je pridať tlačidlo pre prechod na URL definuje trasy nové funkcie. Len je vyčistiť a vykonať to pekné a všetko Bootstrap, budeme robiť toto predvolené tlačidlo. Poďme sa len, aby to veľký pre zábavu. A vo vnútri, mohli by sme dať nejaký text. Ale to, čo Bootstrap poskytuje je glyphicons. Takže môžeme skutočne dodať, že pekné ceruzka, že sme videli predtým. Glyphicon. Glyphicon-ceruzka. Takže to nám umožní dať v ikonu namiesto textu. Teraz, keď sme sa to zastaviť, to definuje túto časť. A, hej. Máme pekný tlačidlo, ktoré nás spája priamo pridať stránku do blogu. Takže máme pomerne jednoduchý blog. Môžeme pridať veci do neho. Ale to, čo sme sa všeobecne očakávame z blogov je komentovanie. Takže je to pre nás veľmi dôležité, aby, Napríklad, keď niekto navštívi webové stránky a naozaj rád, že príspevok sa môžu zapojiť do diskusie s inými ľuďmi, ktorí navštívia stránky. Takže sme ísť a vytvárať nové databázové tabuľky a nový model takže môžeme priradiť komentuje s príspevkami. Takže prvý krok, rovnako ako predtým, je to, že musíme spustiť migráciu. Tak ako predtým, my php remeselník migrovať: robiť. A budeme sa vytvoriť volal create_comments_table. Tým sa vytvorí súbor že má našu novú migráciu. A budeme, rovnako ako Pred definovať novú tabuľku. Takže Schema :: vytvárať tabuľke nazvanej komentáre. Táto funkcia tu. A v tejto tabuľke, čo budeme robiť je ako prvý, ako predtým, priradiť ID. Zvýši ID. Budeme umožňuje užívateľom priradiť Ich meno sa zvláštnym komentárom. Budeme mať nejaký obsah, ktorý ide ruka v ruke s týmto, textovým obsahom. A tu to, čo budeme urobiť, je niečo iné. Chystáme sa vytvoriť celé číslo tomu sa hovorí post_id, ktoré bude znamenať, aký príspevok konkrétny komentár sa hodí. Okrem toho sme vlastne bude nastaviť obmedzenie cudzieho kľúča na túto tému. Takže MySQL bude presadzovať to. Nesnažíme sa priradiť komentár číslo 5. Pre pridanie 5000, ak budeme mať nebude mal 5000 príspevkov na to. Takže to, čo tu robíme, robíme zahraničné post_id sa bude spojená s ID pole z miest tabuľky. A budeme niečo robiť inak užitočné, je onDelete. Takže ak by sme odstrániť niektoré Pre pridanie z databázy, že chceme kaskády odstráni k pripomienkam rovnako. Vzhľadom k tomu, že je to moc nepomôže pre nás mať pripomienky príspevkov že neexistujú. A konečne, rovnako ako predtým, sme bude nastavenie časových pečiatok na túto tému. A rovnako ako predtým, budeme majú reverzné migrácia bude upustení komentáre tabuľky. Takže teraz, ak sa vrátime sem, ideme spustiť túto migráciu, remeselník migrovať. A teraz je to uplatňovanie tohto migrácie, ktoré sme práve vytvorili. Ak teda pohľad na phpMyAdmin, robíme, v skutočnosti, teraz majú názory na tabuľku, ktorá má štruktúra, ktorá sme práve uvedené. Tak ako predtým, že sme chystáte vytvoriť nový model na abstraktné tabuľke SQL že sme práve vytvorili. Takže poďme Pridať nový súbor. Budeme hovoriť comment.php. A to je vlastne bude pomerne priamočiary s nepatrnou zmenou toho, čo sme mali predtým. Takže class Komentár rozširuje veľavravné. A čo budeme urobiť, tu je definovať funkcia, ktorá je vzťahy s ostatnými modelmi. Takže budeme mať funkciu príspevok tu sa vracia tento vzťah. Takže sme uvedie, že to patrí k písať, hovorí, že je tam jeden príspevok že tento príspevok patrí. To v skutočnosti musí byť kapitál P pre model. A teraz hneď na druhej flipu side, musíme povedať, že, hej. Príspevky sú komentáre. Takže to, čo budeme robiť, je definovať verejnej funkcii Komentáre. A vracia sa tu to má mnoho komentár. Takže teraz ako mávnutím čarovného prútika, keď máme miesto, môžeme získať atribútov komentáre a to bude naplniť ju informácie z databázy. Takže poďme vlastne prejsť a pridať novú funkciu nášho názoru súboru takže môžeme oba displeje a vytvárať komentáre. Takže budeme definovať novú sekciu. Proste oddeľte s vodorovnou pravidlom. Oddiel id = "poznámky". To, čo budeme robiť tu je, rovnako ako predtým, iterovat všetky komentáre. Takže vlastne, ako to urobiť, je, ako som už spomenul, docela čarovné. Robíme písať komentáre. A potom sa môžeme to pre každý robiť slučka nad každým z pripomienok. A to, čo budeme urobiť, je div class komentár, a budeme vlastne Vytlačte si tento komentár. Takže displej, ktorý hej, komentár name-- osobu ktorý zverejnil toto comment-- hovorí, že dot dot dot. Budeme dať to do bloku citát, len aby to vyzeralo pekne. A potom komentovať obsah bloku ponuku. A foreach. Takže teraz to bude na slučke cez všetky komentáre ktorý je spojený pričom každý z týchto pracovných miest a zobraziť každý z týchto pripomienok. Chystám sa pridať ďalší bod nadol tú, ktorá nám umožňuje pridať komentár. Tak h3 class. Dajte jej názvu. Pridať komentár. A budeme definovať nový formulár. Tak ako predtým, že sme robiť formulára akciu. A tu, nová akcia je, že sme bude definovať nový radič, ktorý nám umožňuje reagovať na príspevok Žiadosti o vytváranie komentárov. Takže URL :: cesta createComment. Idem do parametra tu. ID príspevku, ktorý vytvárame komentár k. A potom spôsobom podľa Formulár bude príspevok. Teraz budeme pridať dve polia, forma skupinu. To bude vstup s meno "meno" a class = "form-riadenie", type = "text", a na symbol = "Vaše meno". Sme tiež bude definovať ďalšie polia formulára, ktorý bude textu Oblasť, ako sme mali predtým. Rovnako ako predtým, hovoria obsah. Class = "form-kontroly." Zástupný = "Napíšte tu." A len tak, že sme môže skutočne predloží ju, predloží typ a class = "BTN BTN-primárne." Zatvorte formulár. Zavrieť túto akciu. Takže teraz keď sme obnovte túto stránku, kde máme, povedzme, zvláštne miesto. Musíme reštartovať server. PHP remeselník slúžiť. Restart to. Musíme definovať trasu. Ale teraz, nech to jednoducho vziať out, takže vlastne môžeme ukázať, čo stránka vyzerá, a potom sa budeme vlastne vytvoriť túto trasu. Tak, hej. Máme tu novú formu tady takže môžeme vytvoriť komentáre. Takže poďme vlastne definovať Funkcie v rámci konania aby sme mohli pridávať komentáre. Poďme sa vrátiť. A v blogcontroller.php, to, čo budeme robiť Ak je vytvoriť novú funkciu volal vytvoriť komentár. Verejná funkcia createComment. To bude mať jediný parameter, ID z miest že sme komentovať. A rovnako ako predtým, že sme bude najprv získať príspevok. Takže písať, findOrfail id. Potom ideme vytvoriť nový komentár. Takže komentovať = nový komentár. Komentovať name = vstup :: dostať meno. Obsah Comment = rovnaký nový riadok do prestávky vstupných :: dostať obsah. A konečne, budeme musieť spájať tento komentár poštou. Takže budeme používať táto funkcia, komentáre, ktorý nám umožňuje uložiť tento vzťah. Takže teraz to komentár bude mať automaticky po ID. Mohli by sme tiež nastaviť ručne, ale to je ľahšie, ak čítať pretože funkcia ide. A potom, čo sme hrať to, čo chceme robiť je presmerovať užívateľa na trase určenej viewPost s poľom s parameter ID príspevku. A teraz, takže to vlastne funkcie, musíme definovať túto cestu. Route :: pošta. A teraz budeme nazývať Príspevok lomka ID lomítko komentár. Array používa novú funkciu že sme práve vytvorili. BlogController. CreateComment as createComment. Skvelé. Takže teraz dúfam, že ak by sme túto stránku obnoviť a pridať komentár, povedzme, David Malan. "Dúfajme, že to funguje." Odoslať. My, v skutočnosti majú komentár k tomuto blogu. Super. Takže teraz máme dosť funkčné blog post. My len tak pridajte pár vylepšení, takže že máme nejaké užitočnejšie Informácie o týchto miestach. Takže keď sa vrátime do predná strana, nemáme žiadny zmysel koľko poznámky sú Na každom z týchto miest. Takže to, čo sme vlastne deje urobiť, je, v našom modeli, definovať pomocné funkcie, ktorá umožňuje nám zadať počet komentárov že ísť s konkrétne pracovné miesto. Takže budeme vytvárať pomocná funkcia. Verejné funkcie. GetNumCommentsStr. Takže reťazec, ktorý určuje číslo komentárov, ktoré idú spolu s ním. A to, čo budeme robiť, je hovoriť že num = počet tento komentár. Takže budeme počítať počet komentárov. A ak toto číslo rovná 1, my sme práve chystá k návratu 1 komentár. A potom inak, chceme sa vrátiť zreťazenie num a pripomienky, tak sme si pluralite správne. Len, aby to jeden citát. One comment. A teraz môžeme použiť túto funkciu priamo vo vnútri nášho pohľadu. Takže keď sa vrátime do čiastkové príspevky, ktoré sme vytvorili, Teraz chceme, aby skutočne zobrazí počet komentárov. Takže to, čo môžeme urobiť, je pošta, použite túto funkciu že sme práve vytvorený zobrazí počet komentárov. Takže ak teraz aktualizovať, to robí, v skutočnosti, displej číselná komentáre že ísť spolu s ním. Ak by sme chceli byť fantázie, ak vás v skutočnosti sa pozrieť na distribučnom kód, skutočne môžeme prepojiť to do komentárov. Ak si spomínate, sme definovali v rámci názor, že to má časť ID pripomienky. Takže ak by sme skutočne chceli prepojiť priamo v komentároch, čo budeme robiť tu je a href URL trasy viewPost. Odovzdať v poli ID post ID. A potom chceme ísť do konkrétne časť komentáre. Tu poďme uzavrieť tag. Takže teraz keď sme obnoviť tento strana, klikneme na túto tému. Pôjdeme priamo do časť komentáre. Ak by sme mali dlhší príspevok, môžete skutočne vidieť tento odraziť nadol. Ale všimnite si, že je to nie je v hornej časti stránky. Super. Skvelé. Takže je to celkom jednoduché príklad niečoho jednoduchého že môžete robiť s Laravel. Ale môžete si všimnúť, že tu Urobili sme veľa vecí s pomerne malým množstvom kódu. Laravel nám umožňuje robiť SQL dotazy v zákulisí. To robí kanalizácie Pre nás v zákulisí. Nám umožňuje tieto vzťahy veľmi ľahko, bez toho aby sme museli robiť žiadne SQL pripojiť vyhlásenie na kombinovať komentáre s tým, čo príspevky. Umožňuje nám to urobiť dedičnosť šablón takže môžeme definovať tieto hniezdenia súborov, takže nie sme opakovanie sami, rovnako ako keď sme mali, že zobrazenie z blogu že nemusíme skopírovať a vložiť kód. A tu si môžete vytvoriť stále zložitejšie aplikácie. Viete si predstaviť, keby sme chcel realizovať log-in, Dalo by sa povedať, priniesť tretej osobe rámec, ktorý nám umožňuje robiť to. Je tu partia z nich že sú naozaj, ale naozaj skvelé, že sa mi páči, obnovenie hesla. A to vám pošleme reset hesla e-mail. Môžeme realizovať oprávnenia takže môžem vytvoriť príspevok, ale niekto iný nemôže upravovať. Môžeme realizovať Funkcie zmazať príspevky. Ale môžete pozrieť tu, že máme dosť moc všetky primitívne komponenty stavať nejaké naozaj, ale naozaj, dynamické a vzrušujúce webových aplikácií. Takže s tým, myslím, že sme dobrí. Myslíte si chalani nejaké otázky? Ano? SPEAKER 3: Ako sa vám dostať sa statický obsah? ERIC Ouyang: Statický obsah. Takže si nevidel, že keď sme mali Toto právo je tu, tento obsah usporiadanie, pohľad make sme mali to bez tohto poľa potom. Blog.index, mali sme to len ako statické súboru. Takže keď neprejdú niečo pozdĺž nej, Bude to len vykresliť HTML priamo. Ale keď sme sa prejsť v tomto asociatívne rad pracovných miest, ktorá je dynamicky vytiahol z databázy, my môže strana dynamický. Super. Nejaké ďalšie otázky? SPEAKER 3: Ako by ste porovnal Laravel sa možno niektoré ďalšie možnosti? ERIC Ouyang: Iste. Jo. Tak Laravel je-- to je veľký question-- jedna z mnohých možností webových frameworkov. Takže Ruby on Rails, je ten, ktorý je populárny. Verím, že Twitter býval implementované s Ruby on Rails. Myslím, že som od tej doby zapnutia. Je tu ešte jeden s názvom FuelPHP. Takže Ruby on Rails používa jazyk Ruby a realizuje mnoho MVC veci že tu vidíme. FuelPHP je ďalší rámec PHP. Django je jedna z mojich obľúbených. Je to web rámec pre Python. Takže si môžete napísať svoj webovú aplikáciu v Pythone. Takže tam je tona z týchto možností. Laravel, myslím, že tým, že a veľký je môj obľúbený pravdu Teraz pre PHP len preto, že komponentov že sme sa rozprávali o tom skôr. Je to Composer povolená. Obsahuje naozaj, ale naozaj expresívne ORM systém. Tiež má naozaj úžasné šablonovacího jazyk, že niektoré z ostatných jednoducho neposkytujú. A migrácie. Migrácia sú úžasné rovnako. Pohode? Desivý. No, vďaka moc za sledovanie tohto seminára, a veľa šťastia na vašich záverečných prác.