[Hudba hrát] ERIC Ouyang: Ahoj, všichni. Vítejte u nás. To je vytváření dynamických Web Apps s Laravel. Mé jméno je Eric Ouyang. Jsem ve druháku studovat společenské vědy se sekundární ve vědě o počítačích, a žiji v Adams Dům tady na Harvardu. Tak Laravel, na jeho nejvíce jádru, je webová aplikace rámce MVC. Tak se mi, co vy máte dělal s CS50 Finance, Laravel je rámec, který umožní vám na vytváření dynamických webových aplikací. Takže si můžete myslet na to, v některých smyslech jako rozšíření druhu věci jsi dělal v CS50 Finance, ale systém, který je mnohem robustnější, hodně více elegantní v některých smyslech, a nabízí mnoho Funkce pro vás budovat poměrně složité webové aplikace. Takže pojďme projít některé z klíčových vlastností, a pak budeme ponořit do Příkladem budování blog aplikace s Laravel. Takže jedna z prvních věcí, které odlišuje ji od MVC druh práce že jste dělal s CS50 je, že obsahuje ORM motor. Takže ORM znamená objekt relační mapování. Tak to vám umožní vytvořit vrstva abstrakce mezi databází a vaše regulátory. Takže na rozdíl od CS50 financí, pokud přímo vytvořit dotazy, ORM vrstva umožňuje abstraktní to pryč a vytvářet Modely, které jsou silnější než můžete přímo s SQL dotazy. Další věc, která je opravdu užitečné je dědičné šablony. Takže budete oznámení v CS50 Finance, skončíte přepisování spoustu věcí, kde místa byste mohli potenciálně opětovné použití věci, nejste schopni. Tak tady v Laravel, můžete použít to, co je známý jako šablony motor čepele k vytvoření hlavního rozvržení. A odtud, můžete zdědit tak, aby dílčí šablony mohou ve skutečnosti obsahovat prvky uvnitř že větší základní šablony. Migrace. Takže to je poměrně standardní funkce na většina moderních webových aplikačních rámců. Tak to vám umožní reprezentovat Změny databáze schématu v kódu. Takže, aniž by se říct, phpMyAdmin, můžete skutečně vytvořit tyto migrace kde se představují databáze schéma změny v kódu přímo. A to vám umožní to-- zvláště pokud máte více lidí pracujících na stejné webové application-- tyto změny sledovat, říci, GitHub, nebo nějaký jiný úložiště. Tak tohle je opravdu užitečné a zmírňuje potřebu na, řekněme, projít kolem mnoha SQL skládek. A konečně, je Composer něco opravdu, opravdu užitečné která vám umožní používat další Kód lidí dělat úžasné věci. Takže Laravel je strukturován několik skladatel balíčky. Takže říct, jestli byste chtěli, aby v balení ověřování nebo pokud byste chtěli, aby v některých druh generátoru skriptu nebo admin rozhraní, můžete připojit a hrát tyto komponenty se skladatelem. Tak pojďme začít. Jakékoliv dotazy od vás kluci Než začneme? Žádné otázky? Super. Takže první krok je instalace Composer. Takže Composer umožňuje spravovat tyto závislosti, ať už je to rámec Laravel nebo nějaké jiné rozšíření třetích stran. První příkaz umožňuje si můžete stáhnout Composer, a druhý příkaz umožňuje přesunout ji do místní složky bin takže můžete spustit Composer přímo přes terminál. Po tom, jděte do toho a vytvoření nového projektu Laravel. Jsme vlastně bude použít nějaký příklad kódu že jsem se dal dohromady k vytvoření tohoto blogu. Ale pokud jste od scratch, měli byste použít tento příkaz tady, skladatel vytvořit projekt, laravel lomítko laravel, a poté název projektu. A to bude zahrnovat všechny distribuce kód pro zahájení nového projektu Laravel. Takže pro vaše CS50 závěrečných prací, budete pravděpodobně budete chtít použít tento příkaz. Ale budeme začít s tím. Takže poté, co jste udělal to, že budete dostat poměrně rozsáhlý číslo souborů v blog50. Tak ať to jen projít některé z těchto složek. Určitě jste si všimli na této trase adresář, tam je složka app. Uvnitř složky app, je tu pár užitečné složky. Za zmínku začít s Je to složka config. Tak to nastaví jak vaše webová aplikace je jít do, řekněme, ověřit lidi nebo peněžní věci, nebo se připojit k databázi. A co je vlastně užitečné je, že Laravel umožňuje nastavit různé vývojová prostředí. Takže to, co jsme tu udělali, je-li půjdeme pod místní složky, tam je soubor database.php. A všimněte si, že jsme tady nastavení připojení k MySQL, že umožňuje jednotlivcům připojit k MySQL serveru, který je přímo na CS50 spotřebiče. A my se připojujete k databázi že jsem se nastavit volal Blog50. Takže pojďme skutečně jít dopředu a spustit pracovní verze tohoto, jen proto, aby o tom, co aplikace, která stavíme vypadá. Tak jsem mít kopii to Blog50 dokončena. Tak Laravel vlastně vybudovala na serveru že můžete spustit přímo z příkazového řádku. Takže je to podobné Pset dříve, když jste vlastně vytvořit svůj vlastní server v C. Takže oni mají jeden vybudovanou tak že můžete spustit své Laravel aplikace přímo z příkazové řádky. Takže pokud budeme dělat php řemeslník sloužit, to zahájí vývojový server na portu 8000. Takže pokud jdeme do místního hostitele 8000, zjistíte, že, hej. Máme blog nahoru a běh. Tak Laravel tady je generování přední strana našem blogu. Velmi jednoduchá aplikace. Ale je tu pár opravdu šikovných funkcí, že poskytuje pod kapotou. Takže blog aplikace je přímočaré. Pokud bychom chtěli vytvořit místo, můžeme klikněte na toto tlačítko. Dá se říci, "Ahoj, všichni. To je opravdu zábavná seminář, "například. A napsat něco tady dole. Text zde. Pokud klepněte na tlačítko Odeslat, budete Všimněte si, že náš nový blog Příspěvek byl přidán do Titulní strana blogu. Vrátíme-li se sem, zjistíte, že tam byly některé připomínky již Na blogu. Takže pokud bychom se posunout dolů, budete Všimněte si, že Jonathan Tan říká že ho velmi zaujal tento post. Takže půjdeme do toho, jak objekt relační mapování umožňuje abys tyto vztahy v poměrně bezproblémové způsobem také. Super. Jakékoliv dotazy týkající se funkčnosti o tom, co budeme stavět? Super. Tak pojďme začít s opravdu vytváření databázové tabulky. Takže připomenout, že v CS50 Finance, vás dát dohromady tabulku pro uživatele stejně jako pro zásoby ve svém portfoliu. Tak jak jsme se zmínili dříve, to, co používáme v Laravel je něco, známý jako stěhování. Takže když se vrátíme do Distribuce kód zde, První příkaz, který je užitečné, že Laravel vám poskytne je tento příkaz migrovat. Takže můžeme udělat php řemeslník Přesunout: dělat. Tak to nám umožňuje vytvářet migraci. A pak budeme chtít vytvořit migraci volal create_posts_table, což se děje být tam, kde budeme být uložení našich blogu. A všimněte si, že tu běží přes nějaký kód, který vlastně generuje soubor s časové razítko na to. Takže když jsme se jít podívat na databáze, jsme si všimli v migraci že to vytvořil prázdný soubor, pro nás, které má často používaný kód s názvem že jsme specifikovali, vytvořte příspěvky tabulky. A to má dvě funkce v něm. Up je to, co chceme běžet Migrace se aplikuje do databáze. A dole je to, co budeme dělat když chceme zvrátit migrace. Tak tady pojďme začít s psaním tohoto přechodu. Takže tam je užitečný class v Laravel volal schématu. Takže budeme spouštět Schema :: vytvořit. A budeme vytvářet tabulku s názvem příspěvky. A tady jsme se aplikovat tento pomocí funkce. A v tu, budeme skutečně upřesnit obsah našeho stolu. Chystáme se vytvořit ID, což je auto-Inkrementace. Kromě toho, jdeme k vytvoření pole, které představuje název našeho blogu. Jsme také bude, aby vytvořit pole pro uložení textu našeho blogu. A konečně, jdeme uložit některé časová razítka , když byl vytvořen náš příspěvek a když to byla aktualizována. A dolů, je to docela jednoduché. Vše, co chcete udělat, je pokles tabulky, které jsme vytvořili. Skvělé. Nějaké otázky? Takže teď když jsme pokračovat a- ve skutečnosti, místní hostitel, dovolte mi, abych odstranit to, co jsme měli předtím. Jděte do databází. Budu-li odstranit to, co jsme měli předtím. Drop to a vytvářet nová databáze Blog50. Takže co teď magický část je tady, že jsme Můžete použít tyto migrace přímo do databáze pomocí příkazového řádku nástroje. Takže pokud budeme dělat php řemeslník migrovat zjistíte, že, hej. Je to vytvoření tabulky migrace, které se podíváme na v trochu, a to aplikovat tuto první migraci. Takže se podíváme na Blog50, zjistíte, že to vytvořil dvě tabulky pro nás. První z nich je to migrace tabulku. Takže pokud budeme prohlížet to, zjistíte, že tato tabulka je poměrně jednoduché. Je to jen řekl, že, hej. Jsme využilo tuto migraci. Jsme se vrátit a podívat se na příspěvky. Určitě jste si všimli, že struktura je přesně to, co jsme se zeptali to. Máme auto-zvyšování ID. Máme řetězec pro ukládání titul, a textové pole pro ukládání obsahu. Skvělé. Super. Máte otázky k migraci práce, jak můžeme je použít? Ne? Super. Takže teď budeme pokračovat a vlastně vytvoření modelu. Proto chceme vytvořit model, který příspěvky ukládá abstrakce databáze. Takže spíše než dělat MySQL dotazů přímo, budeme vytvářet. Takže musíme vytvořit Složka tady nazývají modelech. A uvnitř tady, jedeme do vytvořit soubor s názvem post.php. Uvnitř této PHP souboru budeme vytvářet třída pracovní místo, které rozšiřuje výmluvné. Výmluvný je název ORM Motor, který Laravel poskytuje. A tady, můžeme očekávat, že skutečně potřebujete napsat nějaký kód. Budeme psát nějaký pomocné funkce později. Ale po vybalení z krabice, to bude již rozpoznat, co je v databázi a můžeme přistupovat, řekněme, text našeho blogu, nebo název, a vytvářet věci přímo skoro žádný kód vůbec. Takže to je jedna z magických prvků. A vítr jednou do této třídy je více plnohodnotné, budeme zahrnovat informace o tom, co Souvisí to tak, komentářů. Také vytvořit funkci takže můžeme vlastně přímo zjistit adresu URL na stránce blog post. Super. Jakékoliv dotazy o tom? Ne. Super. Takže teď jakmile budeme mít náš model, my Chcete vytvořit řadič, který je schopen komunikovat s těmito modely, a následně databáze. Takže pokud se podíváme na BlogController, budete Všimněte si, že to není moc tady právě teď. Všechno, co je, je funkce index který generuje domovské stránky, ale bez cokoli tam zobrazí dosud. Takže první funkce že budeme vytvářet je ten, který nám umožňuje k vytvoření blogu. Takže budeme deklarovat nová funkce s názvem newPost. A uvnitř tady prostě jdeme nastavení rozvržení stránky být poskytnout verzi, Pokud si vzpomínáte z CS50, této šablony s názvem blog.new, který budeme vytvářet v trochu. Všimněte si, tady na lince šest, které jsme specifikovali této proměnné, rozložení. A pokud se podíváme na složku pohledy, je rozvržení složka, která obsahuje velmi základní HTML souboru. A poznámky, zjistíte, že máme tento obal tady to přináší obsah. Takže v naší šablony to, co budeme dělat je vytvořit to, co se bude substituované přímo v tomto uspořádání. Tak jsme si řekli, že chceme k tomu, aby šablona s názvem blog.new. Ale uvnitř blogu, je tu Zatím není tato nová šablona. Takže budeme vytvářet Soubor s názvem new.blade.php. To říká, že Laravel tento soubor PHP by být vykreslen s čepel šablony motor. Tak to je docela přímočaré souborů. Je to bude forma, kterou vlastně přidat blogu. Takže kouzlo sem z dědictví je to, hej. Chceme určit, že část, úsek obsah Zde, který je vymezen bysection astop. Takže to, co je mezi tím tu bude být nahrazen do hlavního rozvržení. A tady to, co chceme udělat, je velmi jednoduše vytvořit nový soubor HTML. Pojďme se jen přidat rychlý titul. Přidejte blogu. A v ní, že jsme chystáte vytvořit formulář. Tento formulář bude mít akci. A to bude něco že jsme se nahradit později, a uvidíme, jak směrování zapadá do zde. Ale my jsme jen tak definovat teď že to jde na adresu URL s trasy od createPost. A pak se to děje mít metody POST. V tady, jdeme mít dvě pole. Div class = "form-skupina". Jsme pomocí knihovny Bootstrap CSS laskavě poskytl Twitter. Takže budeme vytvářet dva z nich. Takže tento první vstup je Bude titul. Takže input name = "title". Class = "FormControl". Type = "text". Chystám se přidat zástupný symbol = "Název". A pak druhá je Bude textové oblasti. Name = "obsah". Class = "FormControl". A symbol = "Napište zde". Tam jsme jít. Nakonec budeme přidat rychlou tlačítko Odeslat. Type = "submit" class = "BTN BTN-primární". Tak to jsou všechny rysy bootstrap tak že to může být stanovena se způsobem, který je kořist pro uživatele, spíše než pouhým HTML. Takže jsme definovali řadič zde. Jsme definovali velmi jednoduchý pohled. Ale to, co chybí, je pojivové tkáně. Takže v tomto bodě, Laravel nemá ponětí, jak budeme skutečně Přístup k této řadič. Tak toto je definováno v Soubor s názvem routes.php. A právě teď, máme jednu trasu. Což je, když jdeme do home cesta k této webové stránce, to bude k tomu, aby index regulátor. Tak tady to, co musíme udělat, je provést nová cesta pro nás vytvořit post. Tak jsme se použít tuto metodu dostat, který stanoví že pokud se uživatel pokusí si to page-- výslovně pošta lomítko novou page-- to, co budeme dělat je použít ovladač s názvem BlogController nový příspěvek. Ten, který jsme právě vytvořili. A pak půjdeme na alias jako newPost. Budeme vytvářet další Funkce v trochu. Ale to, co je tady v rámci klíč "jako" je to, co můžeme dosadit do Naši šablony čepelí. Takže teď, pojďme vlastně také říci trasu. Takže jsme také bude k vytvoření řadiče takže můžeme vytvořit tyto místa. Takže pokud uživatel příspěvků na stránku sloupku lomítko nový, co budeme dělat je používá řadič, který budeme v dohledné době vytvořit volal BlogController na createPost. A budeme alias to se jako createPost. Super. Nějaké otázky? Super. Takže pojďme běžet, co máme tak daleko. Takže pokud budeme dělat php řemeslník sloužit, uvidíme spoustu chyb. Takže to vypadá, že máme syntaktická chyba na trasách řádku 27. Ah. Chybí středník. Takže pokud jdeme do 8,000, uvidíte, nic ještě tady. Tak to je výchozí domovskou stránku. Ale když jdeme přidání lomítko nový, hej. Bude to formulář, který jsme právě vytvořili. Právě teď, my ne implementována funkce když jsme stiskněte tlačítko Odeslat. Takže pokud budeme klikněte na Odeslat tlačítko, bude to běh chybu. Ale budeme kódu, který právě teď, přesně to, co jsme chcete udělat, když uživatel předkládá tento formulář. Tak pojďme to udělat. Vraťte se do souboru regulátorů. To, co budeme dělat, je zavést tuto novou funkci která nám umožňuje vytvořit příspěvek. Deklarovat novou funkci. Veřejná funkce createPost. A tato funkce bude trochu složitější, než to, co jsme měli předtím. Ale uvidíte, tady, že nejsme bude vlastně psát nějaký SQL. ORM, výmluvný ORM, bude umožňovat nám to udělat v některých způsoby, jak více elegantním způsobem. Takže budeme-li vytvořit nový příspěvek. A tady jsme konkretizaci nový objekt z modelu, který jsme právě vytvořený model pošta. A to, co budeme dělat, je nastaven název atribut tohoto pomocí něčeho že jsme si ze serveru. Tak tohle je podobné tomu, co jsme měli předtím v CS50 Finance kde budeme dělat, za použití Super Global Post hledá titul. Takže Laravel poskytuje některé kanalizaci a kdoví co ještě tuto funkci pomocníka. Tak jsme se raději použít místo tohoto velmi základní syrové formě z PHP. A pak to, co budeme dělat, je nastaven obsah jej na vstup dostat obsah. Jsme vlastně bude zabalit To užitečnou funkci že PHP poskytuje tzv nl2br, který Ukazuje nových tratí, NLS do BRS, přestávky, takže vlastně můžeme mít různé body v něm. A konečně, co budeme udělat, je uložit tento příspěvek. Tak jsme volání funkce ušetřit na tomto modelu. Chystáme se zachránit příspěvek. A konečně, co budeme dělat je přesměrovat uživatele specificky na trase, které budeme společně vytvořit krátce, alias by viewPost. A jdeme projít v argumentech id, je id této nové funkce. Skvělé. Takže teď když jsme skutečně jít a spustit to. Budeme-li přidat nový příspěvek. Řekněme, že je to seminář 50. A říkají, určitě. ASDL. Cokoliv. Nějaký obsahu. A předloží ji. A všimněte si, že, hej. cesty není definována. Ale pokud se podíváme na phpMyAdmin a podívejte se na tom, zda naše funkce nic neudělal. Podívejte se na Blog50 míst. Budeme Všimněte si, že hej. Ve skutečnosti jsme se jen vytvořit tento blog post s časová razítka, jak je uvedeno. Takže teď se vraťme a dokonce vytvářet tato jiná funkce v našem regulátoru, konkrétně viewPost regulátor. Takže public function viewPost. Tak tady to, co budeme dělat, místo toho mít prázdné závorky, budeme chtít předat ID příspěvek, který vytváříme. A odtud, co budeme dělat je vlastně dotaz databáze pro něj. Takže pokud se nám psát, tam je funkce s názvem Zjistíte, že nám umožňuje vyhledávat ji ID. Konkrétně, ve skutečnosti, budeme použít alternativní verze tohoto názvem Najít nebo Fail, což nám umožňuje ukončete z této funkce, vyvolat výjimku, pokud je ID míjíme v neexistuje. A pak budeme dělat něco podobné tomu, co jsme dělali dříve kde jsme si stanovili obsah této stránce je tavené verze tohoto nového pohledu který budeme vytvářet, blog.view. A my jdeme projít do to-- stejně jako v CS50 činí function-- slovník proměnných. Klíče této asociativního pole stát proměnné uvnitř šablony. Takže budeme dělat příspěvek příspěvek. Takže projít nepřímo na příspěvek, který jsme dotazovaný z databáze. , Co teď budeme udělat, je vytvořit tento názor takže vlastně můžeme zobrazit na blogu, který jsme si vybudovali. Takže budeme vytvářet Soubor s názvem view.blade.php. Takže v této šablony, to, co budeme dělat je dát dohromady jednoduchou stránku, která nám umožňuje zobrazit obsah. Tak jsme udělat bod, to je před obsahem. Přestaň. A co budeme k tomu v rámci zde napsat nějaký HTML k zobrazení této stránky. Takže budeme zabalte do fantazie Nový HTML5 element s názvem článku. A tady, jdeme mít záhlaví kde budeme prostě mít H1, který obsahuje název příspěvku. Tak tady, podíváme-li se na to double složená závorka notace, to bude dělat v podstatě PHP echo Název příspěvku. Takže je to užitečná zkratka že Laravel nám poskytuje. Takže budeme používat Tento zápis místo. A tady, budeme také vytisknout obsah z toho. A tady, jdeme k tomu příspěvek obsahu. A dole na dně, co jsme dělat, je vytvořit zápatí. A v zápatí, budeme První display když to byl vyslán. Tak tohle byl vyslán na, vytvořil na adrese. A Laravel používá opravdu pěkný datum knihovna s názvem Carbon. Takže můžeme vlastně dělat něco, co nazývá difforHumans, které jste viděli dříve. Když jsme dosáhli. to řeknu, stejně jako před pěti sekund. Tak tohle je opravdu pěkný funkčnost Laravel. A konečně, jdeme zavřete toto zápatí. Takže teď, pokud se vrátíme do Úvodní stránka jdeme se ještě tady, protože nevidí nic jsme se kódované na domovskou stránku. Ale když jdeme přidání lomítko jeden, budeme vidět výjimku. Ví někdo, proč vidíme výjimku? Co nám chybí? Nějaké nápady? Takže to, co jsme dělali dříve pro nás vlastně definovat, jak se dostaneme do konkrétní regulátory? Reproduktor 1: cesta? ERIC Ouyang: Jo. Takže jsme ještě definovat trasu. Tak jsme se vrátit sem do routes.php. Určitě jste si všimli, že jsme nemají vlastně definován jak budeme dostat tento řadič. Takže teď budeme definovat touto cestou. Je to poměrně jednoduché, podobné tomu, co jsme dělali dříve. Ale to, co budeme všímat zde že budeme mít vyhrazené místo. Takže pokud budeme dělat route.get lomítko ID příspěvku. Takže ID teď je to, co se děje na předány do regulátoru. To se bude používat ovladač, který jsme právě vytvořil, BlogController na viewPost. A budeme se alias to jako viewPost. Skvělé. Takže teď budeme vytvářet touto cestou. Takže teď když půjdeme zde a obnovte tuto stránku, my ve skutečnosti to jsou naše nové blogu. Tak tohle je to, co jsme vytvořili dříve. Velmi jednoduché stránky, ale zobrazí blog post, které jsme právě vytvořili. Super. A když jsme vlastně projít celou Proces vytváření nového blogu, jsme si všimli, že vše, co přesměrování správně. Když řeknu, "Ahoj. Jsem Jonathan Tan. " Rci: "To je můj blog post." A předloží ji, to bude vytvářet tento nový blog post s ID 2, který přírůstky z toho, co jsme měli dříve a zobrazuje správně. Děsivý. Nějaké otázky? Ano? SPEAKER 2: Má Laravel rukojeť sanitaci a vše pro vás? ERIC Ouyang: Ano. Takže když jsme viděli dříve, když jsme vstup tračníku tlustého střeva dostat, že sanuje jakékoliv SQL injekce a kdoví co ještě že bychom mohli chtít provést, pokud Jsme uživatel se zlými úmysly webové stránky. Takže Laravel zpracovává hodně z toho v zákulisí. Dobrá otázka. Takže pojďme se podívat na domovskou stránku. Takže když jsme se poprvé vrátit do regulátor na domovské stránce, zjistíte, že to nedělá moc sem. Všimněte si, že nejsme přecházet do tohoto regulátoru něco obzvláště užitečné. Je to právě tento index soubor. Takže pojďme projít do to něco užitečné. A konkrétně, my jsme bude se pak v příspěvcích. A Laravel nám umožňuje udělat místo vůbec, což nám umožní získat všechny příspěvky. Nyní, když se vrátíme do index.php, uvidíte, hej. Zatím nic zde. Ale to, co chceme, aby to tady je vlastně iterovat, dělat smyčky foreach nad příspěvky, které nám umožňuje vytisknout pracovní místa. Takže foreach příspěvky jako pošta, co chceme dělat je vytisknout obsah na blogu. Ale jedna věc, které si všimnete, je, že jsme vlastně psal většinu z tohoto kodexu Již v view.blade.php. Takže to, co budeme dělat, je ve skutečnosti použijte pěkný užitečné funkce ostří a faktor tento společný kód. Tak jsme se jít sem. Budeme se brát tento obsah tady, a to, co budeme dělat je vytvořit novou složku. Prostě říkám partials. A tady, jdeme vytvořit post.blade.php. Tak tady jsme vytknout, jakým způsobem které chcete zobrazit tato místa. A tady to, co budeme dělat, místo ve skutečnosti má tento HTML přímo, budeme používat tuto směrnici volal patří blog.partials.post. A co budeme dělat tady je předat funkci stránky. Takže teď když půjdeme zpátky, budeme Všimněte si, že funkce je stále stejný. Ale teď máme to vytknout kód, tento HTML. Takže můžeme použít v indexu. Tak zde, je to velmi jednoduché. Všechno, co děláme, je zahrnout blog.partials.post a pole. A někde na předtím, my příspěvek post. Takže teď, pokud se vrátíme do Hlavní stránka, budeme vidět, že, hej. Máme seznam všech blogů, které jsme měli předtím. Mohli bychom chtít přidat nějaké "kdyby" Podmínky a "jinde" podmínky tak, že pokud nebudeme mít něco na blogu, chceme zobrazit něco užitečného. Stejně jako, hej. Neexistuje žádný obsah, ale na blogu. A pokud vy skutečně podívat se na Distribuce kód na GitHub, uvidíte příklad toho, jak to uděláme. Super. Nějaké otázky? Ano. SPEAKER 2: Myslím, že právě zásadní otázka. Zpět na trase. ERIC Ouyang: Jo. Vezmeme-li se podívat na cestách. SPEAKER 2: Kam uses.blogcontroller na vytvoření příspěvek, Co to nám přímo do? ERIC Ouyang: Jo. Jo. SPEAKER 2: Nebo co je that-- ERIC Ouyang: Tak, podívejte se, říkají Například, tato trasa tady. První část je skutečná URL, že uživatel bude jít. A to pole tady, asociativní pole, definuje jak chceme mít Aplikace akt v reakci na to. Takže použití je regulátor, funkce, které jsme chci zavolat, když uživatel přejde na tuto adresu URL. Takže viewPost tady byl funkce, které jsme definovali v z BlogController-- SPEAKER 2: Vidím. ERIC Ouyang: -SO, že jsme může skutečně poskytnout pohled, provést některé výpočty, interakci s SQL databází. SPEAKER 2: OK. ERIC Ouyang: A pak druhý díl, "jak" je alias, který používáme. Takže pokud jsme si všimli, když jsme vytvořili formulář, Všimněte si, že adresa URL :: routecreatePost. Tak to nahradí v aktuální URL, takže nejsme těžké kódování je do tak můžeme změnit jednou, říct, jestli bychom chtěli přejmenovat. Místo toho, aby po lomítka nový, chceme udělat podobně, p lomítko nový jen vyčistit up našich adres URL bit. Rádi bychom to změnit na jednom místě dost než ve všech různých souborů. Super. To je dobře. Takže teď máme velmi Základní blog platformu. Pravděpodobně budeme chtít přidat do tlačítka, aby že vlastně můžeme vytvářet nová pracovní místa. Takže pokud se podíváme na Master Rozvržení máme sekci nazvanou Header Right že jsme právě definována až v horní části. Takže můžeme přidat tlačítka pro v horní části hlavičky. Takže pokud jdeme do index.blade.php, vlastně udělat, je definovat, co se děje uvnitř zde. Takže tato část Header Right, to, co budeme dělat je přidat tlačítko pro přechod na URL definuje trasy nové funkce. Jen je vyčistit a provést to hezké a všechno Bootstrap, budeme dělat toto výchozí tlačítko. Pojďme se jen, aby to velký pro zábavu. A uvnitř, mohli bychom dát nějaký text. Ale to, co Bootstrap poskytuje je glyphicons. Takže můžeme skutečně dodat, že pěkné tužka, že jsme viděli dříve. Glyphicon. Glyphicon-tužka. Takže to nám umožní dát v ikonu namísto textu. Nyní, když jsme se to zastavit, to definuje tuto část. A, hej. Máme pěkný tlačítko, které nás spojuje přímo přidat stránku do blogu. Takže máme poměrně jednoduchý blog. Můžeme přidat věci do něj. Ale to, co jsme se obecně očekáváme z blogů je komentování. Takže je to pro nás velmi důležité, aby, Například, když někdo navštíví webové stránky a opravdu rád, že příspěvek se mohou zapojit do diskuze s jinými lidmi, kteří navštíví stránky. Takže jsme jít a vytvářet nové databázové tabulky a nový model takže můžeme přiřadit komentuje s příspěvky. Takže první krok, stejně jako předtím, je to, že musíme spustit migraci. Tak jako dříve, my php řemeslník migrovat: dělat. A budeme se vytvořit volal create_comments_table. Tím se vytvoří soubor že má naši novou migraci. A budeme, stejně jako Před definovat novou tabulku. Takže Schema :: vytvářet tabulce nazvané komentáře. Tato funkce zde. A v této tabulce, co budeme dělat je jako první, jako dříve, přiřadit ID. Zvýší ID. Budeme umožňuje uživatelům přiřadit Jejich jméno se zvláštním komentářem. Budeme mít nějaký obsah, který jde ruku v ruce s tímto, textovým obsahem. A tady to, co budeme udělat, je něco jiného. Chystáme se vytvořit celé číslo tomu se říká post_id, které bude znamenat, jaký příspěvek konkrétní komentář se hodí. Kromě toho jsme vlastně bude nastavit omezení cizího klíče na toto téma. Takže MySQL bude prosazovat to. Nesnažíme se přiřadit komentář číslo 5. Pro přidání 5000, pokud budeme mít nebude měl 5000 příspěvků na to. Takže to, co tu děláme, děláme zahraniční post_id se bude spojena s ID pole z míst tabulky. A budeme něco dělat jinak užitečné, je onDelete. Takže pokud bychom odstranit některé Pro přidání z databáze, že chceme kaskády odstraní k připomínkám stejně. Vzhledem k tomu, že je to moc nepomůže pro nás mít připomínky příspěvků že neexistují. A konečně, stejně jako předtím, jsme bude nastavení časových razítek na toto téma. A stejně jako předtím, budeme mají reverzní migrace bude upuštění komentáře tabulky. Takže teď, pokud se vrátíme sem, jdeme spustit tuto migraci, řemeslník migrovat. A teď je to uplatňování tohoto migrace, které jsme právě vytvořili. Pokud tedy pohled na phpMyAdmin, děláme, ve skutečnosti, nyní mají názory na tabulku, která má struktura, která jsme právě uvedeno. Tak jako dříve, že jsme chystáte vytvořit nový model na abstraktní tabulce SQL že jsme právě vytvořili. Takže pojďme Přidat nový soubor. Budeme říkat comment.php. A to je vlastně bude poměrně přímočarý s nepatrnou změnou toho, co jsme měli předtím. Takže class Komentář rozšiřuje výmluvné. A co budeme udělat, zde je definovat funkce, která je vztahy s ostatními modely. Takže budeme mít funkci příspěvek zde se vrací tento vztah. Takže jsme uvede, že to patří k psát, říká, že je tam jeden příspěvek že tento příspěvek patří. To ve skutečnosti musí být kapitál P pro model. A teď hned na druhé flipu side, musíme říci, že, hej. Příspěvky jsou komentáře. Takže to, co budeme dělat, je definovat veřejné funkci Komentáře. A vrací se zde to má mnoho komentář. Takže teď jako mávnutím kouzelného proutku, když máme místo, můžeme získat atributů komentáře a to bude naplnit ji informace z databáze. Takže pojďme vlastně projít a přidat novou funkci našeho názoru souboru takže můžeme oba displeje a vytvářet komentáře. Takže budeme definovat novou sekci. Prostě oddělte s vodorovnou pravidlem. Oddíl id = "poznámky". To, co budeme dělat tady je, stejně jako předtím, iterovat všechny komentáře. Takže vlastně, jak to udělat, je, jak jsem již zmínil, docela kouzelné. Děláme psát komentáře. A pak se můžeme to pro každý dělat smyčka nad každým z připomínek. A to, co budeme udělat, je div class komentář, a budeme vlastně Vytiskněte si tento komentář. Takže displej, který hej, komentář name-- osobu který zveřejnil toto comment-- říká, že dot dot dot. Budeme dát to do bloku citát, jen aby to vypadalo hezky. A pak komentovat obsah bloku nabídku. A foreach. Takže teď to bude na smyčce přes všechny komentáře který je spojen přičemž každý z těchto pracovních míst a zobrazit každý z těchto připomínek. Chystám se přidat další bod dolů tu, která nám umožňuje přidat komentář. Tak h3 class. Dejte jejího názvu. Přidat komentář. A budeme definovat nový formulář. Tak jako dříve, že jsme dělat formuláře akci. A tady, nová akce je, že jsme bude definovat nový řadič, který nám umožňuje reagovat na příspěvek Žádosti o vytváření komentářů. Takže URL :: cesta createComment. Jdu do parametru zde. ID příspěvku, který vytváříme komentář k. A pak způsobem podle Formulář bude příspěvek. Teď budeme přidat dvě pole, forma skupinu. To bude vstup s jméno "jméno" a class = "form-řízení", type = "text", a na symbol = "Vaše jméno". Jsme také bude definovat další pole formuláře, který bude textu Oblast, jak jsme měli předtím. Stejně jako předtím, říkají obsah. Class = "form-kontroly." Zástupný = "Napište zde." A jen tak, že jsme může skutečně předloží ji, předloží typ a class = "BTN BTN-primární." Zavřete formulář. Zavřít tuto akci. Takže teď když jsme obnovte tuto stránku, kde máme, řekněme, zvláštní místo. Musíme restartovat server. PHP řemeslník sloužit. Restart to. Musíme definovat trasu. Ale teď, ať to prostě vzít out, takže vlastně můžeme ukázat, co stránka vypadá, a pak se budeme vlastně vytvořit tuto trasu. Tak, hej. Máme tu novou formu tady takže můžeme vytvořit komentáře. Takže pojďme vlastně definovat Funkce v rámci řízení abychom mohli přidávat komentáře. Pojďme se vrátit. A v blogcontroller.php, to, co budeme dělat Je-li vytvořit novou funkci volal vytvořit komentář. Veřejná funkce createComment. To bude mít jediný parametr, ID z míst že jsme komentovat. A stejně jako předtím, že jsme bude nejprve získat příspěvek. Takže psát, findOrfail id. Poté jdeme vytvořit nový komentář. Takže komentovat = nový komentář. Komentovat name = vstup :: dostat jméno. Obsah Comment = stejný nový řádek do přestávky vstupních :: dostat obsah. A konečně, budeme muset spojovat tento komentář poštou. Takže budeme používat tato funkce, komentáře, který nám umožňuje uložit tento vztah. Takže teď to komentář bude mít automaticky po ID. Mohli bychom také nastavit ručně, ale to je snadněji, pokud číst protože funkce jde. A poté, co jsme hrát to, co chceme dělat je přesměrovat uživatele na trase určené viewPost s polem s parametr ID příspěvku. A teď, takže to vlastně funkce, musíme definovat tuto cestu. Route :: pošta. A teď budeme nazývat Příspěvek lomítko ID lomítko komentář. Array používá novou funkci že jsme právě vytvořili. BlogController. CreateComment as createComment. Skvělé. Takže teď doufám, že pokud bychom tuto stránku obnovit a přidat komentář, řekněme, David Malan. "Doufejme, že to funguje." Odeslat. My, ve skutečnosti mají komentář k tomuto blogu. Super. Takže teď máme dost funkční blog post. My jen tak přidejte pár vylepšení, takže že máme nějaké užitečnější Informace o těchto místech. Takže když se vrátíme do přední strana, nemáme žádný smysl kolik poznámky jsou Na každém z těchto míst. Takže to, co jsme vlastně děje udělat, je, v našem modelu, definovat pomocné funkce, která umožňuje nám zadat počet komentářů že jít s konkrétní pracovní místo. Takže budeme vytvářet pomocná funkce. Veřejné funkce. GetNumCommentsStr. Takže řetězec, který určuje číslo komentářů, které jdou spolu s ním. A to, co budeme dělat, je říkat že num = počet tento komentář. Takže budeme počítat počet komentářů. A pokud toto číslo rovná 1, my jsme právě chystá k návratu 1 komentář. A pak jinak, chceme se vrátit zřetězení num a připomínky, tak jsme si pluralizace správné. Jen, aby to jeden citát. One comment. A teď můžeme použít tuto funkci přímo uvnitř našeho pohledu. Takže když se vrátíme do dílčí příspěvky, které jsme vytvořili, Nyní chceme, aby skutečně zobrazí počet komentářů. Takže to, co můžeme udělat, je pošta, použijte tuto funkci že jsme právě vytvořen zobrazí počet komentářů. Takže pokud nyní aktualizovat, to dělá, ve skutečnosti, displej číselná komentáře že jít spolu s ním. Pokud bychom chtěli být fantazie, pokud vás ve skutečnosti se podívat na distribučním kód, skutečně můžeme propojit to do komentářů. Pokud si vzpomínáte, jsme definovali v rámci názor, že to má část ID připomínky. Takže pokud bychom skutečně chtěli propojit přímo v komentářích, co budeme dělat tady je a href URL trasy viewPost. Předat v poli ID post ID. A pak chceme jít do konkrétně část komentáře. Tady pojďme uzavřít tag. Takže teď když jsme obnovit tento strana, klikneme na toto téma. Půjdeme přímo do část komentáře. Pokud bychom měli delší příspěvek, můžete skutečně vidět tento odrazit dolů. Ale všimněte si, že je to není v horní části stránky. Super. Skvělé. Takže je to docela jednoduché příklad něčeho jednoduchého že můžete dělat s Laravel. Ale můžete si všimnout, že zde Udělali jsme spoustu věcí s poměrně malým množstvím kódu. Laravel nám umožňuje dělat SQL dotazy v zákulisí. To dělá kanalizace Pro nás v zákulisí. Nám umožňuje tyto vztahy velmi snadno, aniž bychom museli dělat žádné SQL připojit prohlášení na kombinovat komentáře s tím, co příspěvky. Umožňuje nám to udělat dědičnost šablon takže můžeme definovat tyto hnízdění souborů, takže nejsme opakování sami, stejně jako když jsme měli, že zobrazení z blogu že nemusíme zkopírovat a vložit kód. A zde si můžete vytvořit stále složitější aplikace. Dovedete si představit, kdybychom chtěl realizovat log-in, Dalo by se říci, přinést třetí osobě rámec, který nám umožňuje dělat to. Je tu parta z nich že jsou opravdu, ale opravdu skvělé, že se mi líbí, obnovení hesla. A to vám pošleme reset hesla e-mail. Můžeme realizovat oprávnění takže můžu vytvořit příspěvek, ale někdo jiný nemůže upravovat. Můžeme realizovat Funkce smazat příspěvky. Ale můžete prohlédnout zde, že máme dost moc všechny primitivní komponenty stavět nějaké opravdu, ale opravdu, dynamické a vzrušující webových aplikací. Takže s tím, myslím, že jsme dobří. Myslíte si kluci nějaké otázky? Ano? SPEAKER 3: Jak se vám dostat se statický obsah? ERIC Ouyang: Statický obsah. Takže jsi neviděl, že když jsme měli Toto právo je zde, tento obsah uspořádání, pohled make jsme měli to bez tohoto pole poté. Blog.index, měli jsme to jen jako statické souboru. Takže když neprojdou něco podél ní, Bude to jen vykreslit HTML přímo. Ale když jsme se projít v tomto asociativní řada pracovních míst, která je dynamicky vytáhl z databáze, my může strana dynamický. Super. Nějaké další otázky? SPEAKER 3: Jak byste porovnal Laravel se možná některé další možnosti? ERIC Ouyang: Jistě. Jo. Tak Laravel je-- to je velký question-- jedna z mnoha možností webových frameworků. Takže Ruby on Rails, je ten, který je populární. Věřím, že Twitter býval implementovány s Ruby on Rails. Myslím, že jsem od té doby zapnutí. Je tu ještě jeden s názvem FuelPHP. Takže Ruby on Rails používá jazyk Ruby a realizuje mnoho MVC věci že zde vidíme. FuelPHP je další rámec PHP. Django je jedna z mých oblíbených. Je to web rámec pro Python. Takže si můžete napsat svůj webovou aplikaci v Pythonu. Takže tam je tuna z těchto možností. Laravel, myslím, že tím, že a velký je můj oblíbený pravdu Nyní pro PHP jen proto, že komponent že jsme si povídali o tom dříve. Je to Composer povolena. Obsahuje opravdu, ale opravdu expresivní ORM systém. Také má opravdu úžasné šablonovacího jazyk, že některé z ostatních prostě neposkytují. A migrace. Migrace jsou úžasné stejně. Pohodě? Děsivý. No, díky moc za sledování tohoto semináře, a hodně štěstí na vašich závěrečných prací.