[MUZIKO Ludante] ERIC Ouyang: Hej, ĉiuj. Bonvenon. Jen Konstruaĵo Dinamika Retejo Apps kun Laravel. Mia nomo estas Eric Ouyang. Mi estas sophomore studanta socian studoj kun malĉefa en komputiko, kaj mi loĝas en Adams Domo tie en Harvard. Do Laravel, ĉe ĝia plej kerna, Estas MVC ttt app kadro. Do ŝatas kion vi uloj havas estis farante kun CS50 Financoj, Laravel estas kadro kiu permesas vi konstrui dinamikajn retejo apps. Do vi povas pensi pri ĝi en iuj sensoj kiel etendo de la tipo de ŝtofo vi estis faranta en CS50 Financoj, sed sistemo kiu estas multe pli fortikaj, multon pli elegantaj en iuj sensoj, kaj havigas multan funcionalidad por vi konstrui sufiĉe kompleksa aplikoj retejo. Do ni iru tra iu el la ŝlosilaj karakterizaĵoj, kaj tiam ni plonĝi enen ekzemple konstrui blogo apliko kun Laravel. Do unu el la unuaj aĵoj kiujn diferencigas ĝin de MVC tipo de laboro ke vi estis faranta kun CS50 Estas ĝi inkludas ORM motoro. Do ORM staras por objekto rilata surĵeto. Do tiu permesas konstrui tavolon de abstraktado inter la datumbazo kaj via controladores. Do kontraste en CS50 Financoj kie vi rekte fari konsultojn, la ORM mantelo permesas abstrakta ke for kaj krei modelojn, kiuj estas pli potencaj ol vi povas rekte kun SQL pridemandojn. Alia aĵo kiu vere helpema estas inheritable ŝablonoj. Do vi rimarkos en CS50 Financoj, vi finas reescribir multon, kie lokigas vi povus potenciale reutilizar aĵoj, vi ne povas. Do jen en Laravel, vi povas uzi kio estas konata kiel la folio ŝablono motoro krei mastron aranĝo. Kaj de tie, vi povas heredi tiel ke la sub-ŝablonoj povas reale inkluzivas elementojn ene ke granda bazo ŝablono. Migrado. Do ĉi tiu estas sufiĉe normo karakterizaĵoj sur plej moderna apliko retejo kadrojn. Do tiu permesas reprezenti datumbaza skemo ŝanĝoj en kodo. Do sen intencis diri, phpMyAdmin, vi povas fakte krei tiujn migradojn kie reprezentas la datumbazo skemo ŝanĝas en kodo rekte. Kaj tiu permesas to-- speciale se vi havas plurajn homoj laboras en la sama retejo application-- spuri tiujn ŝanĝojn, diri en GitHub, aŭ alian deponejon. Do tio vere helpema kaj mildigas la bezonon al, ni diru, pasas ĉirkaŭ multan SQL renversas. Kaj fine, Komponisto estas iu vere, vere utila kiu permesas uzi aliajn popola kodo fari awesome aferojn. Do Laravel la strukturitaj kiel pluraj komponisto pakoj. Do diru, se vi volis alporti en aŭtentikigado pako aŭ se vi volis alporti en iuj ia generatoro skripto aŭ administranto interfaco, vi povas ŝtopi kaj ludi tiuj komponantoj kun komponisto. Do ni komencu. Demandojn de vi infanoj antaŭ ni komencu? Neniu demandojn? Cool. Do la unua paŝo estas instalanta Komponisto. Do Komponisto vi permesas administri tiujn dependecojn, ĉu ĝi estas la Laravel kadro aŭ alian tria etendo. La unua komando permesas elŝuti Komponisto, kaj la dua komando permesas movi ĝin en via loka bin dosierujon por ke vi povu kuri Komponisto rekte tra la terminalo. Post tio, bonvolu krei novajn Laravel projekto. Ni efektive tuj uzi iun ekzemplon kodo ke mi kunmetis krei ĉi blogo. Sed se vi ekde nulo, vi devus uzi ĉi komando ĝis tie, komponisto krei-projekto, laravel slash laravel, kaj tiam la nomo de via projekto. Kaj kiu inkludos ĉiuj dissendo kodo por komenci novan Laravel projekto. Do por via CS50 fina projektoj, vi probable volas uzi tiun komandon. Sed ni tuj komencu per tiu. Do iam vi faris ke, vi estas iranta akiri sufiĉe vasta nombro de dosieroj en blog50. Do ni nur iri tra iuj de ĉi tiuj komponantoj. Vi rimarkos ĉe tiu itinero dosierujo, tie estas app dosierujo. Interne la app dosierujo, ekzistas paro helpema dosierujoj. De noto komenci kun Estas ĉi config dosierujo. Do tiu establas kiom via apliko retejo estas tuj, diru, autenticar homoj aŭ kontanta aĵoj aŭ konektiĝi al la datumbazo. Kaj kio estas vere helpema estas ke Laravel ebligas al vi agordi malsamajn disvolviĝo medioj. Do kion ni faris ĉi tie estas se ni iru sub la lokan dosierujon, tie estas database.php dosiero. Kaj vi rimarkos tie ke ni starigi MySQL ligo kiu permesas individuoj konekti al la MySQL servilo tio rekte sur la CS50 aparaton. Kaj ni konektante al datumbazo ke mi starigis nomita Blog50. Do ni vere iru antaŭen kaj kuri la laborista versio de tiu, nur por akiri senton de kio la apliko kiu ni konstruado aspektas. Do mi havas ekzempleron de ĉi Blog50 kompletigita. Do Laravel reale konstruigis en servilo ke vi povas kuri rekte el la komandlinio. Do ĉi tiu estas simila al la PSet antaŭ kiam vi vere konstrui vian propran servilon en C. Do ili oni konstruis en tiel ke vi povas kuri vian Laravel apps rekte de la komandlinio. Do se ni faros php metiista servi, tiu ĵetos disvolviĝo servilo sur haveno 8000. Do se ni iros al loka gastiganto 8.000, vi rimarkos ke, hey. Ni havas nian blogon supren kaj kurante. Do Laravel tie iras generante la frontpaĝo de nia blogo. Tre simpla apliko. Sed estas paro vere nifty karakterizaĵoj kiu havigas sub la kapuĉo. Do la blogo aplikaĵo simpla. Se ni volis krei post, ni povas klaki sur tiu butono. Ni povas diri, "Hey, ĉiuj. Tiu estas vere amuza seminario, "ekzemple. Kaj skribu ion malsupren tie. Teksto ĉi tie. Se ni alklaku Submit, vi rimarki ke nia nova blogo poŝto aldoniĝis al la frontpaĝo de la blogo. Se ni superas ĉi tie, vi rimarkos, ke estis iuj komentoj jam en la blog. Do se ni rulumu malsupren, vi rimarkos ke Jonatan Tan diras ke li estis tre interesita pri tiu post. Do ni iru en kiom objekto rilata surĵeto permesas vi fari ĉi tiujn rilatojn en sufiĉe senjunta maniero ankaŭ. Cool. Demandojn pri funcionalidad de kion ni iras konstrui? Cool. Do ni komencu evi reale kreante la datumbazo tabloj. Do memoru, ke en CS50 Financoj, vi kunmeti tablon por la uzantoj tiel kiel por la akcioj en via biletujo. Do kiel ni menciis antaŭe, kion ni uzas en Laravel Estas io konata kiel migradoj. Do se ni reiros al la dissendo kodo tie, la unua comando kiu estas helpema ke Laravel provizas vin Estas ĉi enmigri komando. Do ni povas fari php metiista enmigri: fari. Do ĉi tio nin permesas krei migrado. Kaj poste ni volas krei migrado nomata create_posts_table, kiu iras esti kie ni tuj esti stokante niaj posts. Kaj vi rimarkos tie rulas tra iu kodo kiu vere generas arkivon kun tempo poŝtmarkon sur ĝi. Do se ni iros rigardi Database, ni rimarkos sub Migradoj ke ĝi estas kreinta malplenan dosieron por ni kiuj havas kutimaĵo kodo kun la nomo ke ni specifita, krei afiŝojn tablo. Kaj ĝi havas du funkciojn en ĝi. Supren estas kion ni volas kuri kiam la migrado estas aplikita al la datumaro. Kaj malsupren estas kion ni tuj faros kiam ni volas inversigi migradon. Do jen ni komencu eliri kun skribado tiun migradon. Do tie estas helpema klaso en Laravel nomita skemo. Do ni tuj kuri skemo :: krei. Kaj ni iras al krei tablo nomita afiŝojn. Kaj tie ni aplikas ĉi uzante funkcio. Kaj ene tie, ni iras al reale specifi la enhavon de nia tablo. Ni intencas krei IRU, kio estas auto-pliigante. Krome, ni iras krei kampon kiu reprezentas la titolo de nia blog. Ni ankaŭ iras por krei kampo por stoki la teksto de nia blog. Kaj fine, ni iras stoki iujn timestamps cxar kiam nia poŝto estis kreita kaj kiam estis ĝisdatigita. Kaj por sube, estas sufiĉe simpla. Ĉiuj ni volas fari estas guto la tablon, ke ni kreis. Granda. Ajna demandoj? Do nun, se ni sekvas antaŭeniras kaj- fakte, lokaj gastiganto, lasu min forigi kion ni havis antaŭe. Iru al datumbazoj. Mi iras al viŝi kion ni havis antaŭe. Drop tiu kaj krei nova datumbazo Blog50. Do nun kion la magia parto estas tie ke ni povas apliki tiujn migradojn rekte al la datumbazo uzante la komandlinio ilo. Do se ni faros php metiista migras, vi rimarkos ke, hey. Ĝi estas kreita la migrado tablo kiun ni prenos rigardi en iom, kaj ĝi estas aplikita tiu unua migrado. Do ni rigardu Blog50, vi rimarkos ke ĝi estas kreita du tabloj por ni. Unue estas tiu migradojn tablo. Do se ni foliumi tiu, vi rimarkos ke ĉi tablo estas sufiĉe simpla. Ĝi simple diras ke, hey. Ni aplikis tiun migradon. Ni reiru kaj rigardu afiŝojn. Vi rimarkos ke la strukturo Estas ĝuste kion ni demandis ŝin. Ni havas aŭtomatan pliigante ID. Ni havas ĉenon por stokante la titolo, kaj teksto kampo por stoki la enhavo. Granda. Cool. Demandojn pri migradoj laboro, kiel ni povas utiligi ilin? Neniu? Cool. Do nun ni tuj iros antaŭen kaj fakte krei la modelon. Do ni volas krei afiŝojn modelo kiu stokas abstraktaĵo de la datumbazo. Do anstataŭ faranta MySQL pridemandojn rekte, ni iras al krei. Do ni devas krei dosierujo en tie nomitaj modeloj. Kaj ene tie, ni iras al krei dosieron nomita post.php. Ene tiu PHP-dosiero, ni iras al krei klaso post kiu etendas elokventa. Elokventa estas la nomo de la ORM motoro kiu Laravel havigas. Kaj en tie, ni povus atendi ke vi vere bezonas skribi iom da kodo. Ni intencas skribi kelkajn helpanto funkcioj poste. Sed ekstere de la skatolo, tio jam rekoni kio estas en la datumbazo kaj ni povas konsenti, te la teksto de nia blog aŭ la titolo, kaj krei stuff rekte kun preskaux neniu kodo ajn. Do jen unu el la magiaj komponantoj. Kaj vento fojo tiu klaso estas pli plene disvolviĝinta, ni devos inkluzivi informojn pri kio ĝi estas rilataj al, do la komentoj. Ankaŭ krei funkcio do ni povas reale rekte ricevi la adreson de la blog paĝo. Cool. Demandojn pri tio? No. Cool. Do nun unufoje ni havas nia modelo, ni deziras krei controlador tio povis interfaco kun tiuj modeloj, kaj poste la datumbazo. Do se ni rigardu BlogController, vi rimarkos ke estas ne multe tie ĝuste nun. Ĉio estas estas indico funkcio kiu generas la ĉefpaĝon, sed sen nenio tie por montri ankoraŭ. Do la unua funkcio ke ni iras al krei estas unu kiu permesas al ni krei bloga poŝto. Do ni iras por deklari nova funkcio nomita newPost. Kaj ene tie simple, ni iras agordi la aranĝon de la paĝo esti redonu versio, se vi memoras el CS50, de tiu ŝablono nomita blog.new, kiu ni iras al krei en iomete. Vi rimarkos ĉi tie sur linio ses kiu ni specifita tiu variablo, aranĝo. Kaj se ni tuj iri ĉe la Vidoj dosierujon, estas layouts dosierujo, kiuj inkluzivas tre bazan HTML dosiero. Kaj de noto, vi rimarkos ke ni havas ĉi ujo tie ke rendimenta enhavo. Do ene de nia ŝablono kion ni faros estas krei kio tuj estos anstataŭigita rekte ene ĉi aranĝo. Do ni diris ke ni volas repagi ŝablono nomita blog.new. Sed ene de Blogo, estas ankoraŭ ne ĉi tiu nova ŝablono. Do ni iras por krei dosiero nomata new.blade.php. Ĉi tiu diras Laravel ke ĉi PHP dosiero devus reproduktebla kun la klingo ŝablono motoro. Do ĉi tiu estas sufiĉe simpla dosiero. Ĝi tuj estos la formo por kiu ni efektive aldonu en la blog. Do la magio tien el la heredaĵo estas kiu, hej. Ni volas specifi ke la sekcio, la enhavo sekcio tie, kio estas delineado persection kajstop. Do kio estas en inter tien tuj esti anstataŭigita en la mastra aranĝo. Kaj tie kion ni volas fari estas tre simple krei novan HTML dosiero. Ni nur aldonu rapidan titolon. Aldoni bloga poŝto. Kaj en ĝi, ni estas tuj kreos formo. Tiu formo tuj havos agon. Kaj tiu tuj estos io ke ni anstataŭigi en postaj, kaj ni vidos kiel enrutamiento persvadas en ĉi tie. Sed ni ĵus tuj difinos por nun ke tio iras al URL kun la itinero el createPost. Kaj tiam tiu tuj havi metodo post. Ene tie, ni iras havi du kampoj. Div class = "formo-grupo". Ni uzas la Bootstrap CSS biblioteko afable havigita de Twitter. Do ni iras por krei du el tiuj. Do tiu unua eniro estas tuj estos la titolo. Do input nomo = "titolo". Class = "formcontrol". Tipo = "teksto". Mi tuj aldonos lokokupilon = "Titolo". Kaj tiam la dua unu estas tuj estos tekstkampon. Nomo = "enhavo". Class = "formcontrol". Kaj lokokupilon = "Skribu ĉi tie". Tie ni marŝos. Fine, ni tuj aldonu rapidan submetiĝi butonon. Tipo = "submit" class = "BTN BTN-primaria". Do tiuj estas ĉiuj karakterizaĵoj de Bootstrap tiel ke tiu povas esti metata en maniero kiu estas prirabataj de la uzanto, anstataŭ nuda HTML. Do ni difinis la controlador tie. Ni difinis tre simpla vido. Sed kio mankas estas la ligilo histo. Do je ĉi tiu punkto, Laravel havas neniun ideon kiel ni iras al reale aliri ĉi adaptilo. Do tiu estas difinita en dosiero nomata routes.php. Kaj nun, ni havas unu vojo. Kiu estas kiam ni iras al la hejmo vojo por ĉi tiu retejo, ĝi tuj redonu la indico controlador. Do jen kion ni bezonas fari estas apliki nova vojo por ni krei post. Do ni uzos ĉi tiun metodon akiri, kiu precizigas ke kiam uzanto provas ricevas tiun page-- specife la fosto slash nova page-- kion ni faros estas uzi la controlador nomita BlogController nova posteno. Kiu ni ĵus kreita. Kaj tiam ni iras al alias ĝin kiel newPost. Ni intencas krei alian funkcio en iomete. Sed kio estas tie sub la klavo "kiel" estas kio ni povas anstataŭigi ene nia Blade ŝablonoj. Do nun, ni fakte ankaŭ diri itinero. Do ni ankaŭ iri krei controlador tiel ke ni povas krei tiujn afiŝojn. Do se uzanto afiŝojn al la paĝo post slash novan, kion ni faros Estas uzas adaptilo ke ni iras al krei malmulta nomata BlogController ĉe createPost. Kaj ni iras al alias tiu kun kiel createPost. Cool. Ajna demandoj? Cool. Do ni kuras kion ni havas ĝis nun. Do se ni faros php metiista servas, ni vidos multajn erarojn. Do ĝi aspektas kiel ni havas Sintakseraro sur itineroj linio 27. Ah. Mankantaj punktokomo. Do se ni iros al 8.000, vi vidos nenion ĉi tie ankoraŭ. Do tiu estas la defaŭlta hejmpaĝo. Sed se ni iros sendi slash nova, hej. Ĝi estos la formo kiun ni ĵus kreita. Nun, ni havas ne implementado la funcionalidad de kiam ni premas la Submetu butonon. Do se ni Alklaku la submeto butono, ĝi tuj kuri eraro. Sed ni tuj kodo ke ĝuste nun, ĝuste kio ni volas fari kiam uzanto submetas ĉi formularo. Do ni faru tion. Reiru al la Controladores dosiero. Kion ni tuj faros estas implementar ĉi tiu nova funkcio kiu permesas krei al ni fosto. Klarigu nova funkcio. Publika Funkcio createPost. Kaj ĉi tiu funkcio estas tuj estos Iomete pli kompleksa ol kion ni havis antaŭe. Sed vi vidos ĉi tie ke ni ne estas tuj efektive skribi ajnan SQL. La ORM, la elokventa ORM, tuj permesos ni tion fari en iuj manieroj pli eleganta maniero. Do ni iras por krei novan postenon. Kaj tie ni estas instantiating nova objekto de la modelo kiun ni ĵus kreita, la post modelo. Kaj kion ni faros estas metita la titolo atributo de ĉi uzante ion ke ni preni de la servilo. Do ĉi tiu estas simila al kio ni havis antaŭe en CS50 Financoj kie ni devus fari, uzante la Super Tutmonda Afiŝo serĉas titolo. Do Laravel havigas iujn salubrigo kaj whatnot uzante tiu helpanto funkcio. Do ni preferos uzi tiun anstataŭe de tiu tre baza krudan formon de PHP. Kaj tiam kion ni volas fari estas metita la enhavo de ĝi al Input akiri enhavon. Ni efektive tuj envolver tio en helpema funkcio ke PHP provizas nomita nl2br, kiu rezultas novaj linioj, NLS, en BRS, paŭzoj, tiel ke ni povas reale havas malsamaj paragrafoj ene ĝi. Kaj fine kio ni iras fari estas savi ĉi tiu post. Do ni nomas la funkcio ŝpari en tiu modelo. Ni tuj savu la post. Kaj fine, kion ni faros estas alidirekto la uzanto specife al la itinero kiun ni tuj Krei baldaux, alias per viewPost. Kaj ni tuj pasos en la argumentojn identigilo, estante la identigilo de tiu nova posteno. Granda. Do nun, se ni efektive iri kaj kuri ĉi. Ni intencas aldoni novan postenon. Diru ĉi estas seminario 50. Kaj diri, sekura. Asdl. Kion ajn. Iuspeca enhavo. Kaj enigu ĝin. Kaj ni rimarkos ke, hey. itineroj ne difinita. Sed se ni rigardu phpMyAdmin kaj serĉi ĉu ĉu ne nia funkcio faris nenion. Rigardu Blog50 afiŝojn. Ni rimarkos ke, hey. Fakte, ni ne nur kreas ke blogo sendi per la timestamps kiel specifis. Do nun ni reiros kaj reale krei tiun alian funkcion en niaj controlador, specife la viewPost controlador. Do publika funkcio viewPost. Do jen kion ni faros, anstataŭ havi malplena krampoj, ni volas pasi en la ID de la fosto kiu ni kreis. Kaj de tie, kion ni faros Efektive konsulti la datumbazon por ĝi. Do se ni sendi, tie estas funkcio nomita Trovu kiu nin permesas konsulti ĝin per ID. Specife, efektive, ni tuj uzu alternativan version de tiu nomita Trovu aŭ Fail, kiu permesas nin rezigni el tiu funkcio, ĵeti escepton se la ID ni pasas en ne ekzistanta. Kaj tiam ni tuj fari ion simila al kion ni faris antaŭe kie ni starigis la enhavo de tiu paĝo esti la sendadis versio de ĉi tiu nova vido kiun ni iras al krei, blog.view. Kaj ni tuj pasos en it-- ĵus ŝatas en la CS50 redonu function-- vortaro de variabloj. La klavoj de ĉi asociaj tabelo fariĝi variabloj ene de la ŝablono. Do ni tuj faros postenon post. Do pasas nerekte la fosto kiu ni informpeti el la datumaro. . Nun kion ni volas iri al fari estas krei tiu vido tiel ke ni povas fakte vidi la blogs kiu ni konstruis. Do ni iras por krei dosiero nomata view.blade.php. Do ene de la ŝablono, kion ni faros estas kunmetita simplan paĝo ke nin permesas visualizar la enhavo. Do ni faru sekcio, tio estas antaŭ enhavo. Ĉesu. Kaj kion ni iras fari ene tie estas skribi kelkajn HTML por montri ĉi paĝo. Do ni tuj envolver ĝin per fantazio nova HTML5 elemento nomata artikolo. Kaj en tie, ni iras havi kaplinio kie ni tuj simple havi h1, kiu inkludas la fosto titolo. Do jen, se ni rigardas tiun duobla frizita krampoj skribmaniero, tiu faros esence PHP eĥon post titolo. Do ĝi estas helpema stenografio ke Laravel provizas nin. Do ni tuj uzi tiu notacio anstataŭe. Kaj tie, ni iras al ankaŭ presi la enhavo de tio. Kaj en tie, ni iras fari postenon enhavo. Kaj malsupren al la fundo kio ni estas tuj fari estas krei footer. Kaj en la footer, ni tuj unua ekrano kiam tiu estis poŝtita. Do tiu estis afiŝita je, kreita ĉe. Kaj Laravel uzas vere bela Dato biblioteko nomita Karbono. Do ni povas reale fari iu nomita difforHumans, kiun vi vidis antaŭe. Kiam ni eldonis. ĝi diros, kiel, kvin duaj malantaŭen. Do ĉi tiu estas vere bela funcionalidad de Laravel. Kaj fine, ni iras fermi ĉi footer. Do nun, se ni reiros al Ĉefpaĝo ni iras vidi nenion tie ankoraŭ ĉar ni ne coded supren la ĉefpaĝon. Sed se ni iros sendi oblikvo unu, Ni tuj vidos escepton. Ĉu iu scias kial ni vidas escepton? Kion ni mankas? Ajna ideoj? Do kion faris ni faru antaŭe por ni reale difini kiel ni atingos aparta controladores? SPEAKER 1: La itinero? ERIC Ouyang: Yeah. Do ni ankoraŭ devus difini la itinero. Do ni revenu ĉi tien al routes.php. Vi rimarkos ke ni ne vere difinita kiel ni tuj ricevas por ĉi adaptilo. Do nun ni iras por difini tiun itineron. Estas sufiĉe simpla, simila al kion ni faris antaŭe. Sed kion ni tuj rimarki tie estas ke ni tuj havos lokokupilon. Do se ni faros route.get oblikvo post ID. Do ID nun estas kio tuj esti pasinta al la regilo. Ĉi tuj uzos la controlador ke ni simple kreita, BlogController ĉe viewPost. Kaj ni tuj alias ĉi kiel viewPost. Granda. Do nun ni iras al krei tiu itinero. Do nun, se ni iros tien kaj refreŝigi la paĝon, ni fakte ne havas nia nova blog. Do jen kion ni kreis antaŭe. Tre simpla paĝo, sed montras la bloga poŝto ke ni ĵus kreita. Cool. Kaj se ni vere iru tra la tuta procezo de kreado de nova blog, ni rimarkos, ke ĉiu alidirektilojn konvene. Se mi diras, "Hi. Mi estas Jonatan Tan. " Diru, "Ĉi tiu estas mia blogo post." Kaj enigu ĝin, tiu kreos tiu nova blog kun ID 2, kiun pliigoj de kion ni devis antaŭe kaj vidigas ĝin konvene. Imponega. Ajna demandoj? Jes? SPEAKER 2: Ĉu Laravel tenilo sanitization kaj ĉion por vi? ERIC Ouyang: Jes. Do kiam ni vidis antaŭe, kiam ni faris input dupunkto colon akiri, ke sanitates ajna SQL injektojn kaj whatnot ke ni volas realigi se ni estas malica uzanto de la paĝaro. Do Laravel manipulas amason de tiu malantaŭ la scenoj. Bona demando. Do ni rigardu la ĉefpaĝon. Do se ni unue reiru al la controlador por la hejmpaĝo, vi rimarkos ke ĝi Ne faras multan tie. Vi rimarkos ke ni estas ne pasante en tiu controlador io aparte helpema. Estas nur tiu indeksdosiero. Do ni transiri en ĉi ion helpema. Kaj specife, ni estas preterpasonta en afiŝojn. Kaj Laravel permesas ni fari post ĉiuj, kiuj ni permesos akiri ĉiujn afiŝojn. Nun se ni reiru al index.php, vi vidos, hej. Nenio ĉi tie ankoraŭ. Sed kion ni volas fari ĉi tie Efektive persisti tra, fari foreach buklo super la posts kiu nin permesas presi la afiŝojn. Do foreach afiŝojn kiel post, kion ni volas fari estas presi la enhavon el la bloga poŝto. Sed unu afero vi rimarkos estas ke ni fakte skribis la plimulton de tiu kodo Jam, en view.blade.php. Do kion ni iras al reale fari estas uzi belan helpema trajto de Blade kaj faktoro ekster tiu komuna kodo. Do ni iru tien. Nin tuj prenos ĉi enhavo dekstra tie, kaj kion ni tuj faros estas krei novan dosierujon. Ni simple nomas ĝin _partials_. Kaj en tie, ni iras krei post.blade.php. Do jen, ni faktorita el la maniero en kion ni volas montri tiujn afiŝojn. Kaj tie kion ni faros anstataŭ efektive havi tiun HTML rekte, ni tuj uzi ĉi direktivo nomata inkluzivas blog.partials.post. Kaj kion ni faros ĉi tie estas pasi en la post de la paĝo. Do nun, se ni reiros tien, ni devos rimarkos ke la funcionalidad estas ankoraŭ la sama. Sed nun ni havas ĉi faktorita ekster kodo, ĉi HTML. Do ni povas uzi ĝin en indekso. Do jen, ĉi tiu estas tre simpla. Ĉiuj ni faras estas inkluzivi blog.partials.post kaj tabelo. Kaj ie antaŭe, ni faru post poŝto. Do nun, se ni reiros al la Hejmpaĝo, ni vidos ke, hey. Ni havas liston de ĉiuj blogo afiŝojn kiujn ni havis antaŭe. Ni eble volas aldoni kelkajn "se" kondiĉoj kaj "alie" kondiĉoj tiel ke se ni ne havas ion sur la blogo, ni volas montri ion helpema. Kiel, hej. Mankas enhavo ankoraŭ sur la blogo. Kaj se vi uloj efektive rigardi la dissendo kodo en GitHub, vi vidos ekzemplon de kiel ni faru tion. Cool. Ajna demandoj? Jes. SPEAKER 2: mi supozas ĝuste fundamentan demandon. Reen al la itinero. ERIC Ouyang: Yeah. Se ni rigardu itineroj. SPEAKER 2: Kie faras la uses.blogcontroller ĉe krei postenon, Kion tio direkti nin? ERIC Ouyang: Yeah. Yeah. SPEAKER 2: Aŭ kio estas that-- ERIC Ouyang: Do, rigardu, diri ekzemple, tiu itinero dekstra tie. La unua parto estas la efektiva URL ke la uzanto iros. Kaj tiu tabelo tie, asocieca tabelo, difinas kiom ni volas havi la apliko akto en respondo al ĝi. Do uzu estas la controlador, la funkcio kiu ni volas nomi kiam uzanto iras al ĉi tiu URL. Do viewPost dekstra tie estis funkcio kiu ni difinis ene de BlogController-- SPEAKER 2: Mi vidas. ERIC Ouyang: --so ke ni povas reale Redonu la vidon, realigi iuj kalkuloj, interagi kun la SQL datumbazo. SPEAKER 2: OK. ERIC Ouyang: Kaj tiam la aliaj parto, "kiel" estas alias ke ni uzas. Do se ni rimarkos kiam ni kreis la formon, vi rimarkos ke URL :: routecreatePost. Do ĝi anstataŭas en la fakta URL por ke ni ne estas malfacila kodigo tiuj en tiel ni povas ŝanĝi ĝin fojon, diru se ni volis renomi. Anstataŭ post oblikvo nova, ni volas fari kiel, p slash nova ĝuste purigi niajn URLoj iom. Ni devus ŝanĝi ĝin en unu loko anstataŭ ol tra ĉiuj la malsamaj dosieroj. Cool. Tio estas bona. Do nun ni havas tre bazaj blogo platformo. Ni probable volas aldoni en butono tiel ke ni povas reale krei novajn afiŝojn. Do se ni tuj iri ĉe la Aranĝo Majstro, ni havas sekcion nomita Header Dekstra ke ni jhus difinita ĉe la supro. Do ni povas aldoni butonojn al la supro de la kaplinio. Do se ni iros al index.blade.php, reale fari estas difini kio iras ene de ĉi tie. Do ĉi Header Rajto sekcio, kion ni faros estas aldoni en butono por iri al la URL difinita de la vojo nova posteno. Nur por purigi ĝin kaj fari ĝi bela kaj ĉiuj Bootstrap, ni tuj faros ĉi defaŭlta butonon. Ni simple fari ĝin granda por amuzo. Kaj en ĝi, oni povus meti tekston. Sed kion Bootstrap provizas estas glyphicons. Do ni povas reale aldoni en tiu nice krajono, kiun ni vidis antaŭe. Glyphicon. Glyphicon-krajono. Do tiu al ni permesos meti en ikono anstataŭ teksto. Nun se ni haltas, tiu difinos tiun sekcion. Kaj, he. Ni havas belan butonon kiu ligas ni rekte al la aldoni la blog paĝo. Do ni havas sufiĉe simplan blogo. Ni povas aldoni stuff al ĝi. Sed kio ni ĝenerale atendas el blogoj estas komentoj. Do estas vere grava por ni havi, diru, se iu alia vizitas retejon kaj vere ŝatas la fosto kiu ili povas engaĝiĝi en diskuto kun aliaj homoj kiuj vizitas la paĝon. Do ni tuj iru kaj krei nova datumbaza tabelo kaj nova modelo tiel ke ni povas asocii komentas kun fostoj. Do la unua paŝo, samkiel antaŭe, estas ke ni bezonas kuri migradon. Do kiel antaŭe, ni faru php metiista enmigri: fari. Kaj ni iras al krei unu nomata create_comments_table. Tio kreos dosieron kiu havas nia nova migrado. Kaj ni iras al, kiel antaŭe, difini nova tablo. Do skemo :: krei tablo nomita komentojn. Tiu funkcio tie. Kaj interne tiu tablo kion Ni tuj fari estas unua, kiel antaŭe, atribui ID. Pliigoj ID. Ni tuj permesos uzantoj asociigi ilian nomon kun aparta komento. Ni intencas havi iun enhavon iras kune kun tiu, teksto enhavo. Kaj tie kion ni volas iri al do estas io malsama. Ni intencas krei entjero ke nomas post_id kiu tuj signifi kion poŝto aparta komento iras kun. Krome, ni fakte tuj starigis fremdan ŝlosilon limigo por ĉi tio. Do MySQL estos observigi tion. Ni ne provas asigni komento nombro 5 sendi 5.000 se ni havas ne havis 5.000 posts sur ĝi. Do kion ni faru ĉi tie, ni faru fremdaj post_id tuj estos asociita kun la ID kampo de la tablo afiŝojn. Kaj ni vere faru ion alie helpema, estas onDelete. Do se ni forigas iun post de la datumbazo, ke ni volas Akvofalo la forigas por komentoj ankaŭ. Ĉar ne tre helpema por ni havi komentojn sur afiŝojn kiuj ne ekzistas. Kaj fine, kiel antaŭe, ni estas tuj templimon stampas sur ĉi. Kaj kiel antaŭe, ni tuj havi la inversa migrado estos faliginte la komentojn tablo. Do nun, se ni reiros tie, ni iras kuri tiun migradon, metiista migras. Kaj nun ĝi estas aplikita ĉi migrado kiu ni ĵus kreita. Do se ni ĵetas ekrigardon al phpMyAdmin, ni faras, fakte, nun havas komentojn tabelo kiu havas la strukturo kiu ni ĵus precizigis. Do kiel antaŭe, ni estas tuj krei novan modelon al abstrakta la SQL tablo ke ni ĵus kreita. Do ni Aldoni novan dosieron. Ni tuj nomas ĝin comment.php. Kaj tiu estas vere tuj esti honeste simpla kun malpeza ŝanĝo de kio ni havis antaŭe. Do klaso Komento etendas elokventaj. Kaj kion ni iras fari ĉi tie estas difini funkcio kiu estas la interrilato kun aliaj modeloj. Do ni tuj havas postenon funkcio tie ke revenas ĉi rilato. Do ni specifante ke tiu apartenas sendi, dirante, ke estas unu post ke tiu komento apartenas al. Ĉi reale devas esti ĉefurbo P por la modelo. Kaj nun ĝuste aliflanke flip flanko, ni devas diri ke, hey. Afiŝoj havas komentojn. Do kion ni volas fari estas difini publika funkcio komentoj. Kaj tie estas redonita tiu havas multajn Komento. Do nun magie kiam ni havas la post, ni povos atingi la atributo komentoj kaj ĝi malebligos popoli ĝin per la informoj el la datumbazo. Do ni vere iru tra kaj aldoni novan karakterizaĵon al nia vido dosieron tiel ke ni povas kaj visualización kaj krei komentojn. Do ni tuj difini nova sekcio. Ni simple disigi ĝin kun horizontala regulo. Sekcio id = "komentoj". Kion ni faros Jen, kiel antaŭe, persisti tra ĉiuj komentoj. Do fakte, kiel ni faras ĉi estas, kiel mi menciis, sufiĉe magia. Ni faru afiŝi komentojn. Kaj tiam ni povas fari tion por ĉiu buklo super ĉiu de la komentoj. Kaj kion ni tuj fari estas div class komentu, kaj ni iras al reale presi ĉi komento. Do montri ke bona, komenti name-- la persono kiu posteó ĉi comment-- diras dot dot dot. Ni tuj metos tion en blokon citaĵo, nur por igi ĝin rigardi bela. Kaj tiam komenti enhavo bloko citaĵo. Kaj foreach. Do nun tiu tuj maŝo tra ĉiuj komentoj kiu asocias kun ĉiu de la postenoj kaj montri ĉiu el tiuj komentoj. Mi tuj aldonos alian sekcion malsupren tie, kiu nin permesas aldoni komenton. Do h3 klaso. Metu titolon tie. Aldoni komenton. Kaj ni iras al difini nova formo. Do kiel antaŭe, ni estas faros formo ago. Kaj tie, la nova ago estas ni tuj difini nova controlador ke permesas al ni respondi sendi petoj por krei komentojn. Do URL :: itinero createComment. Mi tuj pasos en la parametro tie. La ID de la post tio ni krei komenton pri. Kaj tiam la metodo de tiu formo tuj estos post. Nun ni iras por aldoni en du kampoj, formo grupo. Ĉi tuj estos enigaĵoj kun la enoficigos "nomo" kaj klaso = "formo-kontrolo", type = "text", kaj kun la lokokupilon = "Via nomo." Ni ankaŭ iras por difini alia formo kampo, kiun tuj estos tekston spaco kiel ni havis antaŭe. Ĝuste kiel antaŭe, nomi ŝin enhavo. Class = "formo-kontrolo." Lokokupilon = "Skribu ĉi tie." Kaj nur por ke ni povas reale enigu ĝin, submit tipo kaj klaso = "BTN BTN-primara." Fermu la formo. Fermu ago. Do nun, se ni refreŝigi la paĝon kie ni havas, diru, aparta poŝto. Ni devas restartigi la servilo. PHP metiista servi. ReBoot ĉi. Ni devas difini la itinero. Sed nuntempe, ni nur prenu ĉi el tio, ke ni povas reale montras al vi kion la paĝo aspektas, kaj tiam ni fakte krei tiun itineron. Do, hej. Ni havas ĉi tiu nova formo malsupreniris tien tiel ke ni povas krei komentojn. Do ni efektive difini funkcio ene la controlador tiel ke ni povas aldoni komentojn. Ni iru reen. Kaj ene blogcontroller.php, kion ni faros estas krei novan funkcion nomata krei komento. Publika Funkcio createComment. Ĉi tuj estos sola parametro, la IRU de la posts ke ni dirante sur. Kaj kiel antaŭe, ni estas tuj unue akiri la postenon. Do sendi, findOrfail identigilo. Poste, ni iras krei novan komenton. Do komenti = nova komento. Komento nomo = Input :: akiri nomon. Komento enhavo = la sama nova linio en paŭzoj de Input :: akiri enhavon. Kaj fine, ni tuj devos asocii ĉi tiun komenton kun la post. Do ni tuj uzi tiu funkcio, komentoj, kiu nin permesas ŝpari tiu rilato. Do nun tiu komento havos aŭtomate la fosto ID. Ni povus ankaŭ starigis ĝin permane, sed tiu estas pli facile legi tiel for kiel la funkcion iras. Kaj post ni plenumos tiu, kion ni volas fari estas alidirekto al la uzanto la itinero specifita de viewPost kun la tabelo kun la parametro de la post ID. Kaj nun por ke ĉi reale funkcioj, ni bezonas difini ĉi itinero. Itinero :: post. Kaj nun ni iras por voki ĉi post oblikvo ID oblikvo komento. Array uzas la nova funkcio ke ni ĵus kreita. BlogController. CreateComment kiel createComment. Granda. Do nun espereble se ni refreŝigi la paĝon kaj aldoni en komento, diru: David Malan. "Espereble tio funkcias." Proponu. Ni, fakte, havas komenti ĉi blog. Cool. Do nun ni havas sufiĉe funkcia bloga poŝto. Ni nur tuj aldonu kelkajn retuŝojn tiel ke ni havas iun pli utila informoj pri tiuj postenoj. Do se ni reiros al la frontpaĝo, ni ne havas senson de kiom da komentoj estas sur ĉiu de tiuj postenoj. Do kion ni reale irante fari estas, enen nia modelo, difini helpantino funkcio kiu permesas ni specifi la numeron de komentoj kiuj iras kun aparta poŝto. Do ni iras por krei helpanto funkcio. Publika funkcio. GetNumCommentsStr. Do ĉeno kiu specifas la numeron de komentoj kiuj iras kune kun ĝi. Kaj kion ni faros estas diri ke num = tiu komentoj rakonti. Do ni iras por rakonti la nombro de komentoj. Kaj se tiu nombro egalas 1, ni estas nur tuj revenos 1 komento. Kaj tiam alie, ni volas redoni la kunmeto de num, komentoj tiel ni atingos la pluralization korekta. Nur fari ĉi sola citaĵo. Unu komento. Kaj nun ni povas uzi tiun funkcion rekte ene de nia vido. Do se ni reiros al la parta posts kiu ni kreis, nun ni volas reale montri la nombron de komentoj. Do kion ni povas fari estas post, uzu tiun funkcion ke ni ĵus kreita por montri la nombron de komentoj. Do se ni nun fortigu, ĝi faras, fakte, ekrano la nombro komentoj kiuj iras kune kun ĝi. Se ni volis esti fancy se vi fakte rigardi la dissendo kodo, ni povas fakte ligi ĉi al la komentoj. Se vi memoras, ni difinis ene de la vidi ke tiu havas sekcion ID komentoj. Do se ni vere volis ligi rekte al la sekcio de komentoj, kio ni farus tie estas href URL de la itinero viewPost. Iam en la tabelo ID de post ID. Kaj poste ni volas iri al specife la sekcio de komentoj. Ĉi tie ni fermas la tag. Do nun, se ni refreŝigi ĉi paĝo, ni alklaku ĉi. Ni iras rekte al la sekcio de komentoj. Se ni havis pli longan post, vi povos reale vidi ĉi resalto malsupren. Sed vi rimarkos ke ĝi estas ne je la supro de la paĝo. Cool. Granda. Do tio estas sufiĉe simpla ekzemplo de iu simpla ke vi povas fari kun Laravel. Sed vi povas rimarki ĉi tie ke ni faris multon kun sufiĉe malmulta kvanto de kodo. Laravel nin permesas fari la SQL pridemandojn malantaŭ la scenoj. Ĝi faras la salubrigo por ni malantaŭ la scenoj. Nin permesas fari tiujn rilatojn tre facile sen Ni bezonante fari ajnan SQL aliĝi deklaroj al kombini komentoj per kio la afiŝojn. Nin permesas fari ĉi posedajxo de ŝablonoj tiel ke ni povas difini tiujn nestumado dosierojn tiel ni ne ripeti mem, ĝuste kiel kiam ni havis tiun montro de la posts ke ni ne devas kopiu kaj gluu la kodon. Kaj de tie vi povas konstrui pli kaj pli komplikaj aplikaĵoj. Vi povas imagi, se ni volis implementar log-in, ni povus diri, enportas tria kadro kiu nin permesas fari tion. Ekzistas aro da ili ke estas vere, vere granda kiu povus fari simile, Pasvorto reakiro. Kaj sendos al vi retrovu pasvorton retpoŝto. Ni povas implementar permeso por ke mi povu krei postenon, sed iu alia ne povas redakti ĝin. Ni povas implementar funcionalidad forviŝi afiŝojn. Sed vi povas vidi ĉi tie ke ni havas belajn multa ĉiuj rudimentaj komponantoj konstrui iuj vere, vere, dinamika kaj ekscita retejo apps. Do kun tio, mi kredas ke ni estas bonaj. Ĉu vi uloj havas demandojn? Jes? SPEAKER 3: Kiel vi akiri statika enhavo? ERIC Ouyang: Static enhavo. Do vi vidis antaŭ ke kiam ni havis ĉi tiu rajto ĉi tie, ĉi aranĝo enhavo, vido konsiston, ni havis tiun sen tiu tabelo poste. Blog.index, ni havis tiun kiel simplan statika dosiero. Do se ni ne pasas ion kune por gxi, ĝi malebligos ĝuste redonu la HTML rekte. Sed se ni pasas en ĉi asociaj tabelo de posts, kiu estas dinamike tiris el la datumbazo, ni povas fari la paĝon dinamika. Cool. Ajna alia demandojn? SPEAKER 3: Kiel vi komparu Laravel al eble kelkaj aliaj ebloj? ERIC Ouyang: Sure. Yeah. Do Laravel is-- tio grandan question-- unu el multaj ebloj por TTT kadrojn. Do Ruby on Rails estas tiu kiu estas populara. Mi kredas Twitter kutimis esti implementado kun Ruby on Rails. Mi pensas ke ili jam ekde conmutación. Ekzistas alia nomita FuelPHP. Do Ruby on Rails uzas la Ruby lingvo kaj implementa multon de la MVC stuff ke ni vidas ĉi tie. FuelPHP estas alia PHP kadro. Django estas unu el miaj favoritas. Estas retejo enkadrigi Python. Do vi povas skribi vian ttt app en Python. Do tie estas tuno de tiuj opcioj. Laravel, mi kredas, por kaj granda estas mia favorata dekstra nun por PHP ĝuste ĉar de la komponantoj ke ni parolis antaŭe. Estas Komponisto ebligita. Ĝi inkludas vere, vere esprima ORM sistemo. Ankaŭ havas vere awesome templating lingvo kiu iuj de la aliaj simple ne provizas. Kaj migradoj. Migradoj estas awesome tiel. Cool? Imponega. Nu, dankon tiel por rigardi tiun seminarion, kaj bona sorto en via fina projektoj.