[Predvaja glasba] ERIC Ouyang: Hej, vsi. Dobrodošli. Gre Building Dynamic Web Apps s Laravel. Moje ime je Eric Ouyang. Sem letniku študirajo družbene študije s sekundarne na področju računalništva, in jaz živim v Adams Hiša tukaj na Harvardu. Torej Laravel, na najbolj jedro, je okvir web app MVC. Torej je všeč, kar imate vi počeli z CS50 finance, Laravel je okvir, ki omogoča ste za izgradnjo dinamičnih spletnih aplikacij. Tako da lahko o njej mislijo v nekaterih pomenih kot nadaljevanje vrste stvari ste delali v CS50 Finance, ampak sistem, ki je Veliko bolj robusten, veliko bolj elegantno v nekaterih pomenih, in zagotavlja veliko funkcionalnost za vas zgraditi precej zapletena spletne aplikacije. Torej, gremo skozi nekaj od ključnih elementov, in potem se bomo potopili Primer gradnje blog aplikacija z Laravel. Torej, ena od prvih stvari, ki jih ga loči od MVC vrsto dela da ste delali z CS50 je vključuje ORM motor. Torej ORM stoji za objekt relacijska preslikava. Torej, to vam omogoča, da gradijo plast odvzem Med baze in vaše krmilniki. Torej, za razliko od CS50 finance, kjer je ste neposredno poizvedujejo, ORM plasti vam omogoča, da abstraktna, da stran in ustvariti Modeli, ki so močnejši od lahko neposredno z SQL poizvedb. Druga stvar, ki je res koristno je Dedne predloge. Tako boste opazili v CS50 finance, boste na koncu reportaža veliko stvari, kjer krajih si lahko potencialno ponovno uporabo stvari, niste mogli. Torej, tukaj v Laravel, lahko uporabite tisto, kar je znan kot predlogo motor rezila da ustvarite postavitev mojster. In od tam, lahko podedujejo tako da sub-Predloge lahko dejansko vključujejo elemente v da večji osnovno predlogo. Migracije. Torej, to je dokaj standardna oprema večina sodobnih okviri spletne aplikacije. Torej, to vam omogoča, da zastopa Podatkovna baza shem spremembe v kodi. Torej, ne reči, phpMyAdmin, lahko dejansko ustvarijo te selitve kjer si predstavljajo baze podatkov Shema spreminja v kodo neposredno. In to vam omogoča, to-- posebej če imate več ljudi, ki delajo na isti spletni application-- sledenje teh sprememb, pravijo v GitHub, ali kakšno drugo odlagališče. Torej, to je res koristno in zmanjšuje potrebo da, recimo, mimo okoli veliko SQL odlagališč. In končno, Skladatelj je nekaj zares uporabno ki vam omogoča, da uporabljate drugo Koda ljudska narediti super stvari. Torej Laravel je strukturirana kot več skladatelj paketov. Tako pravijo, če si hotel, da bi v paketu za preverjanje pristnosti ali če bi želel, da bi v nekaterih nekako skript generatorja ali admin vmesnik, lahko plug and play ti deli s skladateljem. Torej začnimo. Vsa vprašanja od vas Fantje Preden začnemo? Brez vprašanj! Cool. Torej je prvi korak namestitvijo Skladatelj. Torej Skladatelj vam omogoča, da upravljati te odvisnosti, ali je to okvir Laravel ali kakšno drugo podaljšanje tretja oseba. Prvi ukaz omogoča da si naložite Skladatelj, in drugi ukaz vam omogoča, da premakniti v krajevni mapi bin tako da lahko vodijo Skladatelj neposredno preko terminala. Po tem, pojdi naprej in ustvariti nov projekt Laravel. Mi smo dejansko dogaja, da uporabite nekaj primer kode da sem dal skupaj ustvariti ta blog. Ampak, če ste na začetku praske, uporabite ta ukaz tu gor, skladatelj ustvarjanje-projekt, laravel poševnica laravel, in nato Ime vašega projekta. In da bodo vključevali Vse kode za distribucijo za začetek novega projekta Laravel. Tako za vaše CS50 končnih projektov, boste Verjetno želite uporabiti ta ukaz. Ampak bomo začeli s tem. Torej, ko ste storili da boste dobili Dokaj veliko število datotek v blog50. Torej, kaj je samo iti skozi nekatere od teh komponent. Opazili boste, na tej poti imenik, obstaja mapa app. V mapi aplikacije, tam je Nekaj ​​koristnih mape. Opombe, da začnete z je to config mapo. Torej, to določa, kako vaša spletna aplikacija dogaja, da, recimo, overjanje ljudi ali denarni stvari ali povezavo z bazo podatkov. In kaj je res koristno je, da Laravel vam omogoča, da vzpostavi drugačen razvojna okolja. Torej, kaj smo tukaj storiti, je, če je gremo pod lokalno mapo, tam je database.php datoteke. In opazili boste, da smo tukaj, vzpostaviti MySQL povezavo, posameznikom omogoča, da povežete na MySQL strežnik, ki je neposredno na CS50 aparata. In smo povezali z bazo podatkov da nastavim imenuje Blog50. Torej, kaj je dejansko šel naprej in zaženite delovno različico tega, samo da bi dobili občutek, kaj aplikacija, ki smo gradnjo izgleda. Torej imam kopijo To Blog50 končana. Torej Laravel dejansko je zgrajen na strežniku da lahko zaženete neposredno v ukazni vrstici. Torej je to podobno PSet prej, ko ti dejansko graditi svoj strežnik v C. Tako so eno zgrajena tako da lahko vaše Laravel aplikacije neposredno v ukazni vrstici. Torej, če naredimo php Artisan služijo, to bo predstavila razvojni strežnik na vratih 8000. Torej, če gremo na krajevnem gostitelju 8000, boste opazili, da se, hej. Imamo blog in teče. Torej Laravel tu ustvarja prednja stran našega bloga. Zelo enostavna uporaba. Ampak tam je par Res Izvanredan funkcije da zagotavlja pod pokrovom. Torej blog aplikacija je enostavna. Če bomo želeli ustvariti delovno mesto, lahko kliknete na ta gumb. Lahko rečemo, "Hej, vsi. To je res zabavno seminar, "za primer. In napisati nekaj tu spodaj. Text tukaj. Če bomo kliknite Submit, boste opazili, da je naš novi blog objava je bila dodana prednja stran blog. Če gremo nazaj, boste opazili, da tam so bili že nekaj pripomb na blogu. Torej, če smo se pomaknite navzdol, boste opazili, da Jonathan Tan pravi da je bil zelo pritegnila ta post. Torej bomo šli v to, kako objekt relacijska preslikava omogoča da narediš teh odnosov v dokaj brezhibno način, kot dobro. Cool. Vsa vprašanja o funkcionalnosti kaj bomo graditi? Cool. Torej začnimo ven z dejansko ustvarjanje tabel zbirke podatkov. Tako opozarjajo, da v CS50 finance, vas skupaj tabelo za uporabnike kot tudi za Zaloge v vašem portfelju. Torej, kot smo že omenili, kaj jih uporabljamo v Laravel je nekaj, kar je znano kot migracij. Torej, če se vrnemo k distribucija kodo tukaj, prvi ukaz, ki je koristno, da vam Laravel zagotavlja je ta ukaz seliti. Torej ne moremo storiti php obrtnik seliti: da. Torej, to nam omogoča, da ustvarite migracije. In potem bomo želeli ustvariti migracije imenovano create_posts_table, ki bo biti tam, kjer se bomo biti shranjevanje naše blog delovnih mest. In opazili boste, da tukaj teče skozi neko kodo, ki je dejansko ustvari datoteko s časovni žig na njej. Torej, če gremo pogledat Database, bomo opazili pod migracije ki je ustvaril prazno datoteko za nas, ki ima boiler kodo z imenom da je določeno, ustvarjanje sporočil mizo. In ima dve funkciji v njem. Up je tisto, kar smo želeli teči, ko migracije se uporablja za baze. In dol, kaj bomo storili če hočemo, da se obrne na migracije. Torej, tukaj začnimo ven pri pisanju te migracije. Tako da je koristno, razred v Laravel imenuje shema. Torej bomo teči Schema :: ustvariti. In bomo ustvarili tabela se imenuje prispevke. In tu se ta s pomočjo funkcije. In v tukaj, ti bomo dejansko opredeliti vsebino naše mize. Bomo ustvarili ID, ki je auto-povečevanje. Poleg tega bomo ustvariti polje, predstavlja naziv naše blog post. Mi smo se tudi dogaja, da se ustvari polje za shranjevanje besedila naše blog post. In končno, si bomo za shranjevanje nekaj časovne žige za takrat, ko je bila ustanovljena naša objava in ko je bila posodobljena. In dol, to je dokaj preprost. Vse, kar želite storiti, je padec tabela, ki smo jih ustvarili. Super. Vsa vprašanja? Torej, zdaj, če gremo naprej in-- pravzaprav, lokalni gostitelj, Naj izbrisati, kar smo imeli prej. Pojdi na podatkovnih baz. Bom izbrisati, kar smo imeli prej. Spusti to in ustvarjanje nova baza Blog50. Torej, kaj zdaj čarobno del je tukaj, da smo lahko te selitve neposredno uporablja z bazo podatkov s pomočjo ukazno vrstico orodje. Torej, če naredimo php obrtnik se selijo, boste opazili, da se, hej. To je ustvaril tabelo migracije, kar bomo si oglejte v bit, in to je uporabljena ta prvi migracije. Torej gledamo Blog50, boste opazili, ki je ustvaril dve tabeli za nas. Prvi je ta migracije mizo. Torej, če bomo to brskanje, boste opazili, da ta tabela je dokaj enostavna. To je samo rekel, da, hej. Mi smo se uporablja ta prehod. Gremo nazaj in pogled na delovnih mestih. Opazili boste, da je struktura je točno to, kar smo ga vprašal. Imamo avto-povečevanje ID. Imamo niz za shranjevanje naslov in besedilno polje za shranjevanje vsebine. Super. Cool. Vsa vprašanja o migracijah delo, kako smo jih lahko uporablja? Ne? Cool. Torej, zdaj bomo šli naprej in dejansko ustvariti model. Zato želimo ustvariti model sporočil, da shranjuje odvzem baze. Torej, namesto da delaš MySQL poizvedb neposredno, bomo ustvarili. Zato moramo ustvariti Mapa tukaj imenovanih modelov. In v notranjosti tu, si bomo ustvariti datoteko z imenom post.php. Znotraj tega PHP datoteke, bomo ustvarili razred po kateri se razteza zgovoren. Zgovoren je ime ORM motor, ki zagotavlja Laravel. In tukaj, lahko pričakujemo, da boste dejansko morali napisati nekaj kode. Bomo napisali nekaj helper funkcije kasneje. Toda iz škatle, bo to že prepoznati, kaj je v zbirki in mi lahko dostopate, pravijo, besedilo naše blog post ali naziva, in ustvarjajo stvari neposredno z precej nobena koda whatsoever. Torej, to je ena izmed magičnih delov. In veter, ko ta razred je bolj enakopravni, bomo vsebovati podatke o tem, kaj to je povezano s tem, da pripomb. Ustvariti tudi funkcijo tako da bomo lahko dejansko neposredno dobili URL od blog post strani a. Cool. Vsa vprašanja glede tega? No. Cool. Sedaj, ko imamo naš model smo želite ustvariti krmilnik, ki je možnost povezave z vmesnikom s temi modeli, in nato baze podatkov. Torej, če vzamemo poglej BlogController, boste opazili, da tam ni mnogo tukaj. Vse, kar je, je funkcija indeks ki ustvarja domačo stran, vendar brez vsega tam še ni prikazal. Torej prvo funkcijo da bomo ustvarili je tista, ki nam omogoča, ustvariti blog post. Torej bomo razglasi Nova funkcija imenuje newPost. In v notranjosti tu preprosto, si bomo da nastavite postavitev te strani da bi postal različico če se spomnite iz CS50, to predlogo imenovanega blog.new, ki bomo ustvarili v malo. Opazili boste, tukaj na vrstnim šestvaljnikom, ki smo opredelili to spremenljivko, postavitev. In če pogledamo na mapi Pogledi, je postavitve mapa, ki vključuje zelo osnovno datoteko HTML. In note, ki jo boste opazili da smo ta vsebnik tukaj, da daje vsebino. Tako znotraj naše predloge kaj bomo storili je ustvariti, kaj se dogaja, da se nadomesti neposredno v tej postavitvi. Zato smo rekli, da želimo, da postane Predloga imenuje blog.new. Vendar znotraj Blog, tam je še to novo predlogo. Tako bomo ustvarili Datoteka se imenuje new.blade.php. To pove, da Laravel Ta PHP file naj je treba narediti z Rezilo predlogo motor. Torej, to je precej enostavna datoteka. To se dogaja, da je obrazec, s katerim smo dejansko dodali v blog post. Tako čarobno tukaj od dedovanje je, hej. Želimo, da se določi, da oddelek, oddelek vsebina tukaj, ki je označeno ssection instop. Torej, kaj je vmes tu se dogaja, da nadomestiti v postavitev mojster. In tukaj je tisto, kar smo želeli storiti, je zelo preprosto ustvariti novo datoteko HTML. Naj samo dodamo hiter naslov. Dodaj blog post. In v tem, da smo dogaja, da ustvarite obrazec. Ta oblika se dogaja, da imajo tožbo. In to se dogaja, da je nekaj da nadomestimo kasneje, in bomo videli, kako Usmerjanje prilega tukaj. Vendar smo šele tekoč, da za zdaj da to gre na URL s poti od createPost. In potem se to dogaja imeti metodo post. V tu, gremo da imajo dve polji. Razred div = "oblika skupine". Mi smo s pomočjo knjižnice Bootstrap CSS milostno, ki jih Twitter. Tako bomo ustvarili dva takšna. Torej, ta prvi vnos je bo naslov. Torej input name = "title". Class = "formcontrol". Type = "text". Bom dodati ogrado = "naslov". In potem drugi je bo besedilo območje. Name = "vsebine". Class = "formcontrol". In ograda = "Napiši tukaj". Tam gremo. Končno bomo dodaj hitro predloži gumb. Type = "submit" class = "btn btn-primarni". To so vsi značilnosti Bootstrap tako da je to mogoče določiti na način, ki je plen za uporabnika, namesto goli HTML. Tako smo definirali krmilnik tukaj. Mi smo definirana zelo preprost pogled. Ampak kaj manjka, je vezivno tkivo. Tako da na tej točki, Laravel nima pojma, kako bomo dejansko Za dostop do te krmilnik. Torej je to določeno v Datoteka se imenuje routes.php. In zdaj imamo eno pot. Ki je, ko gremo domov pot za to spletno stran, to se dogaja, da postane Indeks krmilnik. Torej, tukaj, kaj moramo storiti, je izvajati nova pot za nas, da ustvarite delovno mesto. Zato smo uporabili to metodo dobili, ki določa da ko uporabnik poskuša dobil to page-- posebej po poševnica novo page-- kaj bomo storili se uporabi krmilnik imenovano BlogController nova objava. Tisti, ki smo ga pravkar ustvarili. In potem gremo da ga alias kot newPost. Bomo ustvarili drugo Funkcija v malo. Ampak kaj je tukaj pod ključ ", kot je" kaj moremo nadomestiti v naši Blade predloge. Torej za zdaj, kaj je dejansko tudi pravi poti. Zato smo tudi dogaja, ustvariti krmilnik tako da bomo lahko ustvarili te objave. Torej, če uporabnik objav na stran pošti poševnica novo, kaj bomo storili se uporablja krmilnik, ki bomo ustvarili kmalu imenovano BlogController na createPost. In bomo alias to s čim createPost. Cool. Vsa vprašanja? Cool. Torej, kaj je teči, kar imamo sedaj. Torej, če naredimo php Artisan služijo, bomo videli veliko napak. Torej izgleda, da imamo skladenjska napaka na progah linijo 27. Ah. Manjka podpičje. Torej, če gremo v 8000, boste videli, nič ni tu. Tako da je to domača stran privzeto. Ampak, če gremo na objavili drastično novega, hej. To bo obrazec, ki smo ga pravkar ustvarili. Zdaj imamo ne implementirali funkcionalnost kdaj bomo pritisnite gumb Pošlji. Torej, če kliknemo na Submit gumb, se dogaja, da teče napako. Vendar bomo kodo, ki zdaj, točno to, kar smo želeli storiti, ko uporabnik navaja ta obrazec. Torej, kaj je naredil. Vrnite se v datoteko krmilnikov. Kaj bomo storili, je izvajati to novo funkcijo ki nam omogoča, da ustvarite delovno mesto. Razglasi novo funkcijo. Javna createPost funkcijo. In to funkcijo se bo malo bolj zapletena kot tisto, smo imeli prej. Vendar pa boste videli, da tukaj nismo bo dejansko napišite SQL. ORM, zgovorna ORM, se dogaja, da se omogoči nam, da to storite v nekaj načinov bolj eleganten način. Tako bomo ustvarili novo delovno mesto. In tukaj smo instantiating nov predmet od modela, ki smo ga pravkar ustvaril model postojanka. In kaj bomo storiti, je nastaviti Atribut naslov tega uporablja nekaj da bomo dobili od strežnika. Torej, to je podobno, kar smo imeli prej v CS50 finance če bi mi, s pomočjo Super Globalno Post išče naslov. Torej Laravel zagotavlja nekaj sanitarij in malenkosti uporabo te funkcije pomožnega. Zato bi raje, da to namesto nje uporabljati te zelo osnovni surovi obliki od PHP. In potem, kaj bomo storiti, je nastaviti vsebina to, da vhod dobili vsebine. Mi smo dejansko dogaja za zavijanje to koristen funkcijo da PHP zagotavlja imenuje nl2br, ki Izkazalo nove linije, NLS pa sestavni uredb, odmorov, tako da bomo lahko dejansko imajo različni odstavki v njem. In končno, kaj bomo storiti je, da shranite to delovno mesto. Tako pravimo funkcija shranite na tem modelu. Bomo rešiti mesto. In končno, kaj bomo storili se preusmeri uporabniku posebej na poti, ki smo jo boš ustvariti kmalu, vzdevek, ki ga viewPost. In bomo, da prenese v argumentov id, pri čemer id tega novega delovnega mesta. Super. Torej, zdaj, če bi dejansko šel in vodijo to. Bomo dodali novo delovno mesto. Recimo, da je to seminar 50. In pravijo, seveda. ASDL. Karkoli. Neke vrste vsebine. In ga predložiti. In bomo opazili, da se, hej. poti ni opredeljen. Če pa si oglejte phpMyAdmin in poglej za to, ali bo naše delovanje storil ničesar. Poglej Blog50 mest. Bomo opazili, da se, hej. V resnici nismo samo ustvariti ta blog objavili pri časovnih žigov, kot je določeno. Torej, zdaj gremo nazaj in dejansko ustvarjajo ta druga funkcija v našem upravljavca, posebej krmilnik viewPost. Torej javno funkcijo viewPost. Torej, tukaj, kaj bomo storili, namesto imajo praznih oklepajev, bomo želeli prenesti v ID objava, da smo ustvarili. In od tu, kaj bomo storili je dejansko zbirko podatkov za to. Torej, če ne bomo objavili, tam je funkcija imenuje Ugotovijo, ki nam omogoča, da se pozanima po ID. Natančneje, v resnici, bomo uporabo alternativnih različico tega imenovano Najti ali okvari, ki nam omogoča, za izhod iz te funkcije, vrže izjemo, če ID peljemo v ne obstaja. In potem bomo nekaj storiti podoben temu, kar smo storili že prej kjer smo določili vsebnost ta stran je izdana različica te nov pogled kar bomo ustvarili, blog.view. In bomo prehaja v it-- rad v CS50 postanejo function-- slovar spremenljivk. Tipke tega asociativno paleto postanejo spremenljivke v predlogo. Zato bomo storili naknadno objavo. Torej mimo posredno delovno mesto, ki smo poizveduje iz baze podatkov. . Zdaj, kaj bomo storiti, je ustvariti ta pogled tako da bomo lahko dejansko ogled blog objav, ki smo jih zgradili. Tako bomo ustvarili Datoteka se imenuje view.blade.php. Tako znotraj te predloge, kaj bomo storili je skupaj preprosta stran, nam omogoča prikaz vsebine. Torej storimo poglavje, ki je pred vsebino. Stop. In kaj bomo storiti v tu napišem nekaj HTML za prikaz te strani. Torej bomo ga ovijte z fancy novi HTML5 element imenovan člen. In tu, si bomo da imajo v glavi, kjer bomo morali preprosto H1, ki vključuje naslov naknadno. Torej, tukaj, če se ozremo na to dvojno kodrasti brace zapis, To bo naredil v bistvu PHP echo Naslov sporočila. Tako da je koristno, okrajšava da Laravel nam ponuja. Torej bomo uporabili Ta zapis namesto tega. In tukaj, da bomo tudi izpisal vsebino tega. In tu, si bomo storiti naknadno vsebino. In dol na dnu, kaj smo tekoč storiti, je ustvariti nogo. In v nogo, si bomo Prvi zaslon, ko je bil ta objavljen. Torej je to objavil na, ustvarjena na. In Laravel uporablja res lepo Datum knjižnica imenuje Carbon. Tako da bomo lahko dejansko narediti nekaj, kar ti difforHumans, kar ste videli prej. Ko bomo objavili. to bom rekel, kot pred petimi sekundami. Torej, to je res lepo Funkcionalnost Laravel. In končno, si bomo zapreti to nogo. Torej, zdaj, če gremo nazaj Home Page gremo da vidim ničesar tu še, ker mi niso kodirani domačo stran. Ampak, če gremo na objavili slash eno, bomo videli izjemo. Ali kdo ve, zakaj vidimo izjemo? Kaj nam manjka? Vse ideje? Torej, kaj smo naredili prej za nas dejansko opredeliti, kako bomo prišli do posebni krmilniki? SPEAKER 1: pot? ERIC Ouyang: Ja. Torej, imamo še vedno opredeliti pot. Torej gremo nazaj na routes.php. Opazili boste, da bomo dejansko ni opredeljen kako bomo dobili s to napravo. Zdaj bomo definirati to pot. To je precej enostavno, podoben temu, kar smo storili že prej. Toda kaj bomo tu opazili, je da bomo imeli ogrado. Torej, če naredimo route.get poševnica poštno ID. Torej ID zdaj je, kaj se dogaja, da se prenese v krmilnik. To se dogaja, da uporabite krmilnik, ki smo ga pravkar ustvarjena, BlogController na viewPost. In bomo alias to kot viewPost. Super. Sedaj bomo ustvarili to pot. Torej, zdaj, če gremo tukaj in osvežite to stran, smo v resnici pa imamo nov blog post. Torej, to je tisto, kar smo ustvarili prej. Zelo preprosta stran, vendar zasloni blog post, ki smo ga pravkar ustvarili. Cool. In če bi dejansko šel skozi celotno Proces ustvarjanja novega blog post, bomo opazili, da je vse ustrezno preusmeri. Če rečem, "Hi. Jaz sem Jonathan Tan. " Rekel: "To je moj blog post." In ga predloži, bo to povzročilo ta nov blog post z ID 2, ki korakih od tistega, kar smo imeli prej in pravilno ga prikaže. Super. Vsa vprašanja? Ja? SPEAKER 2: Ali Laravel ročaj sanitization in vse, kar je za vas? ERIC Ouyang: Da. Torej, ko smo videli že prej, ko smo naredili vhod colon colon dobili, da sanitates kakršenkoli SQL injekcije in malenkosti da bi želimo izvesti, če smo zlonamerni uporabnik spletne strani. Torej Laravel ročaji veliko od tega v ozadju. Dobro vprašanje. Torej, kaj je si oglejte na domači strani. Torej, če smo najprej iti nazaj Krmilnik za spletno stran, boste opazili, da ji ne naredi veliko tukaj. Opazili boste, da smo ne poteka v to napravo kaj še posebej koristna. To je samo ta indeks datoteko. Tako da je prehod v To je nekaj koristno. In še posebej, da smo dogaja, da prenese na delovnih mestih. In Laravel nam omogoča, storiti objavo vsem, ki nam bo omogočilo, da bi dobili vse prispevke. Zdaj, če gremo nazaj index.php, boste videli, hej. Tukaj še nič. Ampak, kaj hočemo storiti tukaj je pravzaprav Ponovil skozi, narediti foreach zanke nad delovnih mest, nam omogoča, da natisnete objave. Torej foreach sporočil kot objava, kaj želimo narediti se izpisal vsebino od blog post. Ampak ena stvar, ki jo boste opazili, je, da smo dejansko napisal večino tega zakonika že v view.blade.php. Torej, kaj bomo dejansko storiti, je uporabite lepo koristno funkcijo Blade in faktor ta skupni kodeks. Torej, gremo tukaj. Bomo, da to vsebino tukaj, in kaj bomo storili je, da ustvarite novo mapo. Dajmo ga samo pokliči Partials. In tu, si bomo ustvariti post.blade.php. Torej, tukaj smo vključeno ven način ki jih želite prikazati te objave. In tukaj je, kaj bomo storili, namesto dejansko imajo direktno to HTML, bomo uporabili to direktivo imenovano vključujejo blog.partials.post. In kaj bomo storili tukaj se prenese v mesto na strani. Torej, zdaj, če gremo nazaj, bomo opazili, da je funkcionalnost vedno enako. Zdaj pa imamo to vključeno ven kodo, to HTML. Tako da ga lahko uporabljamo v indeksu. Torej tukaj, to je zelo enostavno. Vse mi je vključiti blog.partials.post in matrika. In nekje na preden smo storili naknadno objavo. Torej, zdaj, če gremo nazaj domača stran, bomo videli, da je, hej. Imamo seznam vseh blog objav, ki smo jih imeli prej. Mi bi želeli dodati nekaj "če" Pogoji in "ostalo" pogoji tako da če nimamo kaj na blog, želimo prikazati nekaj koristnega. Všeč mi je, hej. Ni vsebine še na blogu. In če vi dejansko poglej distribucija koda na GitHub, boste videli zgled, kako bomo to naredili. Cool. Vsa vprašanja? Da. SPEAKER 2: Mislim, da samo temeljno vprašanje. Nazaj na progi. ERIC Ouyang: Ja. Če pogledamo na poti. SPEAKER 2: Kje uses.blogcontroller na ustvarjanje delovnih mestih, Kaj nam usmerite? ERIC Ouyang: Ja. Ja. SPEAKER 2: Ali kaj je that-- ERIC Ouyang: Torej, poglej, pravijo na primer, to pot tukaj. Prvi del je dejanska URL, ki bo uporabniku iti. In ta niz tukaj asociativni niz, opredeljuje kako želimo imeti aplikacija deluje v odgovor nanj. Tako uporablja, je upravljavec, funkcijo, da smo želite poklicati, ko uporabnik gre na ta URL. Torej viewPost tukaj je funkcija, ki mi je opredeljeno v notranjosti od BlogController-- SPEAKER 2: vidim. ERIC Ouyang: --so, da smo lahko dejansko postanejo pogled, izvesti nekaj izračunov, interakcijo z bazo podatkov SQL. SPEAKER 2: OK. ERIC Ouyang: In potem drugi del, "kot je" alias, ki ga uporabljamo. Torej, če smo opazili, ko smo ustvarili obliko, Opazili boste, da URL :: routecreatePost. Tako da nadomešča v dejanski URL tako, da smo ni težko kodiranja ti v tako bomo lahko spremenili enkrat, pravijo, če bi želeli preimenovati. Namesto, da bi po poševnico Novi, želimo všeč, str poševnica novo samo za čiščenje do naših URL-bitne. Radi bi spremenili na enem mestu, ne od vseh različnih datotek. Cool. To je dobro. Torej, zdaj imamo zelo osnovni blog platformo. Verjetno želimo dodati na gumb, da da bomo lahko dejansko ustvarijo nova delovna mesta. Torej, če pogledamo na Master Layout, imamo oddelek z naslovom Glava Right da smo že opredelili na vrhu. Tako bomo lahko dodali gumbe za na vrh glave. Torej, če gremo na index.blade.php, dejansko storiti, je opredeliti, kaj se dogaja v notranjosti tukaj. Tako da je ta odsek Glava desno, kaj bomo storili se doda na gumb, da gredo URL opredeljena s poti novo delovno mesto. Samo, da ga počisti in se je lepa in vse Bootstrap, bomo, da bi to default. Recimo samo, da bi bilo veliko zabave. In znotraj njega, bi lahko dal nekaj besedila. Toda kaj Bootstrap zagotavlja, je glyphicons. Tako da bomo lahko dejansko dodali, da lepo svinčnik, da smo videli že prej. Glyphicon. Glyphicon svinčnikov. Torej bo to nam omogoča, da dajo v ikoni namesto besedila. Zdaj če ne bomo prenehali, to bo opredelil ta odsek. In, hej. Imamo lepo gumb, ki nas povezuje neposredno dodati blog post stran. Tako da imamo dokaj preprost blog. Mi lahko dodate stvari z njim. Ampak tisto, kar smo na splošno pričakujejo od blogov je komentiral. Torej, to je res pomembno, da imajo povedati, če nekdo obišče spletno stran in res všeč post, lahko sodelujejo v razpravi z drugimi ljudmi, ki obiščejo stran. Tako smo šli in ustvarjanje Nova tabela podatkovne zbirke in nov model tako da bomo lahko povezali Komentarji z delovnih mest. Torej je prvi korak, tako kot prej, je, da moramo teči migracije. Tako kot prej, delamo php obrtnik seliti: da. In bomo ustvarili enega imenovano create_comments_table. To bo ustvarilo datoteko da ima naš novi migracije. In da bomo, tako kot Pred določite novo tabelo. Torej Schema :: ustvariti Tabela imenuje pripomb. Ta funkcija tukaj. In znotraj te tabele, kaj bomo storiti najprej, kot prej, dodeliti ID. Korakih ID. Bomo omogočajo uporabnikom, da povežete njihovo ime s posebnim komentarjem. Da bomo imeli nekaj vsebine, da gre skupaj s tem, vsebino besedila. In tukaj je tisto, kar bomo storiti, je nekaj drugega. Bomo ustvarili celo ki se imenuje post_id ki se dogaja, da se označi kakšno delovno mesto Zlasti komentar gre z. Poleg tega, da smo dejansko dogaja, da nastaviti tujega ključa pritisk na to. Tako da bo MySQL uveljaviti to. Mi ne poskuša dodelite številko komentar 5. Da bi objavili 5000, če imamo ne je imela 5.000 objav na njej. Torej, kaj delamo tukaj, delamo tuje post_id se bo povezan z Polje ID od namiznih delovnih mest. In bomo dejansko nekaj storiti sicer koristna, je onDelete. Torej, če bomo izbrisati nekaj objavili iz baze podatkov, da želimo, da se širijo izbriše za komentarje, kot dobro. Ker to ni zelo koristno za nas, da imajo pripombe na delovna mesta, da ne obstajajo. In na koncu, tako kot pred tem, da smo dogaja, da določi časovne žige na to. In tako kot prej, si bomo imajo povratne migracije spustite tabelo komentarji. Torej, zdaj, če gremo nazaj tu, gremo teči ta prehod, obrtnik seliti. In sedaj se je uporabljala to migracije, ki smo ga pravkar ustvarili. Torej, če bomo pogled na phpMyAdmin, delamo, v resnici, zdaj imajo tabelo komentarji, ki ima struktura, ki smo ga pravkar določeno. Tako kot prej, smo dogaja, da ustvarite nov model abstraktnemu SQL tabele da smo pravkar ustvarili. Torej, kaj je Dodajte novo datoteko. Bomo ga pokličete comment.php. In to se dejansko dogaja, da je precej enostavna z majhno spremembo od kar smo imeli prej. Torej razred Komentar razširja zgovoren. In kaj bomo storiti, tukaj je opredeliti funkcija, ki je odnos z drugimi modeli. Torej bomo imeli funkcijo pošto tukaj, da vrne ta odnos. Tako da smo navedbo, da to spada v objavo, pravijo, da je eno delovno mesto da je ta komentar pripada. To dejansko mora biti kapital P za model. In zdaj samo na drugi flip stran, moramo reči, da je, hej. Prispevkov imeli pripomb. Torej, kaj bomo storili, je opredeliti komentarje javnih funkcij. In tu se je vrnil To ima veliko komentar. Torej, zdaj čudežno ko imamo delovno mesto, bomo lahko dobili pripombe atributov in to bom zapolnijo z informacije iz baze podatkov. Torej, kaj je dejansko šel skozi in dodati novo funkcijo, ki po našem mnenju datoteko tako da bomo lahko tako zaslon in ustvariti komentarje. Torej bomo določili novo poglavje. Dajmo samo ločevanje z vodoravno pravilo. Oddelek id = "komentarji". Kaj bomo storili Tu je, kot prej, Ponovil skozi vse komentarje. Torej, dejansko, kako to storiti, je, kot sem že omenil, precej čarobno. Mi lahko komentiras. In potem bomo lahko to za vsak narediti zanka nad vsako pripomb. In kaj bomo storiti, je div class komentar, in da bomo dejansko natisnite ta komentar. Tako prikazati, da hej, pripombe name-- osebo ki je objavil to comment-- pravi dot dot dot. Bomo dal to v bloku citiram, samo, da bi bilo videti lepo. In potem komentirati vsebine blok ponudbo. In foreach. Torej, zdaj se to dogaja, da zanke skozi vse komentarje da je povezan z vsako od mest in prikaz vsaka od teh pripomb. Bom dodati še eno točko navzdol tu, ki nam omogoča, da dodate komentar. Torej h3 razred. Daj naslov tukaj. Dodaj komentar. In bomo določili novo obliko. Tako kot prej, smo storila dejanje obliko. In tu je nova tožba smo dogaja, da se opredeli nov krmilnik, ki nam omogoča, da se odzove na objavo prošnje za pisanje komentarjev. Torej createComment URL :: poti. Grem, da prenese v parametru tukaj. ID za delovno mesto, ki smo ustvariti pripombo. In potem Uporaba tega Obrazec se bo objava. Sedaj bomo dodali v dve področji, tvorita skupino. To bo vhod s ime "ime" in class = "Obliko nadzor", type = "besedilo", in s Ograda = "Vaše ime". Mi smo se tudi dogaja, da se opredelijo druga oblika polje, ki se bo besedilo Območje, kot smo imeli prej. Tako kot prej, ga pokličete vsebine. Class = "oblika-control". Ograda = "Napiši tukaj." In samo zato, da bomo lahko dejansko jo predloži, predložiti vrsto in razred = "btn btn-primarni." Zaprite obrazec. Zaprite to tožbo. Torej, zdaj, če bomo osvežite to stran, kjer imamo, recimo, posebno delovno mesto. Moramo ponovno zagnati strežnika. PHP obrtnik služijo. Reboot to. Moramo določiti pot. Ampak za zdaj, kaj je prav, da se to ven, tako da bomo lahko dejansko vam pokažem kaj stran izgleda, in nato bomo dejansko ustvarili to pot. Torej, hej. Imamo to novo obliko tukaj tako da bomo lahko ustvarili komentarje. Torej, kaj je dejansko opredeliti Funkcija v krmilniku tako da bomo lahko dodate komentarje. Pojdimo nazaj. In v blogcontroller.php, kaj bomo storili je ustvariti novo funkcijo imenovano ustvarjanje komentar. Javna createComment funkcijo. To se dogaja, da imajo en sam parameter, ID delovnih mest da smo komentiral. In tako kot pred tem, da smo bo najprej dobiti delovno mesto. Tako objavili, findOrfail id. Zatem gremo ustvariti nov komentar. Torej pripombe = nov komentar. Komentar name = vhodna :: dobil ime. Vsebnost komentar = isto nova linija v odmorih vhodnih :: dobiti vsebino. In končno, si bomo morali povezujejo ta komentar z delovnega mesta. Torej bomo uporabili ta funkcija, komentarji, ki nam omogoča, da shranite ta odnos. Torej, zdaj ta komentar bo imel samodejno po ID. Mi lahko nastavite tudi ročno, vendar je to bolj enostavno kot sedaj glasi kot funkcija gre. In potem, ko smo opraviti to, kar želimo narediti se preusmeri uporabnika na poti, ki jo viewPost s paleto s parameter po ID. In zdaj, tako da to dejansko funkcije, moramo opredeliti to pot. Pot :: objava. In zdaj bomo to imenujemo po slash slash ID komentar. Matrika uporablja novo funkcijo da smo pravkar ustvarili. BlogController. CreateComment kot createComment. Super. Zdaj upam, da če bomo osvežite to stran in dodamo v komentarju, recimo, David Malan. "Upam, da to deluje." Predloži. Mi, v resnici, ima komentar na ta blog post. Cool. Torej, zdaj imamo dokaj funkcionalna blog post. Mi smo le, da bo dodamo nekaj poteg tako da imamo nekaj več uporaben Informacije na teh delovnih mestih. Torej, če se vrnemo k sprednja stran, smo nimajo občutka koliko komentarji na vsakem od teh mest. Torej, kaj smo dejansko dogaja storiti, je, znotraj našega modela, definiramo funkcijo pomožnega ki omogoča nam, da določite število komentarjev da gredo z določeno delovno mesto. Tako bomo ustvarili Funkcija pomočnik. Javno funkcijo. GetNumCommentsStr. Torej niz, ki določa število pripomb, ki gredo skupaj z njim. In kaj bomo storili, je rekel, da num = računajo to pripomb. Tako bomo za štetje Število pripomb. In če je ta številka enaka 1, smo Pravkar se dogaja, da se vrnete 1 komentar. In potem drugače, želimo, da se vrnete Združitev num in pripombe, tako da smo dobili pluralizacijo pravilna. Samo, da je to en sam citat. En komentar. In zdaj lahko uporabite to funkcijo direktno znotraj našega pogleda. Torej, če se vrnemo k delnih sporočil, ki smo jih ustvarili, Zdaj želimo dejansko prikazati število komentarjev. Torej, kaj lahko storimo, je, objava, uporabite to funkcijo da smo pravkar ustvarili za prikazati število komentarjev. Torej, če smo zdaj osvežiti, jo ne, v resnici, izpis oštevilčenimi komentarji da gredo skupaj z njim. Če bi želeli biti fancy, če vas dejansko videti na kodo distribucije, lahko dejansko povezati to pripomb. Če se spomnite, smo določili v meni, da je to poglavje ID pripomb. Torej, če bi dejansko želeli povezati neposredno na oddelku komentarji, kaj mi bi naredil tukaj je href URL viewPost poti. Potujejo v array ID po ID. In potem smo želeli iti posebej odsek komentarjev. Tu pa zaprite oznako. Torej, zdaj, če bomo osvežite to stran, kliknemo na to. Šli bomo neposredno oddelek komentarjev. Če bomo imeli daljšo delovno mesto, lahko dejansko videli to bounce navzdol. Vendar boste opazili, da je Ne na vrhu strani. Cool. Super. Tako da je precej enostavno Primer nekaj preprostega ki jih lahko storite s Laravel. Vendar pa lahko opazimo, da je tukaj smo naredili veliko stvari z dokaj majhno količino kode. Laravel nam omogoča, da naredite SQL poizvedbe v ozadju. To počne sanitarij za nas v zakulisju. Omogoča nam, da naredite teh razmerij Zelo enostavno, brez nas potrebujejo storiti vse SQL pridružiti izkaze združiti pripombe kaj delovnih mest. Omogoča nam, da to storijo dedovanje predloge tako da bomo lahko določite te gnezdenje datoteke, tako da nismo sami ponavljajo, tako kot, ko smo imeli, da razkazovanje blog delovnih mest da mi ne bi bilo treba kopirajte in prilepite kodo. In od tu lahko gradijo bolj zapletene aplikacije. Si lahko predstavljate, če smo želel izvajati log-in, lahko bi rekli, bi v tretji osebi okvir, ki nam omogoča, da to storim. Obstaja kup njih da so zares super, da lahko narediš, kot so, geslo izterjave. In bo to vam je poslati ponastavitev gesla e-pošte. Mi lahko izvajajo dovoljenje tako da sem lahko ustvari delovno mesto, ampak nekdo drug ne more urejati. Mi lahko izvajajo Funkcionalnost izbrisati objave. Vendar pa si lahko ogledate tukaj, da imamo precej veliko vse nepopolne sestavine zgraditi nekaj res, res, dinamične in zanimive spletne aplikacije. Torej, s tem, mislim, da smo dobri. Ali vi imate vprašanja? Ja? SPEAKER 3: Kako si narediti dobili statično vsebino? ERIC Ouyang: Statične vsebine. Torej si videl pred tem, ko smo imeli Ta pravica je tu, ta vsebina postavitev, Pogled make, smo imeli to brez tega paleto kasneje. Blog.index, smo imeli to kot samo statično datoteko. Torej, če ne bomo mimo vse skupaj z njim, da bom postal HTML neposredno. Ampak, če se peljemo v tem društvenim Niz delovnih mest, ki je dinamično potegnil iz baze podatkov, smo lahko stran dinamično. Cool. Katera koli druga vprašanja? SPEAKER 3: Kako bi primerjali Laravel da morda nekatere druge možnosti? ERIC Ouyang: Seveda. Ja. Torej Laravel is-- da je super question-- ena od številnih možnosti za spletne okvire. Torej Ruby na tirih, je tista, ki je priljubljen. Verjamem Twitter nekoč izvaja z Ruby na tirih. Mislim, da so od leta zamenjan. Obstaja še ena imenovana FuelPHP. Torej Ruby na tirih uporablja Ruby jezik in izvaja veliko o MVC stvari da vidimo tukaj. FuelPHP je druga PHP okvir. Django je ena izmed mojih najljubših. To je spletna okvir za Python. Tako da boste lahko napisali svojo spletno aplikacijo v Python. Tako da je ton od teh možnosti. Laravel, mislim, da jih in Veliko je moja najljubša pravica Zdaj za PHP samo zato, ker komponent da smo se pogovarjali o prej. To je Skladatelj omogočen. Vsebuje zelo, zelo ekspresivna sistem ORM. Ima tudi res super templating jezik, da nekateri od drugih Samo ne zagotavljajo. In migracije. Migracije so super, kot dobro. Cool? Super. No, hvala toliko za gledal ta seminar, in srečno na vaših končnih projektov.