[Muzikos grojimo] ERIC Ouyang: Ei, visi. Sveiki. Tai pastatas Dinaminis Web Apps "su Laravel. Mano vardas yra Erikas Ouyang. Esu antrakursis studijuoja socialines studijas su kompiuterių mokslo vidurinio, ir aš gyvename Adams Namas čia Harvarde. Taigi Laravel, jos labiausiai branduolys, yra MVC Web App "sistemą. Taigi, ką jūs vaikinai buvo padaryti su CS50 Finansų, Laravel yra sistema, kuri leidžia jums kurti dinaminius interneto programų. Taigi jūs galite galvoti apie tai, tam tikra prasme kaip į tai, kas tipo išplėtimo jūs buvote daro CS50 Finansai, bet sistema, kuri yra Daug labiau patikimas, daug daugiau elegantiškas tam tikra prasme, ir suteikia daug funkcionalumas už jus statyti gana sudėtinga interneto programų. Taigi eikime per kai iš pagrindinių funkcijų, ir tada mes pasinerti į pavyzdys kuriant dienoraštį Taikymas Laravel. Taigi vienas iš pirmųjų dalykų, kad atskiria jį nuo MVC tipo darbo kad jūs veikėte su CS50 tai apima ORM variklį. Taigi ORM reiškia objektą relacyjne. Taigi tai leidžia jums sukurti abstrakcijos sluoksnis tarp duomenų bazėje ir jūsų valdikliai. Taigi, priešingai nei CS50 finansus, jei Jūs tiesiogiai atlikti užklausas, ORM sluoksnis leidžia jums abstraktus, kad toli ir sukurti modeliai, kurie yra daug galingesnė nei jūs galite tiesiogiai su SQL užklausomis. Kitas dalykas, kad tikrai naudinga yra paveldimų šablonai. Taigi, jūs pastebėsite, į CS50 Finansų, jūs galų gale perrašyti daug dalykų, kur vietų, kur galėtų potencialiai pakartotinai dalykų, jūs negalėsite. Taigi čia Laravel, galite naudoti tai, kas žinomas kaip ašmenų šablono varikliu sukurti pagrindinį išdėstymą. Ir iš ten, galite paveldėti taip, kad sub-šablonai gali iš tikrųjų apima elementus per kad didesnės bazinės šabloną. Migracijos. Taigi, tai yra gana standartinės komplektacijos įranga dauguma šiuolaikinių interneto programų sistemas. Taigi tai leidžia atstovauti duomenų bazės pokyčiai kodą. Taigi be ketinate pasakyti, phpMyAdmin, jūs iš tikrųjų galite sukurti šias migraciją kur atstovauti duomenų bazę schemos pokyčiai kodas tiesiogiai. Ir tai leidžia to-- ypač jei turite kelis žmones, dirbančius dėl to paties interneto application-- sekti šiuos pokyčius, pasakyti GitHub ar kitu saugykloje. Taigi tai tikrai naudinga ir mažina poreikį , tarkim, perduoti aplink SQL sąvartynų aikštelė. Ir, pagaliau, kompozitorius yra kažkas tikrai, tikrai naudinga kuri leidžia jums naudoti kitas Liaudies kodas daryti awesome dalykų. Taigi Laravel s struktūra keletas kompozitorius paketai. Taigi sako, jei norite pareikšti į autentifikavimo paketo arba, jei norite pareikšti kai rūšiuoti generatorius scenarijų arba admin sąsaja, galite prijungti ir žaisti tie komponentai, kurių kompozitorius. Taigi pradėkime. Bet iš jūsų klausimai vaikinai, kol mes pradėti? Nėra klausimų? Nemokama. Taigi, pirmas žingsnis yra diegiant kompozitorius. Taigi Kompozitorius leidžia jums valdyti šiuos priklausomybes, ar tai Laravel sistema ar kita trečioji šalis pratęsimo. Pirmoji komanda leidžia jums atsisiūsti Kompozitorius, ir antra komanda leidžia Jums perkelti jį į savo vietos bin katalogą taip, kad jūs galite paleisti Kompozitorius tiesiogiai per terminalą. Po to, eiti į priekį ir sukurti naują Laravel projektą. Mes iš tikrųjų ketiname naudoti tam tikras pavyzdys kodą kad aš kartu sudėjus sukurti šį dienoraštį. Bet jei jūs nuo įbrėžimams, jūs naudokite šią komandą čia, kompozitorius sukurti-projektą, laravel velniop laravel, tada savo projekto pavadinimas. Ir tai bus visi paskirstymo kodas pradėti naują Laravel projektą. Taigi jūsų CS50 galutinių projektų, jums tikriausiai norite naudoti šią komandą. Tačiau mes ketiname pradėti tai. Taigi, kai jūs padaryti kad jūs ketinate gauti gana plati skaičius failų į blog50. Taigi tegul tiesiog eiti per kai kurie iš šių komponentų. Jūs pastebėsite, šiuo maršrutu katalogas yra programa aplanką. Viduje app katalogą, ten pora naudingų aplankus. Pažymėtina, kad pradėti su tai config aplanką. Taigi, šis nustato, kaip Jūsų interneto paraišką ketina, tarkim, patvirtinti žmonės arba pinigų dalykų ar prisijungti prie duomenų bazės. Ir kas iš tikrųjų naudinga tai, kad Laravel leidžia jums nustatyti skirtingi plėtros aplinkoje. Taigi, ką mes padarėme čia yra, jei mes einame pagal vietinį aplanką, ten database.php failą. Ir jūs pastebėsite, kad čia mes įsteigti MySQL jungtis, kad leidžia asmenims prisijungti prie MySQL serverio ŠTAI tiesiai ant CS50 prietaisu. Ir mes jungiantis prie duomenų bazės kad aš įsteigti vadinamas Blog50. Taigi tegul iš tikrųjų eiti į priekį ir paleisti darbinį versiją ši, tik gauti, kas prasminga programa, kuri mes pastatas atrodo. Taigi turiu kopiją tai Blog50 baigtas. Taigi Laravel tikrųjų buvo pastatyta serveryje kad jūs galite paleisti tiesiai iš komandinės eilutės. Taigi, šis yra panašus į PSet anksčiau, kai jūs iš tikrųjų sukurti savo serverį C Taigi jie vienas pastatytas taip, kad jūs galite paleisti savo Laravel programas tiesiai iš komandinės eilutės. Taigi, jei mes darome php amatininkas tarnauti, tai pradės plėtros serverį dėl uosto 8000. Taigi, jei mes einame į vietos priimančiosios 8000, jūs pastebėsite, kad, ei. Mes turime dienoraštį ir veikia. Taigi Laravel čia generuoja pirmame puslapyje mūsų interneto dienoraštyje. Labai paprasta programa. Bet yra pora tikrai madingas savybės kad ji suteikia po gaubtu. Taigi dienoraštį taikomosios programos paprasta. Jei mes norėjome sukurti pranešimą, mes galime spustelėkite tą mygtuką. Mes galime pasakyti: "Ei, visiems. Tai tikrai įdomus Seminaras "pavyzdžiui. Ir parašyti kažką žemyn čia. Tekstas čia. Jei mes spustelėkite Pateikti, jums pastebėsite, kad mūsų naują dienoraštį pašto buvo įtraukta į Front Page dienoraščio. Jei mes einame atgal čia, jūs pastebėsite, kad būta tam tikrų jau komentarai į dienoraštį. Taigi, jei mes slinkti žemyn, jūs pastebėti, kad Jonatanas Tan sako kad jis buvo labai suintrigavo šio posto. Taigi mes pereiti į tai, kaip objektas relacyjne leidžia jums reikia padaryti šiuos santykius gana vientisas būdas taip pat. Nemokama. Bet apie funkcionalumą klausimai ką mes ketiname statyti? Nemokama. Taigi pradėkime iš tikrųjų su sukurti duomenų bazės lenteles. Taigi priminti, kad CS50 Finansų jus sudėti lentelę naudotojams taip pat už atsargos savo portfelį. Taigi, kaip jau minėta anksčiau, ką mes naudojame Laravel yra kažkas vadinamas migracijos. Taigi, jei mes einame atgal į paskirstymo kodas čia pirmoji komanda, kad yra naudinga, kad Laravel suteikia jums tai migruoti komanda. Taigi, mes galime padaryti php amatininkas migruoja: padaryti. Taigi, tai leidžia sukurti migraciją. Ir tada mes norime sukurti migraciją vadinamas create_posts_table, kuris vyksta būti ten, kur mes ketiname būti saugoti savo dienoraštyje. Ir jūs pastebėsite, kad čia jis veikia per tam tikrą kodą, kad iš tikrųjų generuoja failą laiko atžymos ant jo. Taigi, jei mes einame ir pažvelgti duomenų bazėje pastebėsime pagal migracijos kad jis sukūrė tuščias failas mums, turi Standartiniai kodą pavadinimas kad mes nurodyta, kurti pranešimus lentelę. Ir jis turi dvi funkcijas į jį. Iki, ką mes norime paleisti kai migracija yra taikomas į duomenų bazę. Ir žemyn, ką mes ketiname daryti kai mes norime pakeisti į migraciją. Taigi čia pradėkime iš su rašau šį migracija. Taigi ten naudinga klasė į Laravel vadinamas struktūrą. Taigi mes ketiname paleisti schema :: sukurti. Ir mes ketiname sukurti stalo vadinamas pranešimus. Ir čia mes naudojame tai naudojant funkciją. Ir per čia, mes ketiname realiai nurodyti mūsų lentelės turinį. Mes ketiname sukurti ID kuris yra automatinis pokyčio. Be to, mes ketiname sukurti lauką, atstovauja mūsų bloge titulą. Mes taip pat ketiname sukurti lauką saugoti mūsų bloge tekstą. Ir, pagaliau, mes ketiname saugoti tam tikrus laiko žymes , kai mūsų įrašas buvo sukurtas ir, kai jis buvo atnaujinama. Ir žemyn, tai gana paprasta. Visi mes norime padaryti, tai lašas stalo, kad mes sukūrėme. Didysis. Turite klausimų? Taigi dabar, jei mes einame į priekį and-- tikrųjų, vietinio kompiuterio, leiskite man ištrinti tai, ką mes turėjome anksčiau. Eiti į duomenų bazes. Aš ruošiuosi ištrinti, ką mes turėjome anksčiau. Drop tai ir sukurti nauja duomenų bazė Blog50. Taigi, dabar, kas stebuklinga dalis yra čia, kad mes gali taikyti šiuos migraciją tiesiogiai į duomenų bazę, naudojant komandinę eilutę įrankis. Taigi, jei mes darome Php amatininkas migruoti, Jūs pastebėsite, kad, ei. Jis sukūrė migracijos lentelę, kuri mes pažvelgti į šiek tiek, ir jis taikė šį pirmąjį migracija. Taigi, mes pažvelgti Blog50, jūs pastebėsite, kad jis sukūrė du stalus už mus. Pirmiausia tai yra migracija stalo. Taigi, jei mes naršyti, jūs pastebėsite, kad Ši lentelė yra gana paprasta. Jis tik pasakė, kad, ei. Mes taikyti šią raidą. Mes einame atgal ir pažvelgti į žinutes. Jūs pastebėsite, kad struktūros yra būtent tai, ką mes paprašė ją. Mes turime auto-incrementing ID. Mes turime laikymui eilutę pavadinimas ir teksto laukas laikymui turinį. Didysis. Nemokama. Bet apie migracijos klausimai darbas, kaip mes galime juos taikyti? Nėra? Nemokama. Taigi dabar mes ketiname eiti į priekį ir iš tikrųjų sukurti modelį. Taigi, mes norime sukurti pranešimus modelį, saugo savo duomenų bazės abstrakcijos. Taigi, o ne daro MySQL užklausų tiesiogiai, mes ketiname sukurti. Taigi, mes turime sukurti aplanko čia vadinamų modelių. Ir viduje čia mes ketiname sukurti failą pavadinimu post.php. Viduje šio PHP failą, mes ketiname sukurti klasė pašto kuri tęsiasi iškalbingas. Iškalbingas yra ORM vardas variklis, kuris suteikia Laravel. Ir čia mes galime tikėtis, kad jūs iš tikrųjų reikia rašyti tam tikrą kodą. Mes ketiname rašyti kai pagalbininkas funkcijos vėliau. Bet iš dėžutės, tai jau atpažinti, kas yra duomenų bazėje ir mes galime pasiekti, tarkim, tekstą mūsų bloge ar pavadinimą, ir kurti stuff tiesiogiai gana daug ne kodas kokia. Štai vienas iš magiškų komponentų. Ir vėjas, kai šios klasės yra daugiau visaverte, mes taip pat informaciją apie tai, tai susiję su, todėl komentarus. Taip pat sukurti funkciją todėl mes galime iš tikrųjų tiesiogiai gauti URL nuo bloge puslapyje. Nemokama. Bet apie tai klausimai? Ne. Nemokama. Taigi, dabar, kai mes turime pavyzdį, mes norite sukurti valdiklį, kad yra sugebėti sąveikauti su šiais modeliais, ir vėliau duomenų bazė. Taigi, jei mes ne išvaizda BlogController, jums pastebėsite, kad tai nėra kiek čia dabar. Viskas yra yra indekso funkcija kuris generuoja namų puslapį, bet be nieko ten rodyti dar. Taigi pirmą funkcija kad mes ketiname sukurti yra vienas, kad leidžia mus sukurti dienoraštyje. Taigi mes ketiname paskelbti Nauja funkcija vadinama newPost. Ir viduje čia tiesiog, mes ketiname nustatyti šio puslapio išdėstymą būti padaryti versiją, jei pamenate iš CS50, Šio šablono vadinamas blog.new, kuris mes ketiname sukurti ir trupučiu. Jūs pastebėsite, čia on-line šešių, kad mes nurodyta šio kintamojo, išdėstymą. Ir jei mes pažvelgsime tuo Peržiūrėta aplanką, yra maketai aplanką, kuris apima labai paprastą HTML failą. Ir dėmesį, jūs pastebėsite, kad mes turime šią pakuotę čia, kad duoda turinį. Taigi viduje mūsų šabloną ką mes ketiname daryti yra sukurti tai, kas vyksta, kad būtų pakeisti tiesiogiai per šį maketą. Taigi mes sakėme, kad norime padaryti Šablonas vadinamas blog.new. Bet viduje Dienoraštis, ten dar šis naujas modelis. Taigi mes ketiname sukurti failas, vadinamas new.blade.php. Tai sako, kad Laravel tai PHP failas turi būti suteiktas su ašmenys šablonų variklis. Taigi, tai yra gana paprastas failas. Tai bus pagal kurį formos mes iš tikrųjų pridėti bloge. Taigi magija čia iš paveldėjimas yra tai, kad, ei. Norime patikslinti, kad skyriuje, turinys skyrius čia, kuri yra apibrėžta ikisection irstop. Taigi, kas yra tarp čia ketina būti pakeistas į pagrindinio maketą. O čia tai, ką norime padaryti, tai labai paprastai sukurti naują HTML failą. Tegul tik pridėti greitai titulą. Pridėti dienoraštyje. Ir joje, mes ketina sukurti formą. Ši forma ketina turėti veiksmų. Ir tai bus kažkas kad mes pakeisti vėliau, ir mes pamatyti, kaip maršruto telpa į čia. Bet mes tik ketina apibrėžti dabar kad šis eina į URL su maršrutu nuo createPost. Ir tai vyksta turėti metodą postą. Per čia, mes ketiname turi du laukus. Div class = "forma, grupė". Mes naudodami paleisties CSS biblioteka mielai teikia Twitter. Taigi mes ketiname sukurti du iš jų. Taigi šis pirmasis įvestis bus pavadinimas. Taigi įėjimas name = "pavadinimas". Class = "formcontrol". Tipas = "tekstas". Aš ruošiuosi pridėti vietos rezervavimo = "Pavadinimas". Ir tada antrasis yra bus teksto srityje. Name = "turinys". Class = "formcontrol". Ir vietos rezervavimo ženklas = "Rašyk čia". Čia mes eiti. Galiausiai, mes ketiname pridėti greitai mygtuką "Siųsti". Tipas = "submit" class = "BTN btn ugdymo". Taigi visa tai yra funkcijos bootstrapu taip , kad tai gali būti nustatytos tokiu būdu, kad tai grobis naudotojui, o ne plika HTML. Taigi mes apibrėžti valdiklio čia. Mes apibrėžta labai paprastą vaizdą. Bet kas trūksta jungiamojo audinio. Taigi šiuo metu, Laravel neturi jokios idėjos, kaip mes ketiname realiai naudotis šia valdiklį. Taigi, tai yra numatyta failas, vadinamas routes.php. Ir dabar, mes turime vieną maršrutą. Kuris yra, kai mes einame į namų kelias šioje svetainėje, jis ketina padaryti puslapis valdiklis. Taigi čia, ką mes turime padaryti, tai įdiegti naujas maršrutas mums sukurti postą. Taigi mes naudojame šį metodą gauti, kuriame nurodoma, , kad, kai vartotojas bando gauti šią page-- specialiai pašto velniop naują page-- ką mes ketiname daryti yra naudoti valdiklį, vadinamą BlogController naujas pranešimas. Vienas, kad mes ką tik sukūrėte. Ir tada mes ketiname pseudonimas kaip newPost. Mes ketiname sukurti kitą funkcija truputį. Bet kas čia pagal raktas "kaip" yra tai, ką mes galime pakeisti per mūsų Blade šablonai. Taigi dabar, tegul iš tikrųjų taip pat sako, maršrutą. Taigi mes taip pat ketiname sukurti kontrolerį kad mes galime sukurti šiuos pranešimus. Taigi, jei vartotojas pranešimų į puslapio paštu slash naujas, ką mes ketiname daryti yra naudojamas valdiklis, kad mes ketiname sukurti netrukus vadinamas BlogController ne createPost. Ir mes ketiname alias tai su taip createPost. Nemokama. Turite klausimų? Nemokama. Taigi leiskite veikti, ką mes iki šiol. Taigi, jei mes darome php amatininkas tarnauti, matysime daug klaidų. Taigi atrodo, kad mes turime sintaksės klaida maršrutuose linijos 27. Ak. Trūksta kabliataškį. Taigi, jei mes einame į 8000, pamatysite dar nieko čia. Taigi tai yra numatytasis pagrindinis puslapis. Bet jei mes einame, kad galėtumėte velniop naują, ei. Tai bus formą, kad mes ką tik sukūrėte. Dabar, mes turime ne įgyvendino funkcionalumą kada mes paspausti mygtuką "Siųsti". Taigi, jei mes paspauskite ant Pateikti mygtuką, jis ketina paleisti klaidą. Tačiau mes ketiname kodas, dabar, būtent tai, ką mes noriu daryti, kai vartotojas pateikia šią formą. Taigi leiskite tai padaryti. Grįžti į kontroleriai failą. Ką mes ketiname padaryti, tai įgyvendinti šią naują funkciją kuri leidžia mums sukurti postą. Pripažinti naują funkciją. Visuomenės funkcija createPost. Ir ši funkcija bus šiek tiek daugiau sudėtinga nei mes turėjome anksčiau. Bet jūs pamatysite, kad čia mes ne vyksta iš tikrųjų rašyti bet SQL. ORM, Iškalbingas ORM, ketina leisti mums tai padaryti kai būdų labiau elegantiškas būdas. Taigi mes ketiname sukurti naują postą. Ir čia mes instancija naują objektą nuo modelio, mes tiesiog sukurta, post modelis. Ir tai, ką mes ketiname daryti yra nustatytas pavadinimas atributas šio naudojant kažką kad mes gauti iš serverio. Taigi, šis yra panašus į tai, kas mes turėjome anksčiau CS50 Finansų kur mes padaryti, naudojant super Pasaulinis Pranešimo ieško pavadinimą. Taigi Laravel suteikia šiek sanitarijos ir Papuošalą naudojant šią pagalbininkas funkciją. Taigi, norėtume pasinaudoti šia vietoj Šios labai pagrindinio žaliavų forma nuo PHP. Ir tada, ką mes ketiname daryti yra nustatytas jo turinį įvesties gauti turinį. Mes iš tikrųjų ketiname wrap tai yra naudinga funkcija kad PHP suteikia vadinamas nl2br, kuris Pasirodo naujas linijas, nacionalinės, į PR, pertraukų, taip, kad mes iš tikrųjų gali turėti skirtingi punktai joje. Ir pagaliau, ką mes ketiname reikia padaryti, tai išsaugoti šį postą. Taigi mes vadiname funkcija išsaugoti šį modelį. Mes ketiname išsaugoti postą. Ir pagaliau, ką mes ketiname daryti yra nukreipti vartotoją specialiai į maršrutą, kuri mes ketiname sukurti netrukus slapyvardį iki viewPost. Ir mes ketiname pereiti į argumentus ID, būdamas šio naujo posto id. Didysis. Taigi dabar, jei mes iš tikrųjų eiti ir paleisti tai. Mes ketiname pridėti naują postą. Tarkime, tai seminaras 50. Ir sako, tikrai. ASDL. Koks skirtumas. Kai turinį rūšiuoti. Ir pateikti ją. Ir mes pastebėsite, kad ei. maršrutai nėra apibrėžta. Bet jei mes pažvelgsime phpMyAdmin išvaizdą ir surasti, ar ne mūsų funkcija nebuvo nieko. Pažvelkite Blog50 žinutes. Mes pastebime, kad, ei. Tiesą sakant, mes tiesiog sukurti tą dienoraštį rašyti su laiko žymes, kaip nurodyta. Taigi dabar grįžkime ir iš tikrųjų sukurti tai kitas funkcijas mūsų valdytojas, specialiai viewPost valdiklis. Taigi visuomenės funkcija viewPost. Taigi čia, ką mes darysime, o ne turėti tuščių skliausteliuose, mes norime perduoti į ID pašto, kad mes sukurti. Ir iš čia, ką mes ketiname daryti iš tikrųjų užklausą duomenų bazę už jį. Taigi, jei mes rašyti, ten funkcija vadinama Ieškoti kuri leidžia mums užklausą jį ID. Tiksliau, iš tiesų, mes ketiname naudoti alternatyvų variantą tai vadinama Rasti arba Fail, kuri leidžia mums mesti iš šią funkciją, mesti Jei id išimtis mes pereiname į neegzistuoja. Ir tada mes ketiname daryti kažką panašus į tai, ką mes padarėme anksčiau kur mes nustatyti turinį Šio puslapio, kad būtų lydyti versija šios naujos nuomone kuri mes ketiname sukurti, blog.view. Ir mes ketiname pereiti į it-- tiesiog patinka į CS50 padaryti function-- kintamųjų žodyną. Šios masyvą raktai tapo kintamieji per šabloną. Taigi mes ketiname daryti Rašyti. Taigi perduoti netiesiogiai postą, kad mes užklausti iš duomenų bazės. , Dabar, ką mes ketiname padaryti, tai sukurti šį požiūrį taip, kad mes iš tikrųjų galite peržiūrėti Dienoraščio pranešimų, kad mes pastatytas. Taigi mes ketiname sukurti failas, vadinamas view.blade.php. Taigi viduje šią formą, ką mes ketiname daryti yra sudedama kartu paprastas puslapis, leidžia mums parodyti turinį. Taigi mes skyrių, tai prieš turinį. Stop. Ir ką mes ketiname padaryti per čia rašyti šiek tiek HTML rodyti šį puslapį. Taigi mes ketiname apvyniokite jį su išgalvotas Naujas HTML5 elementas vadinamas straipsnį. Ir čia mes ketiname turėti antraštę kur mes ketiname tiesiog H1, kuri apima pašto titulą. Taigi čia, jei pažvelgsime į tai dvigubai garbanotas petnešomis žymėjimas, tai darys esmės PHP echo pašto titulą. Taigi tai naudinga sutrumpinimas kad Laravel suteikia mums. Taigi mes ketiname naudoti ši aiškinamoji pastaba vietoj. Ir čia mes ketiname taip pat atsispausdinti jį turinį. Ir čia mes ketiname daryti pašto turinį. Ir žemyn apačioje, ką mes ketina padaryti, tai sukurti parašą. Ir į apačią, mes ketiname Pirmasis ekranas, kai šis buvo paskelbtas. Taigi tai buvo paskelbtas, sukurta. Ir Laravel naudoja tikrai gražus data biblioteka vadinama anglies. Taigi mes iš tikrųjų galime padaryti kažką, vadinamą difforHumans, kuri matėte anksčiau. Kai mes parašė. jis pasakys, kaip prieš penkias sekundes. Taigi tai tikrai gražus funkcionalumas Laravel. Ir, pagaliau, mes ketiname uždaryti šį parašą. Taigi dabar, jei mes einame atgal į Pagrindinis puslapis mes ketiname matyti dar nieko, nes čia mes ne koduojami iki namų puslapį. Bet jei mes einame, kad galėtumėte velniop vieną, mes ketiname pamatyti išimtis. Ar kas nors žino, kodėl matome išimtį? Ką mes trūksta? Any ideas? Taigi, kas tai padarė ir mes anksčiau už mus tikrai nustatyti, kaip mes turime ypatingos valdikliai? GARSIAKALBIS 1: maršrutas? ERIC Ouyang: Taip. Taigi, mes vis dar turime apibrėžti maršrutą. Taigi, mes grįžti čia routes.php. Jūs pastebėsite, kad mes ne iš tikrųjų apibrėžta kaip mes ketiname gauti į šį reguliatoriumi. Taigi dabar mes ketiname apibrėžti šį maršrutą. Tai gana paprasta, panašus į tai, ką mes padarėme anksčiau. Bet ką mes ketiname pastebėsite čia kad mes ketiname turėti vietos rezervavimo ženklą. Taigi, jei mes darome route.get velniop pašto ID. Taigi ID dabar yra tai, kas vyksta būti perduotas į reguliatoriumi. Tai ketinate naudoti valdiklis, mes tiesiog sukurta, BlogController ne viewPost. Ir mes ketiname slapyvardis tai kaip viewPost. Didysis. Taigi dabar mes ketiname sukurti šį maršrutą. Taigi dabar, jei mes einame čia ir perkraukite šį puslapį, mes iš tikrųjų tai turime naują tinklaraščio įrašą. Taigi tai yra tai, ką mes sukūrėme anksčiau. Labai paprastas puslapis, bet rodo dienoraštyje, kad mes ką tik sukūrėte. Nemokama. Ir jei mes iš tikrųjų eiti per visa procesas kuriant naują tinklaraščio įrašą, pastebėsime, kad viskas nukreipimus tinkamai. Jei aš sakau, "Labas. Aš Jonathanas Tan ". Pasakykite: "Tai yra mano dienoraštyje." Ir pateikti ją, tai sukurs ši nauja dienoraštyje su ID 2 kuri didinama nuo to, ką mes turėjome anksčiau ir rodo tinkamai. Nuostabus. Turite klausimų? Taip? SPEAKER 2: Ar Laravel rankena sanitarijos ir viskas už jus? ERIC Ouyang: Taip. Taigi, kai mes matėme anksčiau, kai mes padarėme įėjimo dvitaškis dvitaškis gauti, kad sanitates jokios SQL injekcijos ir Papuošalą kad mes galbūt norėsite atlikti, jei mes piktybinis vartotojas internetinėje svetainėje. Taigi Laravel rankenos daug to užkulisiuose. Geras klausimas. Taigi leiskite pažvelgti į namų puslapį. Taigi, jei mes pirmą kartą grįžti prie valdiklis pagrindiniame puslapyje, Jūs pastebėsite, kad ji nedaro daug čia. Jūs pastebėsite, kad mes ne perduoti į šį valdiklį nieko ypač naudinga. Tai tiesiog šis rodiklis failą. Taigi leiskite pereiti į tai ką naudinga. Ir būtent mes esame ketina pereiti į žinutes. Ir Laravel leidžia mums padaryti pranešimą visiems, kurie leis mums gauti visus pranešimus. Dabar, jei mes einame atgal į index.php, pamatysite, ei. Nieko dar čia. Bet ką mes norime padaryti čia faktiškai pakartoti per, padaryti foreach ciklą per pranešimų, kad leidžia mums spausdinti žinutes. Taigi foreach pranešimų kaip paštu, ką mes norime padaryti yra išspausdinti turinį iš bloge. Tačiau vienas dalykas, jūs pastebėsite, kad yra mes iš tikrųjų parašė didžiąją dalį šio kodekso jau, kad view.blade.php. Taigi, ką mes ketiname daryti, iš tikrųjų yra naudoti gražią naudinga funkcija Blade ir atsižvelgiama šią bendrą kodą. Taigi mes einame čia. Mes ketiname imtis šio turinio čia, ir ką mes ketiname daryti yra sukurti naują aplanką. Tegul tik vadina jį partials. Ir čia mes ketiname sukurti post.blade.php. Taigi čia mes atsižvelgti dėmesį, kaip kuri norime parodyti šiuos pranešimus. O čia tai, ką mes padarysime, o ne realiai, kad HTML tiesiogiai, mes ketiname naudoti šią direktyvą vadinamas apima blog.partials.post. Ir tai, ką mes ketiname daryti čia yra pereiti į puslapio paštu. Taigi dabar, jei mes einame atgal čia, mes pastebėti, kad funkcijos yra dar pati. Bet dabar mes turime tai sudauginti iš kodo, šį HTML. Taigi, mes galime jį naudoti indeksą. Taigi čia, tai labai paprasta. Visi mes darome, yra įtraukti blog.partials.post ir masyvo. Ir kažkur prieš, mes Rašyti. Taigi dabar, jei mes einame atgal į Titulinis puslapis, matysime, kad, ei. Mes turime visi sąrašą Blog'ai, kad mes turėjome anksčiau. Mes galbūt norėsite pridėti šiek tiek "jei" sąlygos ir "kitur" sąlygos taip, kad, jei mes neturi nieko dienoraštyje, mes norime parodyti kažką naudinga. Kaip, ei. Nėra turinys dar į dienoraštį. Ir jei jus vaikinai tikrai pažvelgti platinimo kodą GitHub, pamatysite, kaip mes darome, kad pavyzdys. Nemokama. Turite klausimų? Taip. SPEAKER 2: Manau, tik esminis klausimas. Atgal į maršrutą. ERIC Ouyang: Taip. Jei mes pažvelgsime maršrutų išvaizdą. SPEAKER 2: Kur uses.blogcontroller ne sukurti pranešimą, ką tai nukreipti mums? ERIC Ouyang: Taip. Taip. SPEAKER 2: Arba kas that-- ERIC Ouyang: Taigi, pažvelgti, tarkim Pavyzdžiui, šis maršrutas čia. Pirmoji dalis yra tikrasis URL, vartotojas bus eiti. Ir tai masyvas čia masyvą, apibrėžia kaip mes norime turėti taikymas veiksmas, reaguojant į jį. Taigi naudoja yra valdiklis, funkcija, kad mes norite skambinti, kai vartotojas eina į šį URL. Taigi viewPost čia buvo funkcija, kad mes apibrėžti viduje nuo BlogController-- SPEAKER 2: matau. ERIC Ouyang: --so, kad mes iš tikrųjų gali tapti vaizdą, atlikti kai skaičiavimus, bendrauti su SQL duomenų bazės. SPEAKER 2: Gerai. ERIC Ouyang: Ir tada kitą dalis ", kaip" yra alias, kad mes naudojame. Taigi, jei pastebime, kai mes sukūrėme formą, Jūs pastebėsite, kad URL :: routecreatePost. Taigi pakaitalų tikrasis URL, kad mes ne sunku kodavimo juos, todėl mes galime jį pakeisti kai, tarkim, jei mes norėjome pervadinti. Vietoj pašto velniop naujas, mes norime padaryti, kaip, p velniop naują tik valyti iki mūsų URL bitų. Norime pakeisti jį vienoje vietoje, o nei per visus skirtingus failus. Nemokama. Tai gerai. Taigi dabar mes turime labai Pagrindinis dienoraštį platforma. Mes tikriausiai norite pridėti mygtuką, kad kad mes iš tikrųjų gali sukurti naujų pranešimų. Taigi, jei mes pažvelgsime tuo Layout Master, turime skyrių, pavadintą antraštė Teisė kad mes tik apibrėžta iki viršuje. Taigi, mes galime pridėti mygtukus iš antraštės viršuje. Taigi, jei mes einame į index.blade.php, iš tikrųjų padaryti, tai nustatyti, kas vyksta viduje čia. Taigi ši antraštė Teisė skyriuje, ką mes ketiname daryti yra įtraukti į mygtuką, norėdami pereiti prie URL apibrėžta maršrutu naujas pareigas. Tiesiog išvalyti jį ir padaryti jis gražus ir visi Bootstrap, mes ketiname padaryti tai pagal nutylėjimą "mygtuką. Tegul tik kad jis didelis įdomus. Ir viduje, mes galime įdėti kokį nors tekstą. Bet kas Bootstrap suteikia yra glyphicons. Taigi mes iš tikrųjų galime pridėti, kad gražus pieštukas, kad mes matėme anksčiau. Glyphicon. Glyphicon pieštuku. Taigi, tai leis mums įgyvendinti ikonoje vietoj teksto. Dabar, jei mes sustoti, tai bus apibrėžti šį skyrių. Ir, ei. Mes turime gražią mygtuką, kad nuorodos į mus tiesiogiai pridėti dienoraštyje puslapį. Taigi, mes turime gana paprastą dienoraštį. Mes galime pridėti stuff į jį. Bet ką mes paprastai tikimės iš dienoraščių yra komentuodamas. Taigi tai tikrai mums svarbu turėti, pasakyti, jei kas nors apsilanko svetainėje ir tikrai patinka postą, kad jie gali įsitraukti į diskusiją su kitais žmonėmis, kurie lankosi puslapyje. Taigi mes ketiname eiti ir sukurti nauja duomenų bazė stalas ir naujas modelis kad galėtume susieti komentarai ir žinutes. Taigi, pirmas žingsnis, kaip ir anksčiau, yra tai, kad mes turime paleisti migracija. Taigi, kaip ir anksčiau, mes darome PHP amatininkas migruoti: padaryti. Ir mes ketiname sukurti vieną vadinamas create_comments_table. Tai sukurs failą kad turi mūsų naują migracija. Ir mes ketiname, kaip anksčiau, nustatyti naują lentelę. Taigi schema :: sukurti stalo vadinamas komentarus. Ši funkcija čia. Ir viduje šioje lentelėje, ką mes ketiname daryti pirmą kartą, kaip ir anksčiau, priskirti ID. Žingsniais ID. Mes ketiname leisti vartotojams asocijuojasi jų pavadinimas su konkrečiu komentarą. Mes ketiname turėti tam tikrą turinį, eina kartu su šiuo, teksto turinį. O čia tai, ką mes ketiname tai yra kažkas kita. Mes ketiname sukurti sveikasis skaičius Tai vadinama POST_ID kuris ketina reikšti ką postą Ypač komentaras eina su. Be to, mes iš tikrųjų ketiname nustatyti užsienio kliūtį tai. Taigi MySQL įgyvendinti tai. Mes nebandome priskirti komentuoti skaičių 5 galėtumėte 5000, jei mes ne turėjo 5000 pranešimų apie jį. Taigi, ką mes darome čia mes darome užsienio POST_ID ketina būti susijęs su ID laukas nuo stalo žinutes. Ir mes iš tikrųjų ką nors padaryti kita naudinga yra onDelete. Taigi, jei mes ištrinti kai rašyti iš duomenų bazės, kad mes norime kaskados ištrina komentaruose taip pat. Kadangi tai nėra labai naudinga mums turėti pastabas dėl pranešimų kad neegzistuoja. Ir pagaliau, kaip ir anksčiau, mes ketina nustatyti laiko žymas apie tai. Ir kaip anksčiau, mes ketiname turi atvirkštinio migracija būti nuleisti komentarų lentelę. Taigi dabar, jei mes einame atgal čia, mes ketiname paleisti šią migraciją, amatininkas migruoti. Ir dabar jis taikomas šis migracija, kad mes ką tik sukūrėte. Taigi, jei mes pažvelgti phpMyAdmin, mes, tiesą sakant, dabar turi komentarai lentelę, kuri turi struktūra, mes tiesiog nurodyta. Taigi, kaip ir anksčiau, mes ketina sukurti naują modelį abstrakčios SQL lentelės kad mes ką tik sukūrėte. Taigi leiskite Įdėti naują failą. Mes ketiname jį vadiname comment.php. Ir tai yra iš tikrųjų bus gana paprasta su šiek tiek pokyčių nuo ko mes turėjome anksčiau. Taigi klasės Komentaras tęsiasi Iškalbingas. Ir ką mes ketiname padaryti čia yra apibrėžti funkcija, kuri yra santykiai su kitais modeliais. Taigi mes ketiname turėti pašto funkciją čia, kad grįžta šį ryšį. Taigi mes, nurodant, kad tai priklauso rašyti, sakydamas, kad yra vienas postas kad šis komentaras priklauso. Šis tikrųjų turi būti kapitalo P modelio. O dabar tik kita pasukt pusės, mes turime pasakyti, kad, ei. Pranešimai turite pastabų. Taigi, ką mes ketiname daryti, yra nustatyti viešųjų funkcijų komentarų. Ir čia yra grąžinamas Tai turi daug komentarą. Taigi, dabar stebuklingai, kai mes turime pranešimą, mes galime gauti atributų komentarų ir jis bus užpildyti jį su informacija iš duomenų bazės. Taigi leiskite tikrųjų eiti per ir pridėti naują funkciją mūsų vaizdo failą kad mes galime tiek ekranas ir kurti pastabas. Taigi mes ketiname nustatyti naują skyrių. Tegul tik jį atskirti su horizontalia taisykle. Skyrius id = "komentarai". Ką mes ketiname daryti Štai, kaip ir anksčiau, pakartoti per visus komentarus. Taigi iš tiesų, kaip mes darome tai, kaip jau minėjau, gana stebuklinga. Mes rašyti komentarus. Ir tada mes galime tai padaryti už kiekvieną kilpa per kiekvienas komentarus. Ir ką mes ketiname tai yra div class komentaras, ir mes ketiname realiai spausdinti šį komentarą. Taigi rodyti, kad ei, Komentuoti name-- asmenį kuris atsiuntė šį comment-- sako dot dot dot. Mes ketiname įdėti šią nuorodą į bloką citata, tik, kad ji atrodo gražiai. Ir tada komentuoti turinio blokas citata. Ir foreach. Taigi dabar tai vyksta kilpa per visus komentarus , kuris yra susietas su kiekviena iš pranešimų ir rodyti kiekvieno iš šių komentarus. Aš ruošiuosi pridėti kitą skyrių žemyn čia kuri leidžia mums pridėti komentarą. Taigi h3 klasė. Įdėkite pavadinimą čia. Pridėti komentarą. Ir mes ketiname nustatyti naują formą. Taigi, kaip ir anksčiau, mes ketina daryti forma veiksmų. Ir čia, naujas veiksmas yra mes ketina nustatyti naują valdiklį, kad leidžia mums atsakyti, kad galėtumėte prašymai sukurti komentarus. Taigi URL :: maršrutas createComment. Aš ruošiuosi pereiti į parametrą čia. Nesėkmingai ID, mes sukurti komentarą apie. Ir tada iš šis metodas forma bus po. Dabar mes ketiname pridėti du laukai, forma grupė. Tai bus su įėjimo pavadinimas "Pavadinimas" ir class = "forma-kontrolė", type = "text", ir su vietos rezervavimo ženklas = "Jūsų vardas". Mes taip pat ketiname apibrėžti kita forma lauką, kuriame bus tekstas plotas, nes mes turėjome anksčiau. Tiesiog kaip ir anksčiau, ją vadina turinį. Class = "forma kontrolės." Rezervuota vieta = "Rašyk čia." Ir tik todėl, kad mes iš tikrųjų galite pateikti jį, pateikti tipą ir class = "BTN btn ugdymo". Uždarykite formą. Uždarykite šį ieškinį. Taigi dabar, jei mes atnaujinti šį puslapį, kur mes turime, tarkim, tam tikrą postą. Turime perkraukite serverį. PHP amatininkas tarnauti. Perkraukite tai. Mes turime apibrėžti maršrutą. Bet dabar, tegul tiesiog priimti tai iš, kad mes iš tikrųjų gali parodyti jums, kas puslapis atrodo, tada mes iš tikrųjų sukurti tą maršrutą. Taigi, ei. Mes turime šią naują formą žemyn čia kad mes galime sukurti pastabas. Taigi leiskite tikrųjų apibrėžia funkcija per valdytojo kad galėtume pridėti komentarus. Grįžkime. Ir per blogcontroller.php, ką mes ketiname daryti yra sukurti naują funkciją vadinamas sukurti komentarą. Visuomenės funkcija createComment. Tai teks vieną parametras, pareigybių ID kad mes komentuodamas. Ir kaip anksčiau, mes ketina pirmą kartą gauti į virpstą. Taigi rašyti, findOrfail ID. Vėliau mes ketiname sukurti naują komentarą. Taigi komentarą = naują komentarą. Komentuoti name = Input :: gauti vardą. Komentaras kiekis = pati naujoji linija į pertraukas įvesties :: gauti turinį. Ir, pagaliau, mes ketiname turi susieti šį komentarą su paštu. Taigi mes ketiname naudoti ši funkcija, komentarai, kuri leidžia mums išsaugoti šis santykis. Taigi, dabar šis komentaras bus automatiškai Rašyti ID. Mes taip pat gali nustatyti, kad jis rankiniu būdu, tačiau tai yra lengviau kiek skaityti kaip funkcija eina. Ir kai mes atlikti tai, ką mes norime padaryti yra nukreipti vartotoją iki viewPost nustatytas maršrutas su masyvo su parametras pašto ID. Ir dabar, kad tai iš tiesų funkcijas, turime apibrėžti šį maršrutą. Maršruto :: paštu. Ir dabar mes ketiname tai vadiname pašto velniop ID velniop komentarą. Masyvas naudoja naują funkciją kad mes ką tik sukūrėte. BlogController. CreateComment kaip createComment. Didysis. Taigi, dabar, tikiuosi, jei mes atnaujinti šį puslapį ir pridėti komentarą, tarkim, David Malan. "Tikimės, kad tai veikia." Pateikti. Mes iš tikrųjų turime komentarą apie šį bloge. Nemokama. Taigi dabar mes turime gana funkcinis dienoraštyje. Mes tiesiog ketiname pridėti keletą tweaks, kad kad mes turime šiek tiek daugiau naudingos informacija apie šiuos postus. Taigi, jei mes einame atgal į Front Page, mes neturi prasmės nuo to, kiek komentarai apie kiekvieną iš šių pareigų. Taigi, ką mes iš tikrųjų ketiname reikia padaryti, tai, viduje mūsų modelį, apibrėžti pagalbininkas funkciją, kuri leidžia mums nurodyti komentarų skaičių kad eiti su konkrečiu paštu. Taigi mes ketiname sukurti pagalbininkas funkcija. Visuomenės funkcija. GetNumCommentsStr. Taigi eilutė, kuri nurodo numerį komentarų, kad eiti kartu su juo. Ir tai, ką mes ketiname daryti, tai pasakyti kad num = tai komentarai tikėtis. Taigi mes ketiname pasikliauti komentarų skaičius. Ir jei šis skaičius lygus 1, mes tik ketina grįžti 1 komentaras. Ir tada kitaip, mes norime grįžti NUM ir komentarus sujungimas, todėl mes gauti pluralization teisinga. Tiesiog, kad tai viena citata. Vienas komentaras. Ir dabar mes galime naudoti šią funkciją tiesiogiai viduje mūsų nuomone. Taigi, jei mes einame atgal į daliniai pranešimų, kad mes sukūrėme, dabar mes norime, kad iš tikrųjų rodyti komentarų skaičių. Taigi, ką mes galime padaryti, tai paštas, naudoti šią funkciją kad mes tiesiog sukurtas rodyti komentarų skaičių. Taigi, jei mes dabar atnaujinti, ją daro, iš tiesų, ekranas Skaičių komentarai kad eiti kartu su juo. Jei mes norime būti išgalvotas, jei jums realiai pažvelgti į platinimo kodą, mes iš tikrųjų galite susieti tai komentaruose. Jei prisimenate, mes apibrėžta mano, kad šis turi skyriuje ID komentarus. Taigi, jei mes iš tikrųjų norėjo susieti tiesiai į komentarus skyriuje, ką mes tai čia yra href URL maršrutu viewPost. Važiuokite masyvo ID post ID. Ir tada mes norime eiti į specialiai komentarai skyriuje. Čia galime uždaryti žymą. Taigi dabar, jei mes atnaujinti šį puslapis, mes paspauskite ant tai. Mes eisiu tiesiai prie komentarai skyriuje. Jei mes turėjome ilgesnį postą, jūs galite iš tikrųjų matyti šį Bounce žemyn. Tačiau jūs pastebėsite, kad tai ne puslapio viršuje. Nemokama. Didysis. Taigi, kad gana paprasta pavyzdys nors paprasto kad jūs galite padaryti su Laravel. Bet jūs galite pastebėti, kad čia mes padarėme daug dalykų su gana maža suma kodą. Laravel leidžia mums daryti SQL užklausų užkulisiuose. Jis veikia sanitarijos mums užkulisiuose. Leidžia mums atlikti šiuos santykius labai lengvai be mūsų, kuriems daryti bet kokį SQL prisijungti pareiškimus sujungti komentarus su tuo, ką žinutes. Leidžia mums tai padaryti paveldėjimo šablonų kad galėtume apibrėžti šias lizdus failus, mes ne kartoti save, tiesiog patinka, kai mes turėjome, kad demonstruoti dienoraščio kad mes neturi nukopijuokite ir įklijuokite šį kodą. Ir iš čia galima statyti vis sudėtingesni programos. Galite įsivaizduoti, jei mes norėjo įgyvendinti log-in, galima sakyti, pareikšti trečiajai šaliai sistema, kuri leidžia mums tai padaryti. Yra iš jų krūva kad yra tikrai, tikrai didelis, kad gali tai padaryti, pavyzdžiui, slaptažodžio atkūrimas. Ir tai jums atsiųsime Atstatyti slaptažodį laišką. Mes galime įgyvendinti leidimą kad galėčiau sukurti pranešimą, bet kažkas negali redaguoti. Mes galime įgyvendinti funkcionalumas ištrinti pranešimus. Bet jūs galite pamatyti čia, kad mes turime gana daug visi primityvus komponentai statyti kai tikrai, tikrai, dinamiškos ir įdomių web apps. Taigi su tuo, manau, kad mes gerai. Ar vaikinai turi kokių nors klausimų? Taip? GARSIAKALBIS 3: Kaip jus gauti statinį turinį? ERIC Ouyang: Statinis turinys. Taigi, kad matėte prieš tai, kai mes turėjome tai čia, tai išdėstymas turinys, Peržiūrėti markę, mes turėjome tai be šio masyvo vėliau. Blog.index, mes turėjome tai kaip tik statinio failą. Taigi, jei mes neturime perduoti nieko kartu su ja, tai bus tiesiog padaryti HTML tiesiogiai. Bet jei mes pereiname į šį Association masyvas žinutes, kuris yra dinamiškai ištrauktas iš duomenų bazės, mes galite padaryti puslapio dinamiškas. Nemokama. Visi kiti klausimai? GARSIAKALBIS 3: Kaip jūs palyginkite Laravel kad gal kai kurių kitų variantų? ERIC Ouyang: Žinoma. Taip. Taigi Laravel is-- tai puikus question-- vienas iš daugelio variantų interneto sistemas. Taigi Ruby on Rails yra vienas, kad yra populiarus. Manau, "Twitter" naudojamas būti įgyvendinti su Ruby on Rails. Manau, kad jie jau nuo įjungtas. Yra dar vienas vadinamas FuelPHP. Taigi Ruby on Rails naudoja Ruby kalba ir įgyvendina su MVC daug dalykų kad mes pamatyti čia. FuelPHP yra dar PHP sistemą. Django yra vienas iš mano mėgstamiausių. Tai interneto sistema Python. Taigi jūs galite parašyti savo interneto app Python. Taigi ten iš šių variantų toną. Laravel, manau, iki ir didelė yra mano mėgstamiausia teisę dabar PHP tik todėl, iš komponentų kad mes kalbėjome apie anksčiau. Tai Kompozitorius įjungta. Ji apima tikrai, tikrai išraiškingas ORM sistema. Taip pat yra tikrai nuostabus šablonų kalba, kad kai kurie kiti tiesiog neteikia. Ir migracijos. Migracija yra nuostabus, taip pat. Cool? Nuostabus. Na, ačiū už žiūrėti šį seminarą, ir geros kloties jūsų galutinių projektų.