[Mūzikas atskaņošanai] ERIC Ouyang: Hei, visiem. Welcome. Tas ir Building Dynamic Web Apps ar Laravel. Mans vārds ir Eric Ouyang. Es esmu otrā kursa students studē sociālās zinības ar sekundāro datorzinātnēs, un es dzīvoju Adams Māja šeit Hārvardā. Tātad Laravel, tās visvairāk kodols, ir MVC web app sistēma. Tātad, patīk tas, ko jūs guys ir darījis ar CS50 Finance, Laravel ir sistēma, kas ļauj jums, lai veidotu dinamisku tīmekļa lietojumprogrammas. Tātad jūs varat domāt par to dažās sajūtas kā no sīkumi veidu paplašināšanu jūs esat darījis CS50 Finanses, bet sistēma, kas ir daudz stingrāku, daudz vairāk elegants dažās sajūtas, un nodrošina daudz funkcionalitāti, lai jūs veidot diezgan sarežģīti tīmekļa lietojumprogrammas. So iesim caur kādu no galvenajām iezīmēm, un tad mēs nodoties piemērs, kā veidot blogu pieteikumu ar Laravel. Tātad viena no pirmajām lietām, kas atšķir to no MVC darba veidu ka jūs esat darījis ar CS50 tas ietver ORM dzinēju. Tātad ORM stendi objektu relāciju kartēšana. Tātad tas ļauj veidot slānis abstrakcijas starp datu bāzē un jūsu kontrolieri. Tātad atšķirībā CS50 Finance kur Jūs tieši veikt vaicājumus, ORM slānis ļauj abstrakts, ka prom un radīt modeļi, kas ir spēcīgāks nekā Jūs varat tieši ar SQL vaicājumiem. Vēl viena lieta, kas ir patiešām noderīgs ir mantojams veidnes. Tātad jūs pamanīsiet CS50 Finance, jūs galu galā pārrakstīšana daudz lietas, kur vietas jūs varētu potenciāli atkārtotu lietas, jūs neesat spējīgi. Tātad šeit Laravel, jūs varat izmantot to, kas ir pazīstams kā asmens veidnes dzinēju izveidot kapteinis izkārtojumu. Un no turienes, jūs varat mantot tāpēc, ka apakšgrupas veidnes var faktiski ietver elementus ietvaros ka lielākā bāzes veidni. Migrācija. Tātad tas ir diezgan standarta iezīmes lielākā daļa mūsdienu tīmekļa lietojumprogrammu sistēmas. Tātad tas ļauj pārstāvēt datubāzes shēmu izmaiņas kodu. Tātad bez teiksiet, phpMyAdmin, Jūs faktiski var radīt šādas migrāciju kur jūs pārstāvat datubāzi shēma izmaiņas kodu tieši. Un tas ļauj jums kuri paredzēti, jo īpaši ja jums ir vairāki cilvēki, kas strādā tajā pašā tīmekļa application-- izsekot šīs izmaiņas, saka GitHub, vai kādā citā glabātavā. Tātad tas ir patiešām noderīga un mazina nepieciešamību , teiksim, iet ap daudz SQL izgāztuves. Un, visbeidzot, Komponists ir kaut kas ļoti, ļoti noderīga kas ļauj izmantot citu cilvēku kods darīt lieliskas lietas. Tātad Laravel s strukturēta kā vairāki komponists paketes. Tā teikt, ja jūs vēlētos, lai uz autentificēšanas iepakojumā vai arī, ja jūs vēlētos, lai dažās kārtot ģeneratora skriptu vai admin interfeisu, jūs varat plug and play šie komponenti ar komponists. Tātad, pieņemsim sāktu. Jebkuri jautājumi no jums puiši Pirms mēs sāktu? Nav jautājumi? Cool. Tātad pirmais solis ir uzstādot Komponists. Tātad Komponists ļauj pārvaldīt šīs atkarības, vai tas ir Laravel sistēma vai kāda cita trešā puse paplašinājums. Pirmā komanda ļauj Jūs varat lejupielādēt Komponists, un otrā komanda ļauj jums pārvietot to uz savu vietējo bin mapi lai jūs varētu palaist Komponists tieši caur termināli. Pēc tam, iet uz priekšu un izveidot jaunu Laravel projektu. Mēs esam patiešām gatavojas izmantot kādu piemēru kodu ka es esmu kopā izveidot šo emuāru. Bet, ja jūs, sākot no scratch, jūs varētu izmantot šo komandu šeit, komponists radīt-projektu, laravel slīpsvītra laravel, un pēc tam nosaukumu savam projektam. Un tas ietvers visi izplatīšana kods lai sākot jaunu Laravel projektu. Tātad jūsu CS50 gala projektiem, jūs iespējams, vēlas izmantot šo komandu. Bet mēs esam gatavojas sākt ar to. Tātad, kad jūs esat darījuši ka jūs gatavojas saņemt diezgan plaša numurs datņu blog50. Tātad, pieņemsim tikai iet cauri daži no šiem komponentiem. Jūs pamanīsiet šajā maršrutā katalogs, ir app mape. Inside app mapē, tur ir pāris noderīgi mapes. Jāatzīmē, lai sāktu ar tas config mapi. Tātad tas izveido kā Jūsu mājas pieteikums ir dodas uz, teiksim, autentificēt cilvēkus vai naudas lietas vai savienojumu ar datu bāzi. Un to, kas īsti noderīgi ir tas, ka Laravel ļauj jums izveidot atšķirīgas izstrādes vides. Tātad, ko mēs esam darījuši šeit ir, ja mēs ejam saskaņā ar vietējās mapi, tur database.php fails. Un jūs pamanīsiet, ka mēs izveidot MySQL savienojumu, kas ļauj indivīdiem, lai savienotu ar MySQL serveri, kas ir tieši uz CS50 ierīces. Un mēs esam savienojumu ar datu bāzi ka es izveidoju sauc Blog50. Tātad, pieņemsim faktiski iet uz priekšu un palaist darba versiju šo, tikai, lai iegūtu sajūtu par to, ko programma, ka mēs būvējam izskatās. Tāpēc man ir kopija šis Blog50 pabeigts. Tātad Laravel faktiski ir uzcelta serveri ka jūs varat palaist tieši no komandrindas. Tāpēc tas ir līdzīgs PSET pirms kad jūs faktiski veidot savu serveri C. Tāpēc viņi ir viena uzcelta tik ka jūs varat palaist savu Laravel progr tieši no komandrindas. Tātad, ja mēs php amatnieks kalpo, šis uzsāks attīstības serveri par ostas 8000. Tātad, ja mēs ejam uz vietējo uzņēmēju 8000, jūs pamanīsiet, ka, hey. Mums ir mūsu blogu un darbojas. Tātad Laravel šeit rada priekšējā lapa mūsu blogu. Ļoti vienkāršs pieteikums. Bet tur ir pāris tiešām modes iezīmes ka tā nodrošina zem motora pārsega. Tātad blog aplikācijas vienkārša. Ja mēs vēlējāmies radīt amatu, mēs varam noklikšķiniet uz šo pogu. Mēs varam teikt, "Hei, ikvienam. Tas ir patiešām jautri seminārs, "piemēram. Un rakstīt kaut uz leju šeit. Teksts šeit. Ja mēs noklikšķiniet uz Iesniegt, jūs ievērosiet, ka mūsu jaunais blogs post ir pievienots priekšējā lapa blogā. Ja mēs ejam atpakaļ šeit, jūs pamanīsiet, ka tur jau ir daži komentāri par emuāru. Tātad, ja mēs ritinātu uz leju, jūs paziņojums, ka Jonathan Tan saka ka viņš bija ļoti ieinteresēja šo amatu. Tātad mēs iedziļināties kā objekts relāciju kartēšanas pieļauj jūs darīt šīs attiecības diezgan bezšuvju veids, kā labi. Cool. Kādi jautājumi par funkcionalitāti par to, ko mēs gatavojamies būvēt? Cool. Tāpēc sāksim veic ar faktiski radot bāzes tabulām. Tik atgādināt, ka CS50 Finance, jums kopā galdiņu lietotājiem kā arī uz krājumi jūsu portfolio. Tā kā mēs jau iepriekš minēts, tas, ko mēs izmantojam Laravel ir kaut kas zināms par migrāciju. Tātad, ja mēs ejam atpakaļ uz izplatīšanas kods šeit, pirmais komanda, kas ir noderīgi, ka Laravel sniedz jums tas migrēt komanda. Tātad, mēs varam darīt, php izpildītāja migrēt: padarīt. Tātad tas ļauj mums izveidot migrāciju. Un tad mēs gribam lai izveidotu migrāciju sauc create_posts_table, kas notiek būt tur, kur mēs ejam, lai būt uzglabātu mūsu blog posts. Un jūs pamanīsiet, šeit, ka tas darbojas caur kādu kodu, kas faktiski rada failu ar laika zīmogs par to. Tātad, ja mēs ejam un apskatīt datu bāzes, mēs pamanīsiet zem Migrācijas ka tas ir izveidots tukšs failu mums, kas ir tekstveidnes kodu ar nosaukumu ka mēs norādīts, izveidot posts tabulu. Un tas ir divas funkcijas tajā. Up ir tas, ko mēs gribam braukt, ja migrāciju ir piemērots, lai datu bāzē. Un noteikti ir tas, ko mēs gatavojamies darīt ja mēs gribam mainīt migrāciju. Tāpēc šeit sāksim ārā ar rakstot šo migrāciju. Tātad tur ir noderīga klase in Laravel sauc shēmu. Tātad, mēs ejam, lai palaistu shēma :: izveidot. Un mēs ejam, lai radītu galda sauc posts. Un šeit mēs uz to, izmantojot funkciju. Un laikā šeit, mēs ejam, lai reāli precizēt saturu mūsu galda. Mēs ejam, lai izveidotu ID, kas ir auto-palielināšanai. Bez tam, mēs ejam lai izveidotu lauku, kas pārstāv titulu mūsu blogā. Mēs arī gatavojamies izveidot lauku glabāšanai tekstu mūsu blogā. Un visbeidzot, mēs ejam uzglabāt dažus laikspiedogus , kad mūsu amatu izveidoja un kad tas tika atjaunināts. Un uz leju, tas ir diezgan vienkārši. Viss, ko mēs vēlamies darīt, ir piliens tabulu, ka mēs esam izveidojuši. Lieliski. Kādi jautājumi? Tāpēc tagad, ja mēs ejam uz priekšu and-- faktiski, vietējā uzņēmēja, ļaujiet man izdzēst to, kas mums bija agrāk. Iet uz datu bāzēm. Es esmu gatavojas dzēst, kas mums bija agrāk. Piliens šo un radītu jaunu datu bāzi Blog50. Tātad, tagad, ko burvju daļa ir šeit, ka mēs var piemērot šos migrāciju tieši ar datu bāzi, izmantojot komandrindu rīks. Tātad, ja mēs php izpildītāja migrēt Jūs pamanīsiet, ka, hey. Tas ir izveidots migrācijas tabulu, ko mēs ņemšu apskatīt mazliet, un tas ir piemērots šo pirmo migrāciju. Tātad mēs skatāmies Blog50, jūs pamanīsiet ka tas ir radījis divas tabulas mums. Pirmais ir tas migrācija tabula. Tātad, ja mēs pārlūkot šo, jūs pamanīsiet, ka šī tabula ir diezgan vienkārša. Tas ir tikai teica, ka, hey. Mēs esam izmantoja šo migrāciju. Mēs ejam atpakaļ un apskatīt amatos. Jūs pamanīsiet, ka struktūras ir tieši tas, kas mums bija lūdzis. Mums ir auto-palielināšanai ID. Mums ir virkne glabāšanai nosaukumu, un teksta lauks glabāšanai saturu. Lieliski. Cool. Kādi jautājumi par migrācijas darbs, kā mēs varam tos piemērot? Nē? Cool. Tāpēc tagad mēs ejam, lai iet uz priekšu un faktiski rada modeli. Tātad, mēs vēlamies izveidot posts modeli, kas saglabā abstrakcija datu bāzē. Tātad, nevis dara MySQL vaicājumu tieši, mēs ejam, lai radītu. Tāpēc mums ir, lai izveidotu mape šeit sauc par modeļiem. Un iekšā šeit, mēs ejam, lai izveidot failu sauc post.php. Inside šo PHP failu, mēs ejam, lai radītu klases post, kas paplašina daiļrunīgs. Daiļrunīgs ir nosaukums ORM dzinējs, kas Laravel sniedz. Un šeit, mēs varētu sagaidīt, ka jums tiešām ir nepieciešams uzrakstīt kādu kodu. Mēs ejam, lai uzrakstīt dažus palīgs funkcijas vēlāk. Bet no kastes, šis būs jau atzīt to, kas ir datu bāzē un mēs varam piekļūt, teiksim, tekstu Mūsu blogā vai nosaukumu, un radīt lietas tieši ar diezgan daudz neviens kods whatsoever. Tātad tas ir viens no burvju sastāvdaļām. Un vēja reizi šajā klasē ir vairāk pilntiesīgu, mēs ietver informāciju par to, ko tas ir saistīts ar, tā komentāriem. Arī izveidot funkciju tāpēc mēs faktiski var tieši iegūt URL no blog post lapā. Cool. Visus jautājumus par to? Nē. Cool. Tāpēc tagad, kad mums ir mūsu modeli, mēs vēlas izveidot kontrolieris, kas ir spēj saskarne ar šiem modeļiem, un pēc tam datu bāzē. Tātad, ja mēs ņemam apskatīt BlogController, jūs paziņojums, ka tur nav daudz šeit tieši tagad. Viss ir ir indekss funkcija kas rada mājas lapu, bet bez kaut tur, lai parādītu vēl. Tātad pirmās funkcijas ka mēs ejam, lai radītu ir viens, kas ļauj mums izveidot blogu. Tātad, mēs esam gatavojas pasludināt jauna funkcija sauc newPost. Un iekšā šeit vienkārši, mēs ejam noteikt izkārtojumu šīs lapas būt padarīt versiju, Ja jūs atceraties no CS50, Šī veidni sauc blog.new, kas mēs spēsim radīt mazliet. Jūs pamanīsiet here on line sešām ka mēs norādīts šo mainīgo, izkārtojumu. Un, ja mēs to apskatīt pie mapi skati, ir izkārtojumus mape, kas ietver ļoti pamata HTML failu. Un piezīmi, jūs pamanīsiet ka mums ir šo konteineru šeit, kas dod saturu. Tātad iekšpusē mūsu veidnes ko mēs gatavojamies darīt ir radīt to, kas būs aizstāt tieši šajā izkārtojumu. Tātad mēs teicām, ka mēs gribam, lai padarītu veidni sauc blog.new. Bet iekšpusē Blog, tur ir vēl nav šo jauno veidni. Tātad, mēs ejam, lai radītu failu sauc new.blade.php. Šī stāsta Laravel ka šis PHP fails vajadzētu tikt sniegta ar asmens veidni dzinēju. Tātad tas ir diezgan vienkāršs failu. Tas būs formā, ar kuru mēs faktiski pievienot blog post. Tātad maģijas šeit no mantojums ir tas, ka, hey. Mēs vēlamies, lai norādītu, ka sadaļa, saturs sadaļa šeit, kas ir iezīmēts kosection unstop. Tātad, kas ir pa vidu šeit gatavojas aizstāt galvenajā izkārtojumu. Un šeit to, ko mēs vēlamies darīt, ir ļoti vienkārši izveidot jaunu HTML failu. Pieņemsim tikai pievienojiet īsu nosaukumu. Pievienot blog post. Un tajā, mēs esam notiek, lai izveidotu formu. Šī forma nāksies prasību. Un tas būs kaut kas ka mēs aizvietot vēlāk, un mēs redzēsim, kā maršrutēšanas iekļaujas šeit. Bet mēs esam tikai gatavojas noteikt tagad ka tas iet uz URL ar trasi no createPost. Un tad tas notiek ir metode amatu. Laikā šeit, mēs ejam ir divas laukus. Div class = "forma-group". Mēs izmantot sāknēšanas CSS bibliotēku laipni sniedz Twitter. Tātad, mēs ejam, lai izveidotu divus no tiem. Tātad šis pirmais ieguldījums ir būs nosaukums. Tātad input name = "nosaukums". Class = "formcontrol". Type = "teksts". Es esmu gatavojas pievienot vietturi = "Nosaukums". Un tad otrs ir būs teksta zona. Name = "saturu". Class = "formcontrol". Un vietturis = "Rakstīt šeit". Tur mēs ejam. Visbeidzot, mēs ejam pievienot ātri iesniegt pogu. Type = "iesniegt" class = "btn btn sākumskolas". Tātad šie ir visi iezīmes sāknēšanas tik ka to var jānosaka ārā tādā veidā, kas ir upuri lietotājam, nevis neapbruņotu HTML. Tātad mēs esam definēts kontrolieris šeit. Mēs esam definēts ļoti vienkāršu skatījumu. Bet to, kas trūkst, ir saistaudi. Tātad šajā brīdī, Laravel nav ne jausmas, kā mēs ejam, lai reāli piekļūtu šai kontrolieris. Tātad tas ir definēts failu sauc routes.php. Un tieši tagad, mums ir viens ceļš. Kas ir, kad mēs ejam uz mājas ceļš šajā mājas lapā, tas notiek, lai padarītu indekss kontrolieris. Tātad, šeit to, ko mums vajag darīt, ir jāīsteno Jauns maršruts, lai mēs izveidotu amatu. Tāpēc mēs izmantojam šo metodi get, kas nosaka, ka tad, kad lietotājs mēģina saņemt šo page-- konkrēti post slash jaunu page-- ko mēs gatavojamies darīt ir izmantot kontrolierim sauc BlogController jauna ziņa. Viens, ka mēs tikko izveidota. Un tad mēs ejam to Alias ​​to kā newPost. Mēs ejam, lai radītu otru funkcija mazliet. Bet to, kas ir šeit, saskaņā atslēga "par" ir tas, ko mēs varam aizvietot laikā Mūsu Blade veidnes. Tātad tagad, pieņemsim faktiski arī teikt maršrutu. Tātad mēs esam arī gatavojas lai izveidotu kontrolieris lai mēs varētu radīt šos amatus. Tātad, ja lietotājs amatiem uz lapas pastu slash jauna, ko mēs gatavojamies darīt ir izmanto kontrolleri mēs spēsim radīt tuvākajā laikā sauc BlogController at createPost. Un mēs ejam alias tas ar tik createPost. Cool. Kādi jautājumi? Cool. Tātad, pieņemsim palaist to, kas mums ir tik tālu. Tātad, ja mēs php amatnieks kalpot, mēs redzēsim daudz kļūdas. Tā izskatās mums sintakses kļūda maršrutos pozīciju 27. Ah. Trūkst semikolu. Tātad, ja mēs ejam uz 8000, jūs redzēsiet neko šeit vēl. Tātad šis ir noklusējuma mājas lapā. Bet, ja mēs ejam uz post slīpsvītra jaunu, hey. Tas būs formā, ka mēs tikko izveidojāt. Tieši tagad mums ir ne īstenoja funkcionalitāti , kad mēs nospiediet pogas Iesniegt. Tātad, ja mēs noklikšķiniet uz Iesniegt poga, tas notiek, lai palaistu kļūdu. Bet mēs ejam kodu, kas tieši tagad, tieši to mēs vēlas darīt, kad lietotājs iesniedz šo veidlapu. Tātad, pieņemsim darīt. Iet atpakaļ uz kontrolieri failu. Ko mēs esam gatavojas darīt, ir īstenot šo jauno funkciju kas ļauj mums izveidot amatu. Pieteikt jaunu funkciju. Sabiedrisko funkciju createPost. Un šī funkcija būs mazliet sarežģītāka nekā tas, ko mums bija pirms tam. Bet jūs redzēsiet, ka mēs neesam gatavojas faktiski rakstīt jebkuru SQL. ORM, Daiļrunīgs ORM, gatavojas ļaut mums to darīt dažās veidi, vairāk elegants veids. Tātad mēs spēsim izveidot jaunu amatu. Un šeit mēs esam instantiating jaunu objektu no modeļa, ko mēs tikko izveidots, post modeli. Un tas, ko mēs gatavojamies darīt, ir iestatīts nosaukums atribūts šī izmantojot kaut ko ko mēs saņemam no servera. Tātad tas ir līdzīgs tam, ko mums bija agrāk CS50 Finance kur mēs varētu darīt, izmantojot Super Global Post meklē titulu. Tātad Laravel sniedz dažus sanitārija un plauktiņš, izmantojot šo palīgs funkciju. Tātad, mēs vēlētos izmantot šo vietā Šī ļoti pamata neapstrādātā veidā no PHP. Un tad, ko mēs gatavojamies darīt, ir iestatīts saturu tā, lai Input iegūt saturu. Mēs esam patiešām gatavojas wrap tas noderīgs funkciju ka PHP nodrošina sauc nl2br, kas Izrādās jaunas līnijas, VL, importēt PR, pārtraukumiem, lai mēs patiesībā var būt dažādas punkts tajā. Un visbeidzot, ko mēs ejam to darīt, ir saglabāt šo amatu. Tātad mēs saucam funkcija ietaupīt uz šo modeli. Mēs ejam, lai saglabātu amatu. Un visbeidzot, ko mēs gatavojamies darīt ir novirzīt lietotājam speciāli maršrutam, ko mēs ejam veidot neilgi, alias ar viewPost. Un mēs esam gatavojas iet argumentiem id, kas ir id šo jauno amatu. Lieliski. Tāpēc tagad, ja mēs faktiski iet un palaist to. Mēs ejam, lai pievienotu jaunu amatu. Teiksim tas ir seminārs 50. Un teikt, sure. ASDL. Neatkarīgi. Daži no satura veida. Un iesniedz to. Un mēs pamanīsiet, ka, hey. ceļi nav definēts. Bet, ja mēs to apskatīt phpMyAdmin un meklēt tā, vai mūsu funkciju neko nedarīja. Paskaties Blog50 amatiem. Mēs pamanīsiet, ka, hey. Patiesībā, mēs to vienkārši izveidot šo blogu post ar laikspiedoliem, kā norādīts. Tāpēc tagad iesim atpakaļ un faktiski rada Tas cita funkcija mūsu kontrolieris, īpaši viewPost kontrolieris. Tātad valsts funkciju viewPost. Tātad, šeit tas, ko mēs darām, tā vietā , kam tukšas iekavas, mēs gribam iet ar ID post, ka mēs esam radot. Un no šejienes, ko mēs gatavojamies darīt ir faktiski vaicājumu datu bāzē par to. Tātad, ja mēs post, tur ir funkcija sauc Atrast, kas ļauj mums, lai vaicājumu to ar ID. Konkrēti, patiesībā, mēs ejam, lai lietot alternatīvu versiju šo sauc Atrast vai Fail, kas ļauj mums atmest no šīs funkcijas, mest izņēmums, ja ID mēs caurlaide neeksistē. Un tad mēs esam gatavojas darīt kaut ko līdzīgs tam, ko mēs darījām agrāk kur mēs noteikti saturu Šīs lapas, lai būtu sniegto versiju šo jaunu skatu ko mēs ejam, lai izveidotu, blog.view. Un mēs ejam nokļūst it-- tāpat kā šajā CS50 padarīt function-- vārdnīcu mainīgo lielumu. Šīs asociatīvās masīva atslēgas kļūt mainīgie ietvaros veidni. Tātad, mēs esam gatavojas darīt post post. Tā iet netieši post ka mēs esam apšaubīja no datu bāzes. . Tagad to, ko mēs gatavojamies darīt, ir radīt šo viedokli lai mēs faktiski var apskatīt blog posts, ka mēs esam izveidojuši. Tātad, mēs ejam, lai radītu failu sauc view.blade.php. Tātad iekšpusē šo paraugu, ko mēs gatavojamies darīt tiek likts kopā vienkāršs lapa, ļauj mums, lai parādītu saturu. Tātad mēs to sadaļu, tas ir, pirms saturu. Apstāties. Un ko mēs ejam darīt laikā šeit ir uzrakstīt kādu HTML, lai parādītu šo lapu. Tātad mēs ejam, lai wrap to ar iedomātā Jaunais HTML5 elements sauc pantu. Un šeit mēs ejam ir galveni kur mēs ejam, lai vienkārši ir H1, kas ietver amata nosaukumu. Tātad šeit, ja mēs skatāmies uz šo dubultā cirtaini lencēm apzīmējums, tas būs jādara, būtībā PHP echo amata nosaukumu. Tātad, tas ir noderīgi saīsināts ka Laravel nodrošina mūs. Tātad, mēs ejam, lai izmantotu šis notācija vietā. Un šeit, mēs ejam, lai arī izdrukātu saturu no tā. Un šeit mēs ejam darīt post saturu. Un uz leju apakšā, ko mēs esam gatavojas darīt, ir radīt kājeni. Un kājenē, mēs ejam, lai Pirmais rādījums, kad tas tika publicēta. Tātad tas tika publicēts, izveidoja. Un Laravel izmanto tiešām jauks datums bibliotēka sauc Carbon. Tātad, mēs faktiski var darīt kaut ko sauc difforHumans, kuru redzējāt iepriekš. Kad mēs ievietojis. tā teiks, piemēram, piecas sekundes pirms. Tātad šis ir patiešām jauks funkcionalitāti Laravel. Un visbeidzot, mēs ejam aizvērt šo kājeni. Tāpēc tagad, ja mēs ejam atpakaļ uz Mājas lapa mēs ejam redzēt neko šeit vēl jo mēs neesam kodēti up mājas lapā. Bet, ja mēs ejam uz post slash vienu, mēs ejam, lai redzētu izņēmums. Vai kāds zina, kāpēc mēs redzam izņēmums? Ko mēs trūkst? Jebkuras idejas? Tātad, ko darīja mēs darām agrāk mums faktiski noteikt, kā mēs to konkrēti kontrolieri? SPEAKER 1: maršruts? ERIC Ouyang: Jā. Tātad mums vēl ir jādefinē maršrutu. Tātad mēs ejam atpakaļ šeit, lai routes.php. Jūs pamanīsiet, ka mēs faktiski nav noteiktas kā mēs ejam, lai saņemtu šim kontrolierim. Tāpēc tagad mēs ejam, lai definētu šo ceļu. Tas ir diezgan vienkārši, līdzīgs tam, ko mēs darījām agrāk. Bet ko mēs ejam, lai paziņojuma šeit ir ka mēs esam nāksies vietturi. Tātad, ja mēs route.get slash post ID. Tātad ID tagad ir tas, kas notiek, lai nonākt kontrolieris. Tas ir gatavojas izmantot kontrolieris, ka mēs tikko izveidots, BlogController pie viewPost. Un mēs ejam alias to kā viewPost. Lieliski. Tāpēc tagad mēs ejam, lai izveidotu šo ceļu. Tāpēc tagad, ja mēs ejam šeit un atsvaidzināt šo lapu, mēs patiesībā tie ir mūsu jaunu blogu. Tātad, tas ir tas, ko mēs izveidojām agrāk. Ļoti vienkārši lapa, bet displeji blog post, ka mēs tikko izveidota. Cool. Un, ja mēs tiešām iet cauri visai process, veidojot jaunu blogu, mēs pamanīsiet, ka viss pāradresācijas pareizi. Ja es saku, "Hi. Es esmu Jonathan Tan. " Saka: "Šis ir mans emuārs post." Un iesniegt to, tas radīs šī jaunā blog post ar ID 2, kas soli no tā, ko mums bija iepriekš un parāda to pareizi. Awesome. Kādi jautājumi? Jā? SPEAKER 2: Vai Laravel rokturi sanitization un viss, lai jūs? ERIC Ouyang: Jā. Tātad, kad mēs redzējām agrāk, kad mēs darījām ieejas resnās zarnas nokļūt, ka sanitates jebkuru SQL injekcijas un plauktiņš ka mēs varētu vēlēties veikt, ja mēs esam ļaunprātīgs lietotājs mājas lapā. Tātad Laravel rokturi daudz no tā aizkulisēs. Labs jautājums. Tātad, pieņemsim to apskatīt mājas lapā. Tātad, ja mēs vispirms doties atpakaļ kontrolieris mājas lapā, Jūs pamanīsiet, ka tā nav daudz darīt šeit. Jūs pamanīsiet, ka mēs neesam iet šajā kontrolieris kaut kas īpaši noderīga. Tas ir tikai šī indeksa failu. Tātad, pieņemsim nokļūst Tas ir kaut kas noderīgs. Un īpaši mēs esam gatavojas iet amatos. Un Laravel ļauj mums darīt ziņu visiem, kas ļaus mums, lai saņemtu visus amatus. Tagad, ja mēs ejam atpakaļ uz index.php, jūs redzēsiet, hey. Pagaidām šeit nekā nav. Bet ko mēs vēlamies darīt šeit faktiski atkārtot, izmantojot, do foreach cilpa pār amatiem, kas ļauj izdrukāt posts. Tātad foreach posts kā post, ko mēs vēlamies darīt ir izdrukāt saturu blog post. Bet viena lieta, ko jūs pamanīsiet, ir tas, ka mēs faktiski wrote lielāko šī kodeksa jau jo view.blade.php. Tātad, ko mēs gatavojamies reāli darīt, ir izmantot jauku noderīgu funkciju Blade un ņemt ārā šo kopējo kodu. Tātad mēs ejam šeit. Mēs ejam, lai šo saturu tieši šeit, un tas, ko mēs gatavojamies darīt ir izveidot jaunu mapi. Pieņemsim tikai sauc to partials. Un šeit mēs ejam lai izveidotu post.blade.php. Tātad šeit, mēs ņemt ārā to, kā ko mēs vēlamies parādīt šīs amata vietas. Un šeit to, ko mēs darīsim, nevis faktiski ar šo HTML tieši, mēs spēsim izmantot šo direktīvu sauc ietver blog.partials.post. Un tas, ko mēs gatavojamies darīt šeit ir caurlaide amatā lapā. Tāpēc tagad, ja mēs ejam atpakaļ šeit, mēs paziņojums, ka funkcionalitāte ir joprojām tas pats. Bet tagad mums ir šī ņemt ārā kodu, šo HTML. Tātad, mēs varam izmantot to indekss. Tātad šeit, tas ir ļoti vienkāršs. Viss, kas mums jādara, ir jāiekļauj blog.partials.post un masīvs. Un kaut kur pirms, mēs post post. Tāpēc tagad, ja mēs ejam atpakaļ uz mājas lapā, mēs redzam, ka, hey. Mums ir saraksts ar visiem blog posts, kas mums bija pirms tam. Mēs varētu vēlēties, lai pievienotu dažas "ja" nosacījumus un "cits" nosacījumiem tā, ka, ja mums nav kaut uz blogu, mēs vēlamies parādīt kaut ko noderīgu. Tāpat, hey. Nav saturs vēl par emuāru. Un, ja jūs puiši tiešām apskatīt sadales kodu GitHub, jūs redzēsiet piemērs, kā mēs to darām. Cool. Kādi jautājumi? Jā. SPEAKER 2: Es domāju, tikko pamatjautājums. Atpakaļ pie maršruta. ERIC Ouyang: Jā. Ja mēs to apskatīt maršrutus. SPEAKER 2: Kur uses.blogcontroller pie izveidot amatu, Ko tas virzīt mūs uz? ERIC Ouyang: Jā. Yeah. SPEAKER 2: Vai kas ir that-- ERIC Ouyang: Tātad, to apskatīt, teiksim Piemēram, šis maršruts tieši šeit. Pirmā daļa ir faktiskā URL, lietotājs nonāks. Un tas masīvs šeit, asociatīvā masīva, kas definē kā mēs vēlamies, lai būtu pieteikums akts, reaģējot uz to. Tāpēc izmanto, ir kontrolieris, funkcija, ko esam vēlos aicināt, ja lietotājs iet uz šo URL. Tātad viewPost tieši šeit bija funkcija, ko esam definēta iekšā no BlogController-- SPEAKER 2: Es redzu. ERIC Ouyang: --so ka mēs faktiski var padarīt skatu, veiktu dažus aprēķinus, mijiedarbojas ar SQL datu bāzi. SPEAKER 2: OK. ERIC Ouyang: Un tad otru daļa, "par" ir alias, ka mēs izmantojam. Tātad, ja mēs pamanām, kad mēs izveidojām formu, Jūs pamanīsiet, ka URL :: routecreatePost. Tāpēc ka tas var aizstāt ar faktisko URL, lai mēs esam nav grūti kodēšanas šos, lai mēs varētu mainīt vienu reizi, saka, ja mēs vēlējāmies, lai pārdēvētu. Tā vietā, lai pēc slīpsvītra jauna, mēs vēlamies darīt, piemēram, p slash jauna tikai tīrīt up mūsu URL bitu. Mēs varētu mainīties to vienā vietā, nevis nekā visās dažādiem failiem. Cool. Tas ir labi. Tāpēc tagad mums ir ļoti Pamata blog platformas. Mēs, iespējams, vēlas pievienot pogu, lai ka mēs faktiski var radīt jaunas amata vietas. Tātad, ja mēs to apskatīt pie Layout Master, mums ir sadaļa ar nosaukumu Galvene Right ka mēs esam tikai definēti augšā. Tātad, mēs varam pievienot pogas līdz top galvenes. Tātad, ja mēs ejam uz index.blade.php, faktiski darīt, ir noteikt to, kas notiek iekšpusē šeit. Tātad šis Header Right sadaļā, ko mēs gatavojamies darīt ir pievienot pogu, lai dotos uz URL nosaka maršruta jaunajā amatā. Vienkārši tīrīt to uz augšu un padarīt tas diezgan un viss sāknēšanas, mēs ejam, lai padarītu Tas noklusējuma poga. Pieņemsim tikai padara to liels jautri. Un tā iekšpusē, mēs varētu likt kādu tekstu. Bet ko Bootstrap sniedz, ir glyphicons. Tātad, mēs faktiski var pievienot, ka jauki, zīmulis, ka mēs redzējām agrāk. Glyphicon. Glyphicon-zīmulis. Tātad tas ļaus mums likt in ikonu, nevis teksta. Tagad, ja mēs to apturēt, šis noteiks šo sadaļu. Un, hey. Mums ir jauka poga, kas vieno mūs tieši pievienotu blog post lapu. Tātad mums ir diezgan vienkāršs blogu. Mēs varam pievienot stuff to. Bet ko mēs parasti sagaidām no blogiem ir komentējot. Tātad, tas ir patiešām svarīgi, lai mums būtu, saka, ja kāds cits apmeklē mājas lapu un tiešām patīk ziņu, ka viņi var iesaistīties diskusijā ar citiem cilvēkiem, kas apmeklē šo lapu. Tātad, mēs ejam, lai iet un radītu jaunu datu bāzi galds un jaunais modelis lai mēs varētu saistīt komentāri ar amatu. Tātad pirmais solis, tāpat kā agrāk, ir tas, ka mums ir nepieciešams, lai palaistu migrāciju. Tātad, piemēram, pirms, mēs php artisan migrēt: padarīt. Un mēs ejam, lai radītu vienu sauc create_comments_table. Tas radīs failu kas ir mūsu jauno migrāciju. Un mēs ejam, piemēram, pirms, definēt jaunu tabulu. Tātad shēma :: radītu galda sauc komentārus. Šī funkcija šeit. Un iekšā šajā tabulā, kas mēs gatavojamies darīt, ir, pirmkārt, kā agrāk, piešķirt ID. Inkrementi ID. Mēs ejam, lai ļautu lietotājiem saistīt viņu vārds ar īpašu komentāru. Mēs ejam, lai ir dažas saturu, kas iet kopā ar šo, teksta saturu. Un šeit tas, ko mēs gatavojamies darīt, ir kaut kas atšķirīgs. Mēs ejam, lai izveidotu skaitli ka sauc post_id kas gatavojas neizsaka kāda amatu īpaši komentārs iet ar. Bez tam, mēs patiešām gatavojas noteikt ārvalstu galveno spiedienu uz to. Tātad MySQL ieviesīs to. Mēs nemēģinām piešķirt komentāru numuru 5 ievietot 5,000, ja mums ir ne bija 5000 amatu par to. Tātad, ko mēs darām šeit, mēs ārvalstu post_id tiks saistīts ar ID lauks no galda amatiem. Un mēs faktiski darīt kaut ko cits noderīgs, ir onDelete. Tātad, ja mēs izdzēst dažus post no datu bāzes, ka mēs vēlamies kaskādes dzēš komentārus, kā arī. Tāpēc, ka tas nav ļoti noderīga mums ir komentāri par amatu ka nepastāv. Un, visbeidzot, tāpat kā līdz šim, mēs esam gatavojas noteikt laika zīmogus par šo. Un, tāpat kā līdz šim, mēs ejam ir reverse migrācija būt metot komentārus tabulu. Tāpēc tagad, ja mēs ejam atpakaļ šeit, mēs ejam palaist šo migrāciju, izpildītāja migrēt. Un tagad tas ir, piemērojot šo migrācija, ka mēs tikko izveidota. Tātad, ja mēs apskatīt phpMyAdmin, mēs, patiesībā, tagad ir komentāri tabulu, kas ir struktūra, kas mēs vienkārši precizēts. Tātad kā agrāk, mēs esam notiek, lai izveidotu jaunu modeli abstraktu SQL tabulas ka mēs tikko izveidota. Tātad, pieņemsim Pievienot jaunu failu. Mēs ejam, lai izsauktu to comment.php. Un tas tiešām būs diezgan vienkārši ar nelielām izmaiņām no tā, ko mums bija pirms tam. Tātad klases Komentārs paplašina Daiļrunīgs. Un ko mēs ejam darīt šeit, ir definēt funkcija, kas ir saistība ar citiem modeļiem. Tātad, mēs ejam, lai būtu post funkcija šeit, kas atgriež šīs attiecības. Tātad, mēs esam norādot, ka tas pieder post, sakot, ka ir viens post ka šis komentārs pieder. Tas patiesībā ir jābūt kapitāls P modelim. Un tagad tikai no otras flip pusē, mums jāsaka, ka, hey. Posts ir komentāri. Tātad, ko mēs gatavojamies darīt, ir definēt valsts funkciju komentārus. Un šeit tiek atgriezta Tas ir daudz komentāru. Tāpēc tagad maģiski, kad mums ir amatu, mēs varam iegūt atribūtu komentāri un tas būs aizpildīt to ar informācija no datu bāzes. Tātad, pieņemsim faktiski iet cauri un pievienot jaunu funkciju, lai mūsu skatu failā lai mēs varam abi displejs un izveidot komentārus. Tātad mēs ejam, lai noteiktu jaunu sadaļu. Pieņemsim tikai nodalīt ar horizontālu likums. Sadaļa id = "komentāri". Ko mēs darīsim šeit ir, kā agrāk, atkārtot, izmantojot visiem komentāriem. Tik tiešām, kā mēs to darām, ir, kā jau minēju, diezgan maģisks. Mēs darām pievienot komentārus. Un tad mēs varam darīt, lai katram cilpa pār katru no komentāriem. Un ko mēs ejam darīt, ir div class komentārs, un mēs braucam faktiski izdrukāt šo komentāru. Tā parādīt, ka hey, komentēt name-- personu kurš ievietojis šo comment-- saka dot dot dot. Mēs ejam, lai nodot to blokā quote, tikai, lai tas izskatās jauki. Un tad komentēt satura bloku cenas. Un foreach. Tāpēc tagad tas notiek, lai cilpa cauri visiem komentāriem kas ir saistīta ar katru no posts un parādīt katra no šiem komentāriem. Es esmu gatavojas pievienot citu sadaļu uz leju šeit, kas ļauj mums, lai pievienotu komentāru. Tātad h3 klase. Put nosaukumu šeit. Pievienotu komentāru. Un mēs esam gatavojas noteikt jaunu formu. Tātad kā agrāk, mēs esam darīsim forma rīcību. Un šeit, jaunā prasība ir, mēs esam gatavojas noteikt jaunu kontrolieris, kas ļauj mums atbildēt ievietot pieprasījumi radot komentārus. Tātad URL :: maršruts createComment. Es esmu gatavojas pāriet parametrs šeit. Amata ID, mēs esam radot komentēt. Un pēc tam metode šī veidlapa būs post. Tagad mēs ejam, lai pievienotu divi lauki, forma grupa. Tas būs ieguldījums ar vārds "vārdu" un class = "form-kontrole", type = "teksts", un ar vietturis = "Jūsu vārds." Mēs arī gatavojamies definēt cita veida lauks, kas būs teksta apgabals, kā mums bija agrāk. Tāpat kā līdz šim, to sauc par saturu. Class = "forma-control." Viettura = "Rakstīt šeit." Un tikai tāpēc, ka mēs faktiski var iesniegt, iesniegt veidu un class = "btn btn-primārais." Aizveriet formu. Aizvērt šo darbību. Tāpēc tagad, ja mēs atsvaidzināt šo lapu kur mums ir, teiksim, īpašu amatu. Mums ir pārstartēt serveri. PHP artisan kalpot. Pārstartēt šo. Mums ir noteikt maršrutu. Bet tagad, pieņemsim tikai ņemt to no tā, ka mēs patiesībā varam parādīt jums kāda lapa izskatās, un pēc tam mēs faktiski rada šo maršrutu. Tātad, hey. Mums ir šo jauno leju šeit lai mēs varētu radīt komentārus. Tātad, pieņemsim faktiski jādefinē funkcija kontrolieris lai mēs varētu pievienot komentārus. Iesim atpakaļ. Un laikā blogcontroller.php, ko mēs gatavojamies darīt ir izveidot jaunu funkciju aicināja izveidot komentāru. Sabiedrisko funkciju createComment. Tas nāksies vienu parametrs, ID amatu ka mēs esam komentējot. Un, tāpat kā līdz šim, mēs esam gatavojas vispirms iegūt amatu. Tātad post, findOrfail id. Pēc tam, mēs ejam lai izveidotu jaunu komentāru. Tātad komentēt = jaunu komentāru. Komentārs name = Input :: saņemt vārdu. Komentārs saturs = pati jaunā līnija uz pārtraukumiem, ieeja :: iegūt saturu. Un visbeidzot, mēs esam nāksies saistīt šo komentāru ar pastu. Tātad, mēs ejam, lai izmantotu šī funkcija, komentāri, kas ļauj mums ietaupīt šīs attiecības. Tāpēc tagad šis komentārs būs automātiski post ID. Mēs varētu arī noteikt to manuāli, bet tas ir vairāk viegli lasīt, cik kā funkcija iet. Un pēc tam, kad mēs veicam tas, ko mēs vēlamies darīt ir novirzīt lietotājam ko viewPost noteikts maršruts ar masīvu ar parametrs pēc ID. Un tagad tā, ka tas patiesībā funkcijas, mums ir nepieciešams definēt šo maršrutu. Route :: post. Un tagad mēs ejam, lai izsauktu šo post slash ID slash komentāru. Array izmanto jaunu funkciju ka mēs tikko izveidota. BlogController. CreateComment kā createComment. Lieliski. Tāpēc tagad, cerams, ja mēs atsvaidzināt šo lapu un pievienot komentāru, teiksim, David Malan. "Cerams, ka tas darbojas." Iesniegt. Mēs, patiesībā, ir komentēt šo blog post. Cool. Tāpēc tagad mums ir diezgan funkcionāls blog post. Mēs esam tikai gatavojas pievienojiet dažas tweaks tik ka mums ir dažas vairāk noderīgs Informācija par šiem amatiem. Tātad, ja mēs ejam atpakaļ uz sākumlapā, mums nav nekādas jēgas cik daudz komentāri par katru no šiem amatiem. Tātad, ko mēs patiesībā notiek to darīt, ir, iekšā mūsu modeli, noteikt palīgs funkcija, kas ļauj mums norādīt komentāru skaitu kas iet ar konkrētu amatu. Tātad, mēs ejam, lai radītu palīgs funkcija. Publiskā funkcija. GetNumCommentsStr. Tātad virkne, kas apzīmē numuru komentāri, kas iet kopā ar to. Un tas, ko mēs gatavojamies darīt, ir teikt ka num = Šis komentāru skaits. Tātad mēs ejam rēķināties komentāru skaits. Un, ja šis skaitlis ir vienāds ar 1, mēs esam tikai gatavojas atgriezties 1 komentārs. Un tad citādi, mēs vēlamies, lai atgrieztos konkatenācija num un komentārus, lai mēs iegūtu pluralization pareiza. Tikai padara šo vienu citātu. Viens komentārs. Un tagad mēs varam izmantot šo funkciju tieši iekšpusē mūsu domām. Tātad, ja mēs ejam atpakaļ uz daļējās posts, mēs izveidojām, Tagad mēs vēlamies, lai faktiski parādīt vairākus komentārus. Tātad, ko mēs varam darīt, ir post, izmantojiet šo funkciju ka mēs tikko izveidota, lai parādīt vairākus komentārus. Tātad, ja mēs tagad atsvaidzināt, to tas, patiesībā, displejs ciparu komentāri kas iet kopā ar to. Ja mēs vēlējāmies būt iedomātā, ja jums faktiski apskatīt sadales kodu, mēs faktiski var saistīt to komentāriem. Ja jūs atceraties, mēs definējām laikā viedokli, ka šis ir sadaļā ID komentārus. Tātad, ja mēs patiešām vēlējās saistīt tieši komentāru sadaļā, ko mēs varētu darīt, šeit ir href URL maršruta viewPost. Caurlaide masīva ID post ID. Un tad mēs gribam iet uz īpaši komentāru sadaļā. Šeit pieņemsim aizveriet A tag. Tāpēc tagad, ja mēs atsvaidzināt šo lapā, mēs noklikšķiniet uz to. Mēs iet tieši uz komentāri sadaļā. Ja mums būtu ilgāks amatu, jūs varat faktiski redzēt šo lielība leju. Bet jūs pamanīsiet, ka tā ir ne augšpusē lapas. Cool. Lieliski. Tā ka ir diezgan vienkāršs piemērs kaut ko vienkāršu ka jūs varat darīt ar Laravel. Bet jūs varat pamanīt šeit, ka mēs esam darījuši daudz lietas ar samērā nelielu summu kodu. Laravel ļauj mums darīt SQL vaicājumu aizkulisēs. Tā dara sanitārija mums aiz ainas. Ļauj mums darīt šīs attiecības ļoti viegli, bez mums nepieciešamības darīt jebkuru SQL pievienoties paziņojumus apvienot komentārus ar kādiem amatiem. Ļauj mums to darīt mantojums veidnes lai mēs varētu definēt šos ligzdošanu failus, lai mēs esam ne atkārtojot sevi, tāpat kā tad, kad mums bija, ka displejs blog posts ka mums nav kopēt un ielīmēt kodu. Un no šejienes jūs varat veidot arvien sarežģītas lietojumprogrammas. Jūs varat iedomāties, ja mēs gribēja ieviest log-in, mēs varētu teikt, ienest trešajai personai regulējumu, kas ļauj mums, lai to izdarītu. Tur ir ķekars no tiem ka ir ļoti, ļoti liela, ka var darīt, piemēram, paroles atgūšana. Un tas jums nosūtīsim reset paroli e-pastu. Mēs varam ieviest atļauju lai es varētu izveidot amatu, bet kāds cits nevar rediģēt. Mēs varam īstenot funkcionalitāti dzēst posts. Bet jūs varat redzēt šeit, ka mums ir diezgan daudz visi rudimentāru sastāvdaļas veidot daži patiešām, patiešām, dinamisku un aizraujošu tīmekļa lietotnes. Tātad ar to, es domāju, ka mēs esam labi. Vai jums puiši ir kādi jautājumi? Jā? SPEAKER 3: Kā jums nokļūt statisku saturu? ERIC Ouyang: Static saturs. Tātad, jūs redzēja pirms tam, kad mums bija Šīs tiesības šeit, šī struktūra saturs, skats marka, mums bija šis bez šī masīva vēlāk. Blog.index, mums bija šis kā tikai statisku failu. Tātad, ja mēs neietu kaut kas pa to, tas būs tikai padarīt HTML tieši. Bet, ja mums iet šajā asociatīvi masīvs amatu, kas ir dinamiski izvilkts no datu bāzes, mēs var padarīt lapas dinamiska. Cool. Jebkādi citi jautājumi? SPEAKER 3: Kā Jūs salīdzinātu Laravel lai varbūt dažas citas iespējas? ERIC Ouyang: Protams. Yeah. Tātad Laravel is-- tas ir liels question-- viens no daudziem iespējas tīmekļa sistēmām. Tātad Ruby on Rails ir viens, kas ir populārs. Es uzskatu, ka Twitter mēdzu būt īstenots ar Ruby on Rails. Es domāju, ka tie esam kopš pārgāja. Ir vēl viena sauc FuelPHP. Tātad Ruby on Rails izmanto Ruby valodu un īsteno daudz MVC sīkumi ka mēs redzam šeit. FuelPHP ir vēl viens PHP sistēmu. Django ir viens no maniem favorītiem. Tas ir web sistēmu Python. Tātad jūs varat uzrakstīt savu interneta app Python. Tātad tur ir ton no šiem variantiem. Laravel, es domāju, ko un Liels ir mans mīļākais taisnība tagad PHP tikai tāpēc, ka Komponentu ka mēs runājām par agrāk. Tas ir Komponists ļāva. Tas ietver ļoti, ļoti izteiksmīga ORM sistēmas. Ir arī patiešām foršo šablonu valodas, ka daži no citiem vienkārši nesniedz. Un migrācija. Migrācija ir awesome, kā arī. Cool? Awesome. Nu, pateicoties tik daudz par skatoties šo semināru, un labu veiksmi jūsu gala projektiem.