[Muusika mängib] ERIC Ouyang: Hei, kõigile. Tere. See on hoone Dynamic Web Apps Laravel. Minu nimi on Eric Ouyang. Ma olen üliõpilane õpib ühiskonnaõpetus sekundaarse infotehnoloogia, ja ma elan Adams House siin Harvardi. Nii Laravel, selle kõige core, on MVC web app raames. Nii meeldib, mida kutid on teinud koos CS50 Finance, Laravel on raamistik, mis võimaldab saate luua dünaamilisi veebirakendusi. Nii et sa ei mõtle seda mõnes mõttes laiendusena tüüpi kraami olete teinud ka CS50 Finance, kuid süsteem, mis on palju tugevam, palju rohkem elegantne mõnes mõttes, ja pakub palju funktsionaalsust teile ehitada üsna keerukas veebirakendusi. Nii lähme läbi mõned põhijooned, ja siis me sukelduda Näiteks hoone blogi taotluse Laravel. Nii et üks esimesi asju, mis eristab teda MVC tüüpi tööd et olete teinud koos CS50 on see sisaldab ORM mootor. Nii ORM tähistab objekti relatsiooniline kaardistamine. Nii et see võimaldab teil luua kiht võtmiseks vahel andmebaas ja teie kontrollerid. Nii et erinevalt CS50 Finance kus teid otse teha päringuid, ORM kiht võimaldab teil abstraktne, et ära ja luua mudeleid, mis on võimsam kui saate otse SQL päringuid. Teine asi, mis on tõesti kasulik on päritav malle. Nii saad teate CS50 Finance, sa lõpuks ümberkirjutamist palju asju, kus kohad, kust võiks potentsiaalselt taaskasutada asju, et sa pole võimeline. Nii et siin on Laravel, mida saab kasutada, mis on tuntakse tera template mootori luua kapten paigutuse. Ja sealt saab pärida nii et sub-malle saab tegelikult sisaldama elemente et suuremad mallid. Ränne. Nii et see on üsna kindlad funktsioonid moodsaim veebirakenduse raamistik. Nii et see võimaldab teil esindavad andmebaasi skeemi muudatusi koodi. Nii ei kavatse öelda, phpMyAdmin, tegelikult võite luua nende ränne kus te esindate andmebaas schema muudatused koodi otse. Ja see võimaldab teil mina-- eriti kui teil on mitu töötavad inimesed samal web application-- jälgida neid muutusi, öelda github või mõne muu hoidla. Nii et see on tõesti kasulik ja leevendab vajadust , ütleme, liigu palju ringi SQL puistab. Ja lõpuks, Helilooja on midagi tõesti kasulik mis võimaldab teil kasutada muid inimeste kood teha awesome asju. Nii Laravel on ehitatud mitu helilooja pakette. Nii öelda kui sa tahad tuua in autentimist paketi või kui sa tahad tuua mõned omamoodi generaator script või admin liides, saate plug and play need osad, kus helilooja. Nii alustame. Kõik küsimused sinult poisid, enne kui me alustada? Ühtegi küsimust ei ole? Külm. Nii et esimene samm on paigaldamist Helilooja. Nii Helilooja saate juhtida neid sõltuvusi, kas see on Laravel raamistik või mõne muu kolmanda isiku pikendamist. Esimene käsk võimaldab saate alla laadida Helilooja, ja teine ​​käsk võimaldab liigutada oma kohaliku bin kausta nii et saate käivitada Helilooja otse läbi terminali. Pärast seda, minna ja Uue Laravel projekti. Me tegelikult läheb kasutada mõningaid näidiskoodis et olen kokku luua selle blogi. Aga kui sa oled alates nullist, siis oleks seda käsku kasutada siin, helilooja luua projekti, laravel kärpida laravel ja seejärel projekti nimi. Ja mis hõlmavad kõik levitamine koodi jaoks algab uus Laravel projekti. Nii teie CS50 Lõputööde, saate Tõenäoliselt soovivad kasutada seda käsku. Aga me ei kavatse hakata seda. Nii et kui sa oled teinud et sa lähed, et saada üsna suur number failide blog50. Võtame läbida mõned nendest komponentidest. Märkad selles marsruut Kataloog on app kausta. Toas app kausta, seal on Paar kasulik kaustad. Märkimist alustada on see config kausta. Nii et see loob kuidas veebi rakendus läheb, ütleme, autentida inimesed või raha asju või ühendada andmebaasi. Ja mis on tegelikult kasulik on, et Laravel võimaldab teil luua eri arengu keskkondades. Mida me oleme teinud siin on, kui me läheme alla kohaliku kausta seal on database.php faili. Ja märkad siin, et me luua MySQL ühendus, mis võimaldab inimestel ühendada MySQL server, mis on otse CS50 aparaat. Ja me ühendamisel andmebaas et ma loodud nn Blog50. Nii saab tegelikult minna ja joosta töötab versioon sellest, lihtsalt saada aru sellest, mida taotlus, et me ehitada välja näeb. Nii et mul on koopia Selle Blog50 lõpetatud. Nii Laravel tegelikult on ehitatud server et saate käivitada otse käsurealt. Seega on see sarnane Pset enne, kui sa tegelikult luua oma server C. Nii nad on sisse ehitatud nii, et saate käivitada oma Laravel apps otse käsurealt. Nii et kui me teeme php käsityöläispäivät teenida, seda käivitab arengu server Sadama 8000. Nii et kui me läheme kohaliku masina 8000, märkad, et kuule. Meil on meie blogi ja töötama. Nii Laravel siin on teeniva esilehel meie blogis. Väga lihtne rakendus. Aga seal on paar tõesti vahva funktsioonid et see annab all kapuuts. Nii blogi rakenduse lihtne. Kui me tahtsime luua post, saame klõpsake seda nuppu. Me ei saa öelda: "Hei, kõigile. See on tõesti lõbus seminar "näiteks. Ja midagi kirjutada siia. Kirjuta siia. Kui me klõpsa ', siis saad märgata, et meie uus blogi post on lisatud esilehel blogis. Kui me läheme tagasi siia, märkad, et seal on mõned kommentaarid juba blogis. Nii et kui me allapoole kerida, siis saad märgata, et Jonathan Tan ütleb et ta oli väga intrigeeritud sellele ametikohale. Nii et me läheme, kuidas objekti relatsiooniline kaardistamine võimaldab et sa neid suhteid üsna sujuvalt samuti. Külm. Kõik küsimused funktsionaalsus mida me ei kavatse ehitada? Külm. Alustame välja tegelikult luua andmebaasi tabeleid. Nii meenutada, et CS50 Finance, siis kokku pandud tabel kasutajad samuti varud oma portfelli. Nii nagu me varem mainitud, mida me kasutame Laravel on midagi, mida tuntakse ränne. Kui me läheme tagasi jaotus kood siia, Esimene käsk, mis on kasulik, et Laravel pakub see rändavad käsk. Nii saame teha php käsityöläispäivät rännata teha. Nii et see võimaldab meil luua migratsiooni. Ja siis me tahame luua migratsiooni nimetatakse create_posts_table, mis toimub sinna, kus me ei kavatse salvestab oma blogi postitusi. Ja märkad siin, et see töötab läbi mingi kood, mis tegelikult genereerib faili ajatempli ta. Nii et kui me läheme ja vaatame Database, me märkad all Migratsioon et see on loodud tühja faili meile, mis on stereotüüp kood nimi et me täpsustada, luua postitused tabelis. Ja tal on kaks funktsiooni ta. Up, mida me tahame käivitada, kui migratsiooni rakendada andmebaasi. Ja alla on see, mida me teeme Kui me tahame, et peatada ränne. Nii et siin alustame välja koos kirjalikult see ränne. Nii et kasulik klassi in Laravel nimetatakse Schema. Nii et me läheme sõitma Schema :: luua. Ja me ei kavatse luua tabel nimega ametikohta. Ja siin me rakendame seda kasutades funktsiooni. Ja mis siin, me ei kavatse tegelikult sisu täpsustavad meie lauale. Me läheme luua ID, mis on auto-incrementing. Lisaks me läheme luua väljale esindab tiitli meie blogi postitus. Oleme ka kavatse luua valdkonnas ladustamiseks teksti meie blogi postitus. Ja lõpuks, me ei kavatse salvestada mõned loomisaja sest kui meie post loodi ja kui see on uuendatud. Ja alla, see on üsna lihtne. Kõik me tahame teha, on tilk tabelis, et oleme loonud. Hea. Kas on küsimusi? Nüüd, kui me edasi minna and-- tegelikult, kohaliku peremehe andke mulle kustutada, mis meil oli varem. Mine andmebaasid. Ma lähen kustutada, mis meil oli varem. Viska see ja luua uus andmebaas Blog50. Nüüd, mida maagiline osa on siin, et me võib neid ränded on otseselt andmebaasi kasutades käsurida vahend. Nii et kui me teeme php käsityöläispäivät rändavad, märkad, et kuule. See on loodud rände tabelis mis me vaatleme natuke, ja see on rakendatud selle esimese ränne. Nii me vaatame Blog50, märkad et see on loodud kaks tabelit meile. Esiteks on see ränne tabelis. Nii et kui me sirvida seda, märkad, et Selles tabelis on üsna lihtne. See on lihtsalt ütles, et kuule. Oleme kohaldatud see ränne. Me minna tagasi ja vaadata ametikohta. Märkad, et struktuur Just seda me küsis ta. Meil on auto-incrementing ID. Meil on string salvestamiseks pealkiri ja tekst valdkonnas sisu talletamiseks. Hea. Külm. Kõik küsimused ränne töö, kuidas me saame neid rakendada? Ei? Külm. Nüüd me ei kavatse minna ja tegelikult luua mudel. Nii et me tahame luua postitused mudel salvestab võtmiseks andmebaasis. Nii et pigem teeme MySQL päringut otse, me ei kavatse luua. Nii et me peame looma kausta siin nimetatakse mudeleid. Ja sees siin, me ei kavatse looge fail nimega post.php. Toas see PHP faili me ei kavatse luua klassi postiga mis ulatub kõnekas. Kõnekas on nimi ORM mootor, mis Laravel annab. Ja siin me võiksime oodata, et sa tegelikult vaja kirjutada mingi kood. Me läheme kirjutada mõned abistaja funktsiooni hiljem. Aga karbist välja, on see juba tunne, mida on andmebaasis ja suudame, ütleme, teksti meie blogi postitus või pealkirja ja luua asju otse päris palju kood pole üldse. Nii et üks maagiline komponente. Ja tuul kord selles klassis on rohkem täieõiguslikuks, me sisaldama teavet selle kohta, mida see on seotud, nii et kommenteerida. Samuti loob funktsiooni et saaksime tegelikult otse saada URL blogi postitus lehel. Külm. Kõik küsimused selle kohta? Ei. Külm. Nüüd, kui meil on mudel, me tahame luua kontroller, mis on võimeline ühilduma need mudelid, ja hiljem andmebaasi. Nii et kui me vaatleme BlogController, saate märgata, et seal ei ole palju praegu siin. Kõik on on indeks funktsiooni mis tekitab kodulehekülg, kuid midagi seal näidata veel. Nii et esimene funktsioon et me ei kavatse luua on üks, mis võimaldab meil luua blogi postitus. Nii et me läheme kuulutada uus funktsioon nimega newPost. Ja siia sisse lihtsalt, me ei kavatse määrata paigutuse see leht olema muuda versiooni kui te mäletate CS50, Selle malli nimega blog.new, mis me ei kavatse luua natuke. Märkad siin on line kuus, et meil jäi see muutuja, kujundus. Ja kui me vaatame kell Views kausta on Layouts kausta, mis sisaldab väga lihtne HTML faili. Ja teadmiseks, märkad et meil on see konteiner siin, et annab sisu. Nii sees meie template mida me teeme on luua, mida saab olema asendatud otse selle paigutuse. Nii me ütlesime, et me tahame muuta malli nimega blog.new. Aga sees Blog, seal on ei ole veel selle uue malli. Nii et me läheme luua fail nimega new.blade.php. See ütleb Laravel et Selle PHP fail peaks tuleb sulatatud tera malli mootor. Nii on see võrdlemisi lihtne fail. See saab olema kujul, mis me tegelikult lisada blogi postitus. Nii magic siia pärisosa on, et kuule. Me tahame täpsustada, et paragrahvi sisu lõik siin, mis on piiritletud pooltsection jastop. Mis siis vahepeal siin läheb asendada arvesse kapten paigutuse. Ja siin me tahame teha, on väga lihtsalt luua uusi HTML faili. Liidame kiire pealkiri. Lisa blogi postitus. Ja selle sees, me oleme kavatse luua vormi. See vorm läheb on action. Ja see saab olema midagi et me asendame hiljem, ja me näeme, kuidas suunamises sobib siia. Aga me lihtsalt läheb määratleda nüüd et see läheb URL marsruut alates createPost. Ja siis see läheb on meetod post. Jooksul siin, me ei kavatse on kahes valdkonnas. Div class = "vormi grupp". Me kasutame Bootstrap CSS raamatukogu lahkelt pakub Twitter. Nii et me läheme luua kaks neist. Nii see esimene sisend on saab olema pealkiri. Nii input name = "title". Class = "formcontrol". Type = "text". Ma lähen lisada kohatäide = "Pealkiri". Ja siis teine ​​on saab olema kastis. Name = "sisu". Class = "formcontrol". Ja kohatäide = "Kirjuta siia". Seal me läheme. Lõpuks me ei kavatse lisada kiiret nupu Edasta. Type = "submit" class = "btn btn-algkooli". Nii need kõik funktsioonid Bootstrap nii et seda saab paigaldada viia nii, et see saagiks kasutaja, mitte alasti HTML. Nii et me oleme määratud kontroller siin. Meil on määratletud väga lihtne vaadata. Aga mis puudu on sidekude. Nii sel hetkel, Laravel pole aimugi, kuidas me ei kavatse tegelikult pääseda sellele kontroller. Seega see on määratletud fail nimega routes.php. Ja just nüüd, meil on üks tee. Milline on siis, kui me läheme kodus tee sellel veebilehel, see saab muuta indeks kontroller. Nii et siin me vajame teha, on rakendada uus marsruut meil luua post. Nii et me kasutame seda meetodit saada, mis täpsustab et kui kasutaja proovib saada see page-- konkreetselt post kärpida uus page-- mida me teeme on regulaatorit kasutada nn BlogController uus postitus. Üks, et me lihtsalt loodud. Ja siis me läheme et teise nimega seda newPost. Me läheme luua uus funktsiooni natuke. Aga mis siin all key "kui" on see, mida saame asendada jooksul Meie Blade malle. Nii et nüüd, lähme tegelikult ka öelda liinil. Nii et me ka läheb luua kontroller nii et me saame luua need ametikohad. Nii et kui kasutaja postitusi lehele postitus kaldkriips uus, mida me teeme on kasutab regulaator, me läheme peagi luua nimetatakse BlogController at createPost. Ja me ei kavatse alias seda nii createPost. Külm. Kas on küsimusi? Külm. Nii saab käivitada mis meil siiani. Nii et kui me teeme php käsityöläispäivät teenida, näeme palju vigu. Seega tundub, et meil on süntaksi liinidel rida 27. Ah. Kadunud semikooloniga. Nii et kui me läheme 8000, näete siin midagi veel. Nii et see on vaikimisi kodulehekülg. Aga kui me läheme postitada kärpida uus, hei. See oleks vormis, et me lihtsalt loodud. Just nüüd, me ei ole rakendanud funktsionaalsus millal me vajutage nuppu Esita. Nii et kui me klõpsa Esita nuppu, et see saab käivitada viga. Aga me ei kavatse kood, mis just nüüd, just see, mida me tahad teha siis, kui kasutaja esitab selle vormi. Nii teemegi. Mine tagasi kontrollerid faili. Mida me teeme on rakendada seda uut funktsiooni mis võimaldab meil luua post. Tunnistada uue funktsiooni. Avalik funktsioon createPost. Ja seda funktsiooni saab olema natuke keerulisemad kui see, mida meil oli enne. Aga näete siin, et me ei ole läheb tegelikult kirjutada ükskõik SQL. ORM, Elougent ORM, läheb lubada meil teha seda mõnel moel rohkem elegantne viis. Nii et me läheme luua uus ametikoht. Ja siin me oleme instantiating uue objekti mudelist, et me lihtsalt loodud, post mudel. Ja see, mida me teeme on seatud title atribuut seda kasutades midagi mida saame server. Nii see on sarnane sellega, mida meil oli varem CS50 Finance kui me teeks, kasutades Super Global Post otsib pealkiri. Nii Laravel annab mõned kanalisatsiooni ja tühi-tähi, kasutades seda abistaja funktsiooni. Nii et me eelistaks kasutada seda mitte Selle väga lihtne töötlemata kujul PHP. Ja siis me teeme on seatud sisu selle sisendi saada sisu. Me tegelikult läheb murrab Seda kasulik funktsioon et PHP pakub nimetatakse nl2br, mis Selgub uusi liine, NLS sisseveo brs, vaheaegade, nii et me saame tegelikult on erinevad lõiked sees. Ja lõpuks, mida me ei kavatse teha on päästa seda postitust. Nii me nimetame funktsiooni salvestada selle eeskujul. Me läheme säästa post. Ja lõpuks, mida me teeme on suunata kasutaja konkreetselt et marsruut, mis me ei kavatse peagi luua, alias poolt viewPost. Ja me ei kavatse läbida argumendid id, olles id seda uut postitust. Hea. Nüüd, kui me tegelikult minna ja kasutada seda. Me läheme lisada uus postitus. Oletame, et see on seminar 50. Ja öelda, kindlasti. ASDL. Mida iganes. Mingi sisu. Ja esitab selle. Ja me märgata, et hey. liinidel ei ole määratletud. Aga kui me võtame pilk phpMyAdmin ja otsida, kas meie funktsioon tegin midagi. Vaata Blog50 ametikohta. Me märkad, et kuule. Tegelikult me ​​ei loo lihtsalt, et blogi postide loomisaja täpsustatud. Nüüd lähme tagasi ja tegelikult luua see teine ​​funktsioon meie kontroller, konkreetselt viewPost kontroller. Nii avaliku funktsiooni viewPost. Nii et siin see, mida me teeme, selle asemel võttes tühjad sulud me tahame pass ID pärast, et me loome. Ja siit me teeme tegelikult päringu andmebaasi seda. Nii et kui me postitada, seal on funktsioon nimega Leia mis võimaldab meil päringu seda ID. Täpsemalt, tegelikult me ​​ei kavatse kasuta asendusliikme versioon sellest nn Leia või ei suuda, mis võimaldab meil loobuda välja selle funktsiooni viska välja arvatud juhul, kui ID võtame sisse ei eksisteeri. Ja siis me teeme midagi sarnane sellele, mida me tegime varem kui me seame sisu Selle lehe olla sulatatud versioon sellest uus vaade mis me ei kavatse luua, blog.view. Ja me läheme edasi kanduda it-- just nagu CS50 muuta funktsioon-- sõnastik muutujaid. Võtmed see assotsiatiivne massiiv saada muutujate malli. Nii et me teeme postitus post. Nii edasi kaudselt postitus, mis oleme päringu andmebaasist. . Nüüd, mida me ei kavatse teha, on luua seda seisukohta nii et me saame tegelikult näha blogi postitusi, et oleme loonud. Nii et me läheme luua fail nimega view.blade.php. Nii sees sellist vormi, mida me teeme on kokku pandud lihtne leht, mis võimaldab meil näidata sisu. Nii et me lõik, mis on enne sisu. Stopp. Ja mida me ei kavatse liidus teha siin kirjutada mõned HTML näidata sellel lehel. Nii et me läheme murrab ta fancy uus HTML5 element nimega artikkel. Ja siin me läheme on päis, kus me ei kavatse lihtsalt h1, mis sisaldab Postituse pealkiri. Nii siin, kui me vaatame seda double lokkis traksidega märke, see teeb sisuliselt PHP echo Postituse pealkiri. Nii et see on kasulik, stenografist et Laravel annab meile. Nii et me ei kavatse kasutada Selle märke asemel. Ja siin me läheme ka välja printida sisu ta. Ja siin me läheme teha postitus sisuga. Ja alla allosas, mida me lähen tegema, on luua jalus. Ja jalus, me ei kavatse esmaesitluse, kui see oli postitatud. Nii et see oli postitatud, loodi. Ja Laravel kasutab tõesti kena kuupäeva raamatukogu kutsus Carbon. Nii saame tegelikult teha midagi, mida nimetatakse difforHumans, mida nägime. Kui me postitatud. see ütlen, nagu viis sekundit tagasi. Nii et see on tõesti kena funktsionaalsust Laravel. Ja lõpuks, me ei kavatse sulgeda see jalus. Nüüd, kui me läheme tagasi Esileht me läheme näha midagi siin veel, sest me ei ole kodeeritud up kodulehekülg. Aga kui me läheme postitada kaldkriipsuga üks, me näeme erand. Kas keegi teab, miks me näeme välja arvatud? Mida me kadunud? Kõik ideed? Nii et mida me tegime varem meile tegelikult määratleda, kuidas me saame eriti kontrollerid? SPEAKER 1: tee? ERIC Ouyang: Jah. Nii on meil veel määratleda liinil. Nii läheme tagasi siia routes.php. Märkad, et me pole tegelikult määratletud kuidas me kavatseme saada Selle kontroller. Nüüd me ei kavatse määratleda seda teed. See on üsna lihtne, sarnane sellele, mida me tegime varem. Aga me ei kavatse märkate siin et me lähed on kohatäide. Nii et kui me teeme route.get kaldkriipsuga post ID. Nii ID nüüd on see, mida läheb edasi kontrollerisse. See saab kasutada controller, et me lihtsalt loodud, BlogController at viewPost. Ja me ei kavatse alias seda viewPost. Hea. Nüüd me ei kavatse luua seda teed. Nüüd, kui me läheme siia ja värskendage seda page, me tegelikult ei ole meie uus blogi postitus. Nii et see on see, mida me varem loodud. Väga lihtne leht, kuid kuvab blogipostituse, et me lihtsalt loodud. Külm. Ja kui me tegelikult läbida kogu loomise protsessi uue blogipostituse me märkad, et kõik suunab korralikult. Kui ma ütlen: "Tere. Ma olen Jonathan Tan. " Ütle: "See on minu blogi postitus." Ja esitab selle, see loob Selle uue blogipostituse ID 2, mis sammuga, mida me pidime varem ning kuvab seda korralikult. Awesome. Kas on küsimusi? Jah? SPEAKER 2: Kas Laravel käepide sanitization ja kõike teie jaoks? ERIC Ouyang: Jah. Nii et kui me nägime, kui tegime sisend käärsoole käärsoole saada, et sanitates tahes SQL süstide ja tühi-tähi et me võiksime soovida teha, kui me pahatahtlik kasutaja kodulehel. Nii Laravel tegeleb palju Selle kulisside taga. Hea küsimus. Võtame pilk kodulehekülg. Nii et kui me esimest korda tagasi minna kontrolöri kodulehekülg, märkad, et see ei tee palju siin. Märkad, et me ei ole pääsemist regulaator midagi eriti kasulik. See on lihtsalt selle indeksi faili. Nii saab edasi kanduda see on midagi kasulikku. Ja just, et me oleme läheb edasi postitustes. Ja Laravel võimaldab meil teha postitus kõik, mis annab meile võimaluse saada kõik postitused. Nüüd, kui me läheme tagasi index.php, näete, hei. Miski siin veel. Aga mida me tahame teha siin tegelikult itereerima kaudu, teha foreach loop üle postitusi, mis võimaldab meil välja printida ametikohta. Nii foreach postitusi post, mida me tahame teha on välja printida sisu blogi postitus. Aga üks asi, mida märkad on see, et me tegelikult kirjutas enamik selle koodi juba praegu view.blade.php. Nii et me läheme tõesti on kasuta kena kasulik omadus Blade ja faktorile läbi selle ühise koodi. Nii me läheme siit. Me läheme võtame selle sisu siinsamas, ja mida me teeme on luua uus kaust. Kutsume seda osatuletised. Ja siin me läheme luua post.blade.php. Nii et siin me tegureid välja, kuidas mida me tahame näidata need ametikohad. Ja siin see, mida me teeme, mitte oleks tegelikult, et HTML otse, me ei kavatse kasutada seda direktiivi nimetatakse hulka blog.partials.post. Ja mida me teeme siin on pass ametikohale lehel. Nüüd, kui me läheme siia tagasi, siis me märgata, et funktsioon on veel sama. Aga nüüd on meil see tegureid välja koodi, see HTML. Nii saame kasutada seda Index. Nii et siin, see on väga lihtne. Kõik me teeme, on hulka blog.partials.post ja massiivi. Ja kuskil Enne teeme postitus post. Nüüd, kui me läheme tagasi kodulehekülg, näeme, et kuule. Meil on nimekiri kõigist blogi postitusi, et meil oli enne. Me võiksite lisada mõned "kui" tingimused ja "teine" tingimused nii et kui meil ei ole midagi blog, tahame näidata midagi kasulikku. Like, hei. Ei ole sisu veel blogis. Ja kui te poisid tegelikult vaadata jaotus kood github, näete näide sellest, kuidas me seda teeme. Külm. Kas on küsimusi? Jah. SPEAKER 2: Ma arvan, et lihtsalt Põhiküsimus. Tagasi juures liinil. ERIC Ouyang: Jah. Kui me vaatleme liinidel. SPEAKER 2: Kuhu see uses.blogcontroller on luua post, mida see suunab meid? ERIC Ouyang: Jah. Jah. SPEAKER 2: Või, mis on selle-- ERIC Ouyang: Nii, vaatame, ütleme Näiteks seda teed siin. Esimene osa on tegelik URL selle kasutaja läheb. Ja see rida siin assotsiatiivne massiiv, määratleb kuidas me tahame taotluse õigusakti reageerida. Nii kasutab on kontrolleri funktsiooni, et me soovite helistada, kui kasutaja läheb see URL. Nii viewPost siin oli funktsioon, mis meil määratletud sees kohta BlogController-- SPEAKER 2: näen. ERIC Ouyang: -seega mida me võib tegelikult muuta arvates teha mõned arvutused, suhelda SQL andmebaasi. SPEAKER 2: OK. ERIC Ouyang: Ja siis teine osa, "nagu" on alias, mida me kasutame. Nii et kui me märkame, kui Lõime kujul, märkad, et URL :: routecreatePost. Nii et see asendab tegelikku URL, nii et me ei ole raske kodeerimine neid, et saaksime muuta kui, ütleme, kui me tahtsime ümber. Selle asemel, et post kaldkriipsuga uus, me tahame teha, nagu, p kaldkriips uus lihtsalt puhastada up meie URL natuke. Me muudaks see ühe koha peal pigem kui kõigis erinevaid faile. Külm. See on hea. Nüüd on meil väga põhilised blogi platvormi. Me ilmselt tahad lisada nuppu, et me saame tegelikult luua uusi teateid. Nii et kui me vaatleme kell Layout Master, meil räägib Päise Right et oleme lihtsalt määratletud up ülaosas. Nii saame nuppe lisada ülaosas päises. Nii et kui me läheme index.blade.php, tegelikult tegema, on määrata, mis läheb sees siin. Nii et see Päise Right osas mida me teeme on lisada nuppu, et minna URL määratletud marsruut uus postitus. Just puhastada see üles ja teha see ilus ja kõik Bootstrap, me ei kavatse teha Selle default nuppu. Olgem siis tee seda suurt lõbu. Ja selle sees, me ei pane mingit teksti. Aga mida Bootstrap pakub, on Glyphicons. Nii saame tegelikult lisada, et kena pliiats, et me nägime. Glyphicon. Glyphicon-pliiatsit. Nii et see annab meile võimaluse panna in ikoon teksti asemel. Nüüd, kui me ei peatu, seda määratleb selles osas. Ja hei. Meil on tore nupp, mis seob meid otse lisada blogipostituse lehel. Nii et meil on üsna lihtne blogis. Me võime lisada kraam ta. Aga mida me üldiselt oodata blogid on kommenteerides. Nii et see on väga oluline, et meil oleks, öelda, kui keegi teine ​​külastab veebilehel ja tõesti meeldib postitus, mis nad alustama arutelu teiste inimestega, kes külastavad lehel. Nii et me läheme ja luua Uue andmebaasi tabeli ja uue mudeli nii et me saame siduda Kommentaarid ametikohta. Nii et esimene samm, nagu enne, on see, et meil on vaja käivitada ränne. Nii nagu enne, teeme php käsityöläispäivät rännata teha. Ja me ei kavatse luua nimetatakse create_comments_table. See loob faili mis on meie uus ränne. Ja me ei kavatse, nagu Enne, määratleda uue laua. Nii Schema :: luua tabel nimega kommentaare. See funktsioon siin. Ja sees see tabel, mis me ei kavatse teha, on esimene, nagu enne, loovutada ID. Sammuga ID. Me läheme võimaldab kasutajatel siduda oma nime eriti kommentaar. Me läheme mõned sisu läheb koos selle, teksti sisu. Ja siin me läheme tegema, on hoopis midagi muud. Me läheme luua täisarv seda nimetatakse post_id mis läheb tähendama mida postitus eriti kommentaar käib. Lisaks me tegelikult läheb seatud Võõrvõti piirang seda. Nii MySQL rakendavad seda. Me ei püüa määrata kommentaar number 5 postitamiseks 5000, kui me ei ole oli 5000 postitust peal. Mida me siin teeme, teeme välismaa post_id läheb olla seotud ID väli tabelist ametikohta. Ja me tegelikult midagi muidu kasulik, kas onDelete. Nii et kui me kustutada lisada andmebaasist, et me tahame kaskaadi kustutab kommenteerimiseks samuti. Sest see ei ole väga kasulik et meil kommentaarid postitused et ei ole olemas. Ja lõpuks, nagu enne, me oleme läheb seatud ajatemplite selle kohta. Ja nagu enne, me ei kavatse olla vastupidine ränne olla kukutades kommentaare tabelis. Nüüd, kui me läheme tagasi siin me läheme käivitada ränne, käsityöläispäivät kantakse üle. Ja nüüd on kohaldatud käesoleva rände, et me lihtsalt loodud. Nii et kui me pilk phpMyAdmin, me tegelikult nüüd on kommentaare tabel, mis on struktuuri, et me lihtsalt täpsustada. Nii nagu enne, me oleme kavatse luua uue mudeli abstraktne SQL tabel et me lihtsalt loodud. Nii saab Lisa uus fail. Me läheme seda kutsuda comment.php. Ja see on tegelikult saab olema üsna lihtne koos väikese muutusega sellest, mida me varem. Nii klassi Kommentaar ulatub kõnekas. Ja mida me ei kavatse teha siin on määratleda funktsioon, mis on suhted teiste mudelitega. Nii et me lähed on post funktsiooni Siit mis tagastab selle suhte. Nii et me täpsustada, et see kuulub postitada, öeldes, et on olemas üks postitus et see kommentaar kuulub. See on tegelikult olla kapitali P mudeli. Ja nüüd lihtsalt teiselt flip pool, peame ütlema, et kuule. Postitused on kommentaare. Mida me teeme on määratleda avaliku funktsiooni kommentaare. Ja siin on tagastatud see on palju Kommentaar. Nüüd võluväel, kui meil on post, saame atribuut kommentaare ja see saab asustada seda teabe andmebaasist. Nii saab tegelikult läbida ja lisada uus funktsioon meie arvates faili et saaksime ette manada ja luua kommentaare. Nii et me läheme määratleda uue osa. Lihtsalt asetage see horisontaalse reegel. Jaos id = "märkused". Mida me teeme Siin on, nagu enne, itereerima läbi kõik kommentaarid. Nii tegelikult, kuidas me seda teha on, nagu ma mainisin, üsna maagiline. Me postitada kommentaar. Ja siis me saame seda teha iga loop ületab iga kommentaarid. Ja mida me ei kavatse teha on div class kommentaar, ja me ei kavatse tegelikult välja printida selle kommentaari. Nii näitab, et hei, kommentaar name-- isik kes postitas selle comment-- ütleb dot dot dot. Me läheme panna see plokk tsiteerida, vaid teha seda vaadata kena. Ja siis kommenteerimiseks sisu tsitaat. Ja foreach. Nüüd see saab loop läbi kõik kommentaarid mis on seotud iga postitused ja näidata kõik need kommentaarid. Ma lähen lisada teise osa alla siin, mis võimaldab meil lisada kommentaari. Nii h3 klassi. Pane oma tiitlit. Lisa kommentaar. Ja me ei kavatse määrata uue vormi. Nii nagu enne, me oleme kavatse seda teha vormis tegutsemist. Ja siin, uus meede on meil läheb defineerida uue kontrolleri võimaldab meil vastata postitada Taotluste luua kommentaare. Nii URL :: liinil createComment. Ma lähen edasi parameetri siin. ID ametikoha et loome kommenteerida. Ja seejärel meetod käesoleva vormi saab olema ametikohale. Nüüd me ei kavatse lisada kaks valdkonda, vormi grupp. See saab olema sisend Nimi "nimi" ja class = "vormi kontrolli" type = "text", ja kohatäide = "Sinu nimi." Oleme ka läheb määratleda teises vormis valdkonnas, mis läheb tekst ala kui olime enne. Just nagu enne, nimetame seda sisu. Class = "vormi kontrollida." Kohatäitja = "Kirjuta siia." Ja just nii, et me saab tegelikult esitada see, esitama tüübi ja class = "btn btn-algkooli." Sulgege kujul. Sulge see tegevus. Nüüd, kui me värskendage seda lehekülge, kus meil on, ütleme, eriti post. Meil on taaskäivitada server. PHP käsityöläispäivät teenida. Käivitage see. Meil on määratleda liinil. Aga nüüd, võtame lihtsalt see välja nii, et me saame tegelikult näitab teile milline leht välja näeb, ja siis me tegelikult luua sellel liinil. Niisiis, hei. Meil on see uus vorm siin nii et me saame luua kommentaare. Nii saab tegelikult määrata funktsiooni kontroller nii et me saame lisada kommentaare. Lähme tagasi. Ja jooksul blogcontroller.php, mida me teeme on luua uus funktsioon nimetatakse luua kommentaari. Avalik funktsioon createComment. See saab olema üks parameeter, ID postitused et me kommenteerides. Ja nagu enne, me oleme läheb kõigepealt saada ametikohale. Nii postitada, findOrfail id. Hiljem me läheme luua uus kommentaar. Nii kommenteerimiseks = uus kommentaar. Kommentaar name = sisend :: saada nime. Kommentaar content = sama uus liin arvesse vaheaegadega sisend :: saada sisu. Ja lõpuks, me ei kavatse olla siduda see kommentaar oma ametikoha. Nii et me ei kavatse kasutada Selle funktsiooni kommentaare mis võimaldab meil säästa seda suhet. Nüüd see kommentaar on automaatselt post ID. Me võiksime seda määrata ka käsitsi, kuid see on rohkem kergesti loetav niipalju kui funktsioon läheb. Ja pärast me sooritame see, mida me tahame teha on suunata kasutaja määratud trassi mööda viewPost koos massiivi parameeter post ID. Ja nüüd nii, et see tegelikult funktsioone, peame määratlema seda teed. Marsruudi :: ametikohale. Ja nüüd me lähme kutsume seda post kärpida ID kaldkriipsuga kommentaari. Array kasutab uut funktsiooni et me lihtsalt loodud. BlogController. CreateComment kui createComment. Hea. Nüüd loodan, et kui me värskendage seda lehekülge ja lisada kommentaar, ütleme, David Humala. "Loodan, et see toimib." Edasta. Me tegelikult on seda kommenteerida blogi postitus. Külm. Nüüd on meil üsna funktsionaalne blogi postitus. Me lihtsalt läheb lisada paar tweaks nii et meil on veel mõned kasulikud teavet nende postitused. Kui me läheme tagasi esilehel, meil ei ole mõtet kui palju kommentaare on Igal neist ametikohtadest. Mida me tegelikult toimub teha on sees meie mudel, määratleda abistaja funktsiooni, mis võimaldab meil määrata, mitu kommentaare mis lähevad konkreetsele ametikohale. Nii et me läheme luua abistaja funktsiooni. Avalik funktsioon. GetNumCommentsStr. Nii string, mis määrab number Kommentaaride et minna koos sellega. Ja see, mida me teeme on öelda et num = see Kommentaarid loota. Nii et me läheme loota kommentaaride arvu. Ja kui see number võrdub 1, me oleme lihtsalt läheb tagasi 1 kommentaar. Ja siis teisiti, me tahame tagasi ahel num ja kommentaarid, nii saame pluralization õige. Just seda ühe hinnapakkumise. Üks kommentaar. Ja nüüd me saame kasutada seda funktsiooni otseselt sees meie arvates. Kui me läheme tagasi osaline postitusi, mis me lõime, nüüd tahame tegelikult näidata mitmeid märkusi. Mida me saame teha, on post, kasutage seda funktsiooni et me lihtsalt loodud näidata mitmeid märkusi. Nii et kui me nüüd värskendada, siis ei, tegelikult ekraanil number kommentaare mis lähevad koos sellega. Kui me tahame olla uhke, kui te tegelikult vaadata jaotus koodi me saame tegelikult siduda Selle kommentaaridele. Kui te mäletate, me määratleda seisukohal, et see on lõik ID kommentaare. Nii et kui me tegelikult tahtis ühendada otse kommentaarid lõik, mis me teeks siin href URL marsruudi viewPost. Pass massiivi ID post ID. Ja siis me tahame minna konkreetselt kommentaarid lõik. Siin olgem sulgeda tag. Nüüd, kui me värskendage seda lehekülg, me klõpsate seda. Me läheme otse kommentaarid lõik. Kui meil oleks enam posti, saate tegelikult näha seda põrgatama alla. Aga märkad, et see on ei ülaosas lehel. Külm. Hea. Nii et on üsna lihtne näiteks midagi lihtsat mida saate teha koos Laravel. Aga sa võid märgata siin, et oleme teinud palju asju suhteliselt väike kogus koodi. Laravel võimaldab meil teha SQL päringuid kulisside taga. Ta teeb kanalisatsiooni meil kulisside taga. Võimaldab meil teha need suhted väga lihtsalt, ilma et meil oleks vaja teha mingit SQL liituda avaldused ühendada märkusi, mida ametikohta. Võimaldab meil seda teha pärandist malle nii et me saame määratleda need pesitsevate faile nii, et me ei korrates ennast, nagu siis, kui meil oli, et väljapaneku blogi postitusi et me ei pea kopeeri ja kleebi koodi. Ja siit saab ehitada järjest keerulisemaks rakendusi. Võite ette kujutada, kui me tahtis rakendada log-in, võib öelda, tuua kolmandale isikule raamistik, mis võimaldab meil seda teha. Seal on hunnik neid mis on tõesti, tõesti suur, et saab teha nagu, taasta parool. Ja see saadame Teile reset parool email. Me ei saa rakendada loata nii et ma ei saa luua post, aga keegi teine ​​ei saa seda muuta. Me ei saa rakendada funktsionaalsuse kustutada postitusi. Aga näed siin, et meil on päris palju kõik algeline komponendid ehitada mõned tõesti, dünaamiline ja põnev web apps. Nii et ma arvan, et me oleme head. Kas teiega on küsimusi? Jah? SPEAKER 3: Kuidas te saada staatiline sisu? ERIC Ouyang: Static sisu. Nii nägid enne seda, kui meil oli see siin, see skeem sisu eesmärgiga teha, meil oli see ilma selle massiivi hiljem. Blog.index, meil oli see lihtsalt staatiline fail. Nii et kui me ei liigu midagi mööda seda, see lihtsalt muuta HTML otse. Aga kui võtame selles assotsiatiivne massiivi postitused, mis on dünaamiliselt tõmmatakse andmebaasist me saab teha lehe dünaamiline. Külm. Muid küsimusi? SPEAKER 3: Kuidas võrrelda Laravel, et võib-olla mõned teised valikud? ERIC Ouyang: Sure. Jah. Nii Laravel on-- see on suur question-- üks paljudest võimalusi web raamistikku. Nii Ruby on Rails on üks, mis on populaarne. Usun Twitter varem rakendada Ruby on Rails. Ma arvan, et nad pole, sest sisse. Seal on veel üks nn FuelPHP. Nii Ruby on Rails kasutab Ruby keeles ja rakendab palju MVC stuff mida me näeme siin. FuelPHP on teine ​​PHP raamistik. Django on üks mu lemmikuid. See on web raamistikku Python. Nii saab kirjutada oma web app Python. Nii et ton neist võimalustest. Laravel, ma arvan, mida ja suur on minu lemmik õigus nüüd PHP lihtsalt sellepärast, Komponentide et me rääkisime varem. See on helilooja lubatud. See sisaldab tõesti ekspressiivne ORM süsteemi. Samuti on tõesti awesome templating keele, et mõned teised lihtsalt ei anna. Ja ränne. Migratsioon on fantastiline samuti. Cool? Awesome. Noh, tänu nii palju vaadates seda seminar, ja õnne oma lõpliku projekti.