[Jwe mizik] ERIC Ouyang: Hey, tout moun. Byenveni. Sa a se Building dinamik Entènèt Apps ak Laravel. Non mwen se Eric Ouyang. Mwen se yon sophomore etidye syans sosyal ak yon segondè nan syans òdinatè, ak mwen ap viv nan Adams House isit la nan Harvard. Se konsa, Laravel, nan pifò nwayo li yo, se yon fondasyon app entènèt mv. Se konsa, renmen sa ou nèg gen te fè ak CS50 Finans, Laravel se yon fondasyon ki pèmèt ou bati apps entènèt dinamik. Se konsa, ou ka panse a li nan kèk sans kòm yon ekstansyon nan kalite la nan bagay ou ve yo te fè nan CS50 Finans, men yon sistèm ki la yon anpil plis gaya, yon anpil plis elegant nan kèk sans, epi li bay yon anpil nan fonctionnalités pou ou yo bati san patipri konplèks aplikasyon pou entènèt. Se konsa, kite a ale nan kèk nan karakteristik yo ki kle, ak Lè sa a, nou pral plonje nan yon egzanp nan bati yon blog aplikasyon ak Laravel. Se konsa, youn nan bagay ki premye ki diferans li nan men kalite mv nan travay ke ou ve yo te fè ak CS50 se li gen ladann yon motè ORM. Se konsa, ORM kanpe pou objè kat relasyon. Se konsa, sa a pèmèt ou bati yon kouch distraksyon ant baz done a ak contrôleur ou. Se konsa, kontrèman ak nan CS50 Finans ki kote ou dirèkteman fè demann, kouch nan ORM pèmèt ou abstrè ki lwen ak kreye modèl ki gen plis pouvwa anpil pase ou kapab dirèkteman ak demann SQL. Yon lòt bagay sa ki nan vrèman itil se modèl ereditè. Se konsa, ou pral avi nan CS50 Finans, ou fini reekri yon anpil nan bagay sa yo, kote kote ou te kapab potansyèlman jam itilize bagay sa yo, ou pa kapab. Se konsa, isit la nan Laravel, ou ka itilize sa ki nan li te ye tankou motè a modèl lam yo kreye yon Layout mèt. Li te pran depi gen, ou kapab eritye se konsa ke sub-modèl ka aktyèlman gen ladan eleman nan ki pi gwo modèl baz. Migrasyon. Se konsa, sa a se yon karakteristik san patipri estanda sou pi modèn aplikasyon web cadres. Se konsa, sa a pèmèt ou reprezante chanjman baz done proje nan kòd. Se konsa, san yo pa pral di, fpmyadmen, ou ka aktyèlman kreye migrasyon sa yo kote ou reprezante baz done a proje chanjman ki fèt nan Kòd dirèkteman. Lè sa a pèmèt ou to-- espesyalman si ou gen plizyè moun k ap travay sou application-- wèb la menm swiv chanjman sa yo, di nan GitHub, oswa kèk lòt repozitwa. Se konsa, sa a se reyèlman itil ak redwi bezwen an nan, di, pase alantou yon anpil nan SQL depo. Epi finalman, konpozitè se yon bagay ki reyèlman, reyèlman itil ki pèmèt ou sèvi ak lòt Kòd moun nan fè bagay sa yo pè. Se konsa, Laravel a estriktire kòm plizyè pakè konpozitè. Se konsa, di si ou te vle pote nan yon pake Otantifikasyon oswa si ou te vle pote nan kèk sòt de script dèlko oswa yon admin koòdone, ou kapab ploge ak jwe moun konpozan ak konpozitè. Se konsa, kite a jwenn te kòmanse. Nenpòt kesyon nan men ou mesye anvan nou jwenn te kòmanse? Pa gen kesyon? Cool. Se konsa, premye etap la se enstale konpozitè. Se konsa, konpoziteur pèmèt ou jere Dependencies sa yo, si li nan fondasyon an Laravel oswa kèk lòt ekstansyon twazyèm pati. Lòd nan premye pèmèt ou download konpoziteur, ak lòd nan dezyèm pèmèt ou deplase li nan folder bin lokal ou a se konsa ke ou ka kouri konpozitè dirèkteman atravè tèminal la. Apre sa, ale pi devan epi kreye yon nouvo pwojè Laravel. Nou ap aktyèlman ale nan sèvi ak kèk Kòd egzanp ke mwen te mete tèt yo ansanm yo kreye sa a blog. Men, si w ap kòmanse nan grafouyen, ou ta sèvi ak kòmandman sa a moute isit la, konpozitè kreye-pwojè, Laravel koupe Laravel, ak Lè sa a, non an nan pwojè ou. Epi sa ap gen ladan tout kòd la distribisyon pou kòmanse yon nouvo pwojè Laravel. Se konsa, pou CS50 pwojè final ou, ou pral pwobableman vle sèvi ak sa yo lòd. Men, nou ap ale nan kòmanse ak sa a. Se konsa, yon fwa ou te fè sa, ou ap ale nan jwenn yon PO san patipri vaste nan dosye an blog50. Se konsa, kite yo jis ale nan kèk nan sa yo konpozan. Ou pral remake nan wout sa a anyè, gen yon katab app. Anndan folder nan app, gen nan yon koup dosye itil. Nan nòt kòmanse ak se sa a folder config. Se konsa, sa kouche moute ki jan aplikasyon web ou a se ale nan, di, legalized moun oswa bagay lajan kach oswa konekte nan baz done a. Ak sa ki nan vrèman itil se ke Laravel pèmèt ou yo mete kanpe diferan devlopman anviwònman. Se konsa, sa nou te fè isit la se si nou ale anba folder nan lokal yo, gen nan yon dosye database.php. Epi ou pral avi isit la ke nou mete kanpe yon koneksyon miskl ki pèmèt moun yo konekte nan sèvè a miskl sa a, se dirèkteman sou aparèy la CS50. Epi nou ap konekte nan yon baz done ke mwen mete kanpe rele Blog50. Se konsa, kite a aktyèlman ale pi devan epi kouri vèsyon an k ap travay nan sa a, jis yo ka resevwa yon sans de sa ki nan aplikasyon ke nou ap bati sanble. Se konsa, mwen gen yon kopi sa a Blog50 ranpli. Se konsa, aktyèlman Laravel te bati nan yon sèvè ke ou ka kouri dirèkteman soti nan liy la lòd. Se konsa, sa a se menm jan ak nan PSet anvan lè ou aktyèlman bati sèvè pwòp ou a nan C. Se konsa, yo te yon sèl bati nan se konsa ke ou ka kouri apps Laravel ou ki sòti dirèkteman nan liy lan lòd. Se konsa, si nou fè php atizan sèvi, sa a pral lanse yon sèvè devlopman sou pò 8,000. Se konsa, si nou ale nan lame lokal 8,000, ou pral avi ke, hey. Nou gen nou moute blog ak kouri. Se konsa, isit la se Laravel génération paj la devan nan blog nou an. Trè senp aplikasyon. Men, gen nan yon koup karakteristik reyèlman debouya ke li bay anba kapo a. Se konsa, aplikasyon an blog la senp. Si nou te vle kreye yon pòs, nou ka klike sou ki bouton. Nou ka di, "Hey, tout moun. Sa se yon plezi vrèman seminè, "pou egzanp. Epi ekri yon bagay desann isit la. Tèks isit la. Si nou klike sou soumèt, ou pral remake ke nouvo blog nou an post te ajoute nan la paj devan nan blog la. Si nou tounen isit la, ou pral avi ke te gen kèk kòmantè deja sou blog la. Se konsa, si nou desann, ou pral remake ke Jonatan Tan di ke li te trè entrige pa pòs sa a. Se konsa, nou pral ale nan ki jan objè kat relasyon pèmèt ou fè relasyon sa yo nan yon fason san patipri san pwoblèm kòm byen. Cool. Nenpòt kesyon sou fonctionnalités nan ki sa nou ap ale nan bati? Cool. Se konsa, kite la kòmanse soti ak aktyèlman kreye tab yo baz done. Se konsa, sonje ke nan CS50 Finans, ou mete ansanm yon tab pou itilizatè yo menm jan tou pou la aksyon nan pòtfolyo ou. Se konsa, jan nou mansyone pi bonè, ki sa nou itilize nan Laravel se yon bagay ke yo rekonèt kòm migrasyon. Se konsa, si nou tounen nan la kòd distribisyon isit la, lòd nan premye ki se itil ki Laravel bay ou se sa a lòd emigre. Se konsa, nou ka fè php migrasyon atizan: fè. Se konsa, sa a pèmèt nou kreye yon migrasyon. Lè sa a, nou pral vle yo kreye yon migrasyon rele create_posts_table, ki se ale yo dwe kote nou ap ale nan gen estoke posts blog nou an. Epi ou pral avi isit la ke li kouri atravè kèk kòd ki aktyèlman jenere yon dosye ak yon koupon pou achte tan sou li. Se konsa, si nou ale ak gade nan baz done, nou pral remake anba Migrasyon ke li nan kreye yon vid dosye pou nou ki gen Kòd boilerplate ak non an ke nou espesifye, kreye posts tab. Epi li gen de fonksyon nan li. Up se ki sa nou vle kouri nan lè se migrasyon aplike nan baz done a. , Li desann se ki sa nou ap ale nan fè lè nou vle ranvèse yon migrasyon. Se konsa, isit kite la kòmanse soti ak ekri sa a migrasyon. Se konsa, gen nan yon klas itil nan Laravel rele chema. Se konsa, nou ap ale nan kouri chema :: kreye. Epi nou ap ale nan kreye yon tab rele posts. Ak isit la nou aplike sa a lè l sèvi avèk yon fonksyon. E nan lespas de isit la, nou ap ale nan aktyèlman presize sa ki nan tablo nou an. Nou pwal kreye yon ID, ki se oto-incrementing. Anplis de sa, nou ap ale yo kreye yon jaden ki reprezante tit la nan pòs blog nou an. Nou ap tou ale nan kreye yon jaden pou estoke tèks la nan pòs blog nou an. Epi finalman, nou ap ale nan magazen kèk timèstanp pou lè yo te post nou an kreye ak lè li te mete ajou. Se pou l 'atè, li nan san patipri ki senp. Tout sa nou vle fè se gout tab la ke nou te kreye. Great. Nenpòt kesyon? Se konsa, kounye a si nou ale pi devan and-- aktyèlman, lame lokal yo, kite m 'efase sa nou te gen pi bonè. Ale nan baz done. Mwen pral efase sa nou te gen pi bonè. Drop sa a ak kreye yon baz done nouvo Blog50. Se konsa, kounye a ki sa majik la pati se isit la ke nou ka aplike migrasyon sa yo dirèkteman nan baz done a lè l sèvi avèk liy lan bay lòd zouti. Se konsa, si nou fè php atizan migrasyon, ou pral avi ke, hey. Li nan kreye tab la migrasyon, ki nou pral pran yon gade nan nan yon ti jan, ak li a aplike sa a migrasyon an premye. Se konsa, nou gade nan Blog50, ou pral avi ke li nan kreye de tab pou nou. Premye se sa a tab migrasyon. Se konsa, si nou browse sa a, ou pral avi ke tablo sa a se jistis senp. Li nan jis te di ke, hey. Nou te aplike sa a migrasyon. Nou ale retounen lakay yo epi gade nan posts. Ou ap remake ke estrikti a se egzakteman sa nou te mande l 'li. Nou gen yon ID oto-incrementing. Nou gen yon fisèl pou estoke tit la, ak yon jaden tèks pou estoke kontni an. Great. Cool. Nenpòt kesyon sou migrasyon travay, ki jan nou ka aplike yo? Pa gen? Cool. Se konsa, kounye a nou ap ale nan ale pi devan ak aktyèlman kreye modèl la. Se konsa, nou vle kreye yon modèl posts ki magazen yon distraksyon nan baz done a. Se konsa, olye ke fè MySQL demann dirèkteman, nou ap ale nan kreye. Se konsa, nou gen yo kreye yon folder nan isit la yo rele modèl. Ak andedan isit la, nou ap ale nan kreye yon dosye rele post.php. Anndan sa a ranpli PHP, nou ap ale nan kreye yon pòs klas ki fin pale fasil. Pearland se non an nan ORM a motè ki Laravel bay. Ak nan isit la, nou ta ka espere ke ou aktyèlman bezwen ekri kèk kòd. Nou pral ekri kèk fonksyon k'ap vin ede pita. Men, soti nan bwat la, sa a pral deja rekonèt sa ki nan nan baz done a epi nou ka gen aksè, di, tèks la nan pòs blog nou an oswa tit la, ak kreye bagay dirèkteman ak bèl anpil pa gen okenn Kòd tou. Se konsa, sa a, se youn nan eleman yo majik. Ak van yon fwa klas sa a se pi plis konplètman véritable, nou pral gen ladan yo enfòmasyon sou sa ki li nan ki gen rapò ak, se konsa kòmantè yo. Epitou kreye yon fonksyon se konsa nou ka aktyèlman dirèkteman jwenn URL la nan yon paj pòs blog. Cool. Nenpòt kesyon sou sa? No Cool. Se konsa, kounye yon fwa nou gen modèl nou an, nou vle kreye yon kontwolè ki nan kapab koòdone yo ak modèl sa yo, ak imedyatman baz done a. Se konsa, si nou pran yon gade nan BlogController, ou pral remake ke gen nan pa anpil isit la kounye a. Tout gen se yon fonksyon endèks ki jenere paj an kay, men san yo pa anyen gen yo montre ankò. Se konsa, fonksyon an premye ke nou ap ale nan kreye se youn ki pèmèt nou yo kreye yon pòs blog. Se konsa, nou ap ale nan deklare yon nouvo fonksyon rele newpost. Ak andedan isit la tou senpleman, nou ap ale yo mete Layout a nan paj sa a yo dwe yon vèsyon rann, si ou sonje soti nan CS50, nan modèl sa a yo rele blog.new, ki nou ap ale nan kreye nan yon ti kras. Ou pral remake isit la sou liy sis ki nou espesifye sa a varyab, layout. Men, si nou pran yon gade nan folder nan Views, gen yon katab kouman, ki gen ladan yon dosye HTML anpil debaz. Ak nan nòt, ou pral avi ke nou gen veso sa a isit la ke vin bay kontni. Se konsa, andedan nan modèl nou an ki sa nou ap ale nan fè se kreye sa k ap pase yo dwe ranplase dirèkteman nan sa a layout. Se konsa, nou te di ke nou vle rann yon modèl rele blog.new. Men, andedan nan Blog, gen nan pa ankò modèl sa a nouvo. Se konsa, nou ap ale nan kreye yon dosye rele new.blade.php. Sa a di Laravel ki sa a ranpli PHP ta dwe dwe rann ak nan lam modèl motè. Se konsa, sa a se yon jistis senp dosye. Li nan pral fè fòm nan pa ki nou aktyèlman ajoute nan yon pòs blog. Se konsa, majik la isit la soti nan la pòsyon tè se ke, hey. Nou vle presize ke an seksyon, seksyon an kontni isit la, ki se detaye pasection akstop. Se konsa, sa ki nan nan ant isit la ki pral dwe ranplase nan Layout a mèt. Ak isit la ki sa nou vle fè se anpil tou senpleman kreye yon nouvo dosye HTML. Se pou yo jis ajoute yon tit rapid. Ajoute yon pòs blog. Ak nan li, nou ap ale nan kreye yon fòm. Fòm sa a ki pral gen yon aksyon. Ak sa a se pral yo dwe yon bagay ke nou ranplase nan pita, epi n ap wè ki jan routage adapte nan isit la. Men, nou ap jis ale nan defini pou kounye a ke sa a ale nan yon URL ak wout la soti nan createPost. Lè sa a, sa a se pral gen metòd post. Nan isit la, nou ap ale gen de jaden yo. Div class = "fòm-gwoup". Nou ap lè l sèvi avèk bibliyotèk la demaraj CSS nèg ki ofri pa Twitter. Se konsa, nou ap ale nan kreye de nan sa yo. Se konsa, sa a D 'premye se pral fè tit la. Non Se konsa, opinyon = "Tit". Class = "FormControl". Kalite = "tèks". Mwen pral ajoute yon kontneur = "Tit". Lè sa a, yon sèl nan dezyèm se pral gen yon zòn tèks. Non = "kontni". Class = "FormControl". Epi kontneur = "Ekri isit la". Gen nou ale. Finalman, nou ap ale nan ajoute yon bouton rapid soumèt. Kalite = "soumèt" class = "btn btn-prensipal". Se konsa, sa yo, se tout karakteristik nan demaraj konsa ke sa a yo ka mete soti nan yon fason ki nan konfyans nan itilizatè a, olye ke toutouni HTML. Se konsa, nou te defini kontwolè a isit la. Nou te defini yon View trè senp. Men, sa ki nan manke se klinèks la konjonktif. Se konsa, nan pwen sa a, Laravel pa gen okenn lide ki jan nou ap ale nan aktyèlman aksè kontwolè sa a. Se konsa, sa se defini nan yon dosye rele routes.php. E yo gen dwa kounye a, nou gen yon sèl wout. Ki se lè nou ale nan la chemen kay pou sit entènèt sa a, li a pral rann kontwolè a endèks. Se konsa, isit sa nou bezwen fè se aplike yon nouvo wout pou nou yo kreye yon pòs. Se konsa, nou sèvi ak metòd sa a jwenn, ki presize ke lè yon itilizatè ap eseye jwenn sa a page-- espesyalman post la koupe nouvo page-- ki sa nou ap ale nan fè se sèvi ak kontwolè a rele BlogController nouvo pòs. Yon sèl la ke nou jis kreye. Lè sa a, nou ap ale Alyas li kòm newpost. Nou pwal kreye yon lòt fonksyon nan yon ti kras. Men, sa ki nan isit la anba kle a "kòm" se sa ki nou ka ranplase nan lam modèl nou an. Se konsa, pou kounye a, se pou yo aktyèlman di tou wout. Se konsa, nou ap tou ale yo kreye yon kontwolè pou nou ka kreye sa yo posts. Se konsa, si yon posts itilizatè nan post la paj koupe nouvo, sa nou ap ale nan fè se sèvi ak yon kontwolè ki nou ap ale nan kreye yon ti tan rele BlogController nan createPost. Epi nou ap ale nan alyas sa a ak kòm createPost. Cool. Nenpòt kesyon? Cool. Se konsa, kite a kouri sa nou genyen byen lwen tèlman. Se konsa, si nou fè php atizan sèvi, nou pral wè anpil nan erè. Se konsa, li sanble nou gen yon erè sentaks sou wout liy 27. Ah. Ki manke yon virgules. Se konsa, si nou ale nan 8,000, ou pral wè pa gen anyen isit la ankò. Se konsa, sa a se paj an kay default. Men, si nou ale nan pòs koupe nouvo, hey. Li pral fòm nan ke nou jis kreye. Dwa koulye a, nou pa gen aplike fonctionnalités a nan lè nou peze soumèt nan bouton. Se konsa, si nou klike sou soumèt a bouton, li nan ale nan kouri yon erè. Men, nou ap ale nan kòd ki kounye a, jisteman sa nou vle fè lè yon itilizatè soumèt fòm sa a. Se konsa, kite a fè sa. Tounen nan dosye a regulateur. Ki sa nou ap ale nan fè se aplike fonksyon sa a nouvo ki pèmèt nou kreye yon pòs. Esplike nouvo fonksyon. Fonksyon Piblik createPost. Ak fonksyon sa a ki pral yo dwe yon ti kras pi plis sofistike pase sa nou te gen anvan. Men, ou pral wè isit la ke nou pa ap ale nan aktyèlman ekri nenpòt SQL. ORM a, pale fasil nan ORM, ki pral pèmèt nou fè sa nan kèk fason yon fason pi plis elegant. Se konsa, nou ap ale nan kreye yon pòs nouvo. Ak isit la nou ap enstansyasyon yon objè ki nouvo soti nan modèl la ke nou jis kreye, modèl la pòs. Ak sa ki nou ap ale nan fè se mete a atribi tit nan sa a lè l sèvi avèk yon bagay ke nou jwenn nan sèvè a. Se konsa, sa a se menm jan ak sa nou te genyen anvan nan CS50 Finans kote nou ta fè, lè l sèvi avèk Super la Global Post kap chèche tit. Se konsa, Laravel bay kèk sanitasyon lè l sèvi avèk ak etajèr fonksyon k'ap vin ede sa a. Se konsa, nou ta pito sèvi ak sa a olye pou fòm sa a anpil debaz anvan tout koreksyon soti nan PHP. Lè sa a, ki sa nou ap ale nan fè se mete kontni an nan li nan Antre jwenn kontni. Nou ap aktyèlman ale nan vlope sa a nan yon fonksyon itil ki PHP bay rele nl2br, ki vire nouvo liy, nl, nan BRS, repo, pou nou ka gen aktyèlman paragraf diferan nan li. Epi finalman sa nou ap ale fè se sove pòs sa a. Se konsa, nou rele fonksyon an konsève pou sou modèl sa a. Nou pwal pou konsève pou post la. Epi finalman ki sa nou ap ale nan fè se redireksyon itilizatè a espesyalman wout la ki nou ap ale nan kreye yon ti tan, alyas pa viewPost. Epi nou ap ale nan pase nan agiman yo id, yo te id nan pòs nouvo sa a. Great. Se konsa, kounye a si nou aktyèlman ale epi kouri sa a. Nou pral ajoute yon pòs nouvo. Se pou nou di sa a se seminè 50. W'a di, asire w. Asdl. Kèlkeswa. Gen kèk sòt de kontni. Epi soumèt li. Epitou, n ap remake ke, hey. wout pa defini. Men, si nou pran yon gade nan fpmyadmen ak gade pou si ou pa fonksyon nou an te fè anyen. Gade nan Blog50 posts. Nou pral avi ke, hey. An reyalite, nou t 'jis kreye ki blog afiche ak timèstanp yo jan sa espesifye. Se konsa, kounye a kite a tounen ladan l epi aktyèlman kreye sa a lòt fonksyon nan kontwolè nou an, espesyalman kontwolè a viewPost. Se konsa, piblik viewPost fonksyon. Se konsa, isit sa nou pral fè, olye pou ki gen parantèz vid, nou pral vle pase nan ID a post la ke nou ap kreye. Li te pran depi isit la ki sa nou ap ale nan fè se aktyèlman sijè rechèch baz done a pou li. Se konsa, si nou afiche, gen nan yon fonksyon rele Jwenn ki pèmèt nou sijè rechèch li pa ID. Espesyalman, aktyèlman, nou ap ale nan sèvi ak yon vèsyon altène nan sa a yo rele Jwenn oswa Echèk, ki pèmèt nou kite fimen soti nan fonksyon sa a, jete yon eksepsyon si ID a nou pase nan pa egziste. Lè sa a, nou ap ale nan fè yon bagay menm jan ak sa nou te fè pi bonè kote nou mete kontni an nan paj sa a yo dwe vèsyon an rann de vi sa a nouvo ki nou ap ale nan kreye, blog.view. Epi nou ap ale nan pase nan l-- jis tankou nan CS50 nan rann fonksyon yon diksyonè nan varyab. Kle yo nan sa a etalaj asosyatif vin varyab ki nan modèl la. Se konsa, nou ap ale nan fè pòs pòs. Se konsa, pase endirèkteman post la ki nou te kontexte soti nan baz done a. . Kounye a ki sa nou ap ale nan fè se kreye sa a wè se konsa ke nou ka aktyèlman wè poto yo blog ke nou te bati. Se konsa, nou ap ale nan kreye yon dosye rele view.blade.php. Se konsa, andedan nan modèl sa a, ki sa nou ap ale nan fè se mete ansanm yon paj senp ki pèmèt nou montre kontni an. Se konsa, nou fè seksyon, sa a, se anvan kontni. One Stop. Ak sa ki nou ap ale fè nan isit la se ekri kèk HTML montre paj sa a. Se konsa, nou ap ale nan vlope li ak yon anpenpan nouvo eleman HTML5 rele Atik. Ak nan isit la, nou ap ale gen yon header ki kote nou ap ale nan tou senpleman gen yon H1, ki gen ladan tit la post. Se konsa, isit la, si nou gade nan sa a doub Curly atèl notasyon, sa a pral fè esansyèlman PHP repete post tit. Se konsa, li nan yon steno itil ki Laravel bay nou. Se konsa, nou ap ale nan sèvi ak notasyon sa a olye. Ak isit la, nou ap ale nan tou enprime soti sa ki ekri nan li. Ak nan isit la, nou ap ale fè pòs kontni. , Li desann nan pati anba a ki sa nou ap pral fè se kreye yon footer. Ak nan footer a, nou ap ale nan premye ekspozisyon lè sa a te afiche. Se konsa, sa a te afiche nan, ki te kreye nan. Epi Laravel sèvi ak yon reyèlman bon dat bibliyotèk rele Kabòn. Se konsa, nou ka aktyèlman fè yon bagay yo rele difforHumans, ki ou te wè pi bonè. Lè nou afiche. li pral di, tankou, senk segonn de sa. Se konsa, sa a se yon vrèman bèl fonctionnalités nan Laravel. Epi finalman, nou ap ale yo fèmen footer sa a. Se konsa, kounye a si nou tounen nan Page Kay nou ap ale wè pa gen anyen isit la ankò paske nou pa gen kode moute paj la lakay yo. Men, si nou ale nan pòs yon sèl koupe, nou ap ale nan wè yon eksepsyon. nenpòt moun ki konnen poukisa nou wè yon eksepsyon? Ki sa yo nou manke? Nenpòt lide? Se konsa, sa te fè nou fè pi bonè pou nou aktyèlman yo defini ki jan nou jwenn yo contrôleur patikilye? Oratè 1: Wout la? ERIC Ouyang: Yeah. Se konsa, nou toujou gen yo defini wout la. Se konsa, nou ale tounen isit la yo routes.php. Ou pral remake ke nou pa gen aktyèlman defini ki jan nou ap ale nan jwenn nan kontwolè a. Se konsa, kounye a nou ap ale nan defini wout sa a. Li nan san patipri senp, menm jan ak sa nou te fè pi bonè. Men, sa ki nou ap ale nan avi isit la se ke nou ap ale nan gen yon kontneur. Se konsa, si nou fè route.get ID post koupe. Se konsa, kounye a se ID sa k ap pase dwe pase nan kontwolè a. Sa a se ale nan sèvi ak nan kontwolè ke nou jis kreye, BlogController nan viewPost. Epi nou ap ale nan jaden sa a kòm viewPost. Great. Se konsa, kounye a nou ap ale nan kreye wout sa a. Se konsa, kounye a si nou ale isit la ak rafrechi paj sa a, nou an reyalite gen nouvo pòs blog nou an. Se konsa, sa a se sa nou te kreye pi bonè. Trè paj senp, men montre a pòs blog ke nou jis kreye. Cool. Men, si nou aktyèlman ale nan tout la pwosesis pou kreye yon pòs blog nouvo, nou pral remake ke tout bagay redireksyon byen. Si mwen di, "Hi. Mwen se Jonatan Tan. " Di, "Sa a se pòs blog mwen an." Epi soumèt li, sa a pral kreye sa a pòs blog nouvo ak ID 2, ki ogmantasyon soti nan sa ki nou te gen deja epi montre li byen. Awesome. Nenpòt kesyon? Wi? Oratè 2: Èske Laravel manch Pwòpte ak tout bagay pou ou? ERIC Ouyang: Wi. Se konsa, lè nou te wè pi bonè lè nou te fè opinyon kolon kolon jwenn, ki sanitates nenpòt SQL piki ak etajèr ke nou ta ka vle fè si nou se yon itilizatè move nan sit entènèt la. Se konsa, Laravel manch yon anpil nan ki dèyè sèn nan. Bon kesyon. Se konsa, kite a pran yon gade nan paj an kay. Se konsa, si nou premye ale tounen nan la kontwolè pou paj kay, ou pral avi ke li pa fè anpil isit la. Ou pral remake ke nou pa ap pase nan kontwolè sa a anyen patikilyèman itil. Se jis sa a ranpli endèks. Se konsa, kite a pase nan sa a yon bagay itil. Epi espesyalman, nou ap pral pase nan posts. Epi Laravel pèmèt nou fè pòs tout, ki pral pèmèt nou jwenn tout poto yo. Koulye a, si nou tounen nan index.php, ou ap wè, hey. Pa gen anyen isit la ankò. Men, ki sa nou vle fè isit la se aktyèlman repekte nan, fè yon bouk fortch sou poto yo ki pèmèt nou enprime soti poto yo. Se konsa, kòm posts fortch pòs, ki sa nou vle fè se enprime soti sa ki ekri nan post la blog. Men, yon sèl bagay ou pral avi se ke nou aktyèlman te ekri pi fò nan ki Kòd deja, nan view.blade.php. Se konsa, sa nou ap ale nan aktyèlman fè se sèvi ak yon bèl karakteristik itil nan lam ak faktè soti sa a Kòd komen. Se konsa, nou ale isit la. Nou pral pran kontni sa a dwa isit la, ak sa nou ap ale nan fè se kreye yon nouvo folder. Se pou nou jis rele li parsyèl. Ak nan isit la, nou ap ale yo kreye yon post.blade.php. Se konsa, isit la, nou faktè soti wout la nan ki nou vle montre sa yo posts. Ak isit la ki sa nou pral fè olye pou yo aktyèlman gen ki HTML dirèkteman, nou ap ale nan sèvi ak sa a direktiv rele gen ladan blog.partials.post. Ak sa ki nou ap ale nan fè isit la se pase nan post la nan paj la. Se konsa, kounye a si nou tounen isit la, nou pral remake ke fonctionnalités a se toujou menm bagay la. Men koulye a, nou gen sa a faktè soti kòd, HTML sa a. Se konsa, nou ka sèvi ak li nan Index. Se konsa, isit la, sa a se trè senp. Tout sa nou fè se genyen ladan yo blog.partials.post ak etalaj. Ak yon kote anvan, nou fè pòs pòs. Se konsa, kounye a si nou tounen nan la paj lakay, nou pral wè sa, hey. Nou gen yon lis nan tout blog posts ke nou te gen anvan. Nou ta ka vle ajoute kèk "si" kondisyon ak "lòt" kondisyon se konsa ke si nou pa jwenn okenn anyen sou blog la, nou vle montre yon bagay itil. Tankou, hey. Gen nan pa gen kontni ankò sou blog la. Men, si ou nèg aktyèlman gade nan kòd la distribisyon sou GitHub, ou pral wè yon egzanp sou kouman nou fè sa. Cool. Nenpòt kesyon? Wi. Oratè 2: Mwen devine jis yon kesyon fondamantal. Retounen nan wout la. ERIC Ouyang: Yeah. Si nou pran yon gade nan wout. Oratè 2: Ki kote fè a uses.blogcontroller nan kreye post, ki sa sa dirije nou yo? ERIC Ouyang: Yeah. Yeah. Oratè 2: Oswa ki sa ki that-- ERIC Ouyang: Se konsa, pran yon gade, di pou egzanp, wout sa a dwa isit la. Pati nan premye se aktyèl la URL ki itilizatè a ap ale nan. Epi sa a etalaj isit la, asosyatif etalaj, defini ki jan nou vle gen nan aplikasyon aji nan repons a li. Se konsa, sèvi ak se kontwolè a, fonksyon an ke nou vle rele lè yon itilizatè ale nan URL sa a. Se konsa, viewPost dwa isit la se te yon fonksyon ke nou defini andedan nan BlogController-- Oratè 2: mwen wè. ERIC Ouyang: --so ke nou ka aktyèlman pran yon vi, fè kèk kalkil, kominike avèk baz done a SQL. Oratè 2: OK. ERIC Ouyang: Lè sa a, lòt la pati, "kòm" se yon alyas ke nou itilize. Se konsa, si nou remake lè nou te kreye fòm nan, ou pral avi ke URL :: routecreatePost. Se konsa, li ranplasman an aktyèl la URL pou ke nou pa ap difisil kodaj sa yo nan pou nou ka chanje li yon fwa, di si nou te vle chanje non. Olye pou yo pòs koupe nouvo, nou vle fè tankou, p koupe nouvo jis nan pwòp moute URL nou an yon ti jan. Nou ta chanje li nan yon sèl plas olye pase atravè tout dosye yo diferan. Cool. Sa a bon. Se konsa, kounye a nou gen yon trè platfòm blog de baz yo. Nou pwobableman vle ajoute nan yon bouton se konsa ke nou ka aktyèlman kreye nouvo posts. Se konsa, si nou pran yon gade nan Mèt la Layout, nou gen yon seksyon yo rele Header Dwa ke nou te jis defini moute nan tèt la. Se konsa, nou ka ajoute bouton tèt la nan header la. Se konsa, si nou ale nan index.blade.php, aktyèlman fè se defini ki sa ale andedan nan isit la. Se konsa, seksyon Header Dwa sa a, ki sa nou ap ale nan fè se ajoute nan yon bouton pou yo ale nan la URL defini nan wout nouvo post la. Jis netwaye li leve, li fè li trè ak tout demaraj, nou ap ale nan fè sa a bouton yon defo. Se pou nou jis fè li gwo pou plezi. Ak andedan li, nou te ka mete kèk tèks. Men, sa ki demaraj bay se glyphicons. Se konsa, nou ka aktyèlman ajoute nan ki bèl kreyon ke nou te wè pi bonè. Glyphicon. Glyphicon-kreyon. Se konsa, sa a pral pèmèt nou mete nan yon icon olye pou yo tèks. Koulye a, si nou sispann, sa a pral defini seksyon sa a. Epi, hey. Nou gen yon bouton bèl ki lyen nou dirèkteman nan a ajoute yon paj pòs blog. Se konsa, nou gen yon blog san patipri ki senp. Nou kapab ajoute bagay nan li. Men, sa ki nou jeneralman espere soti nan blogs ap fè kòmantè. Se konsa, li vrèman enpòtan pou nou pou n gen, di, si yon lòt moun vizite yon sit entènèt ak reyèlman renmen post la ki yo ka angaje yo nan diskisyon ak lòt moun ki te vizite paj la. Se konsa, nou ap ale nan ale ak kreye yon nouvo tab baz done ak yon nouvo modèl pou nou ka asosye kòmantè ak posts. Se konsa, premye etap la, jis tankou anvan, se ke nou bezwen kouri nan yon migrasyon. Se konsa, tankou anvan, nou fè php atizan migrasyon: fè. Epi nou ap ale nan kreye yon sèl rele create_comments_table. Sa a pral kreye yon dosye ki gen nouvo migrasyon nou an. Epi nou ap ale nan, tankou anvan, defini yon tab nouvo. Se konsa, chema :: kreye yon tab rele kòmantè. Fonksyon sa a isit la. Ak andedan tablo sa a sa ki nou ap ale nan fè se premye, tankou anvan, asiyen yon ID. Ogmantasyon ID. Nou pral pèmèt itilizatè yo asosye non yo ak yon kòmantè patikilye. Nou pral gen kèk kontni ki ale ansanm ak sa a, kontni tèks. Ak isit la ki sa nou ap ale nan fè se yon bagay diferan. Nou pwal kreye yon nonb antye relatif ki yo rele post_id ki ki pral siyifi sa post yon kòmantè patikilye ale ak. Anplis de sa, nou ap aktyèlman ale nan mete yon contrainte etranje kle sou sa a. Se konsa, miskl pral ranfòse sa. Nou pa ap eseye bay nimewo kòmantè 5 to post 5,000 si nou pa gen te gen 5,000 posts sou li. Se konsa, sa nou fè isit la, nou fè post_id etranje ki pral dwe asosye ak jaden an ID soti nan poto yo tab. Epitou, n ap aktyèlman fè yon bagay lòt itil, se onDelete. Se konsa, si nou efase kèk afiche soti nan baz done a, ke nou vle Cascade nan supresyon pou kòmantè kòm byen. Paske li pa trè itil pou nou pou n gen kòmantè sou posts ki pa egziste. Epi finalman, tankou anvan, nou ap pral mete koupon pou tan sou sa a. Li te tankou anvan, nou ap ale nan gen migrasyon an ranvèse gen jete tab la kòmantè. Se konsa, kounye a si nou tounen isit la, nou ap ale nan kouri sa a migrasyon, atizan emigre. Epi, koulye a li nan aplike sa a migrasyon ke nou jis kreye. Se konsa, si nou yon gade nan fpmyadmen, nou fè sa, an reyalite, kounye a gen yon tab kòmantè ki gen la estrikti ke nou jis espesifye. Se konsa, tankou anvan, nou ap ale nan kreye yon modèl nouvo abstrè tab la SQL ke nou jis kreye. Se konsa, kite a ajoute yon nouvo dosye. Nou pral rele li comment.php. Lè sa a se aktyèlman pral yo dwe san patipri senp ak yon chanjman ti tay soti nan sa nou te gen anvan. Se konsa, klas Kòmantè fin pale fasil. Ak sa ki nou ap ale fè isit la se defini yon fonksyon ki se la relasyon ak modèl lòt. Se konsa, nou ap ale nan gen yon fonksyon pòs isit la ke retounen relasyon sa a. Se konsa, nou ap ki espesifye ke sa a fè pati afiche, ki di ke gen yon sèl pòs ki kòmantè sa a fè pati. Sa a aktyèlman gen yo dwe kapital P pou modèl la. Epi, koulye a jis sou lòt baskile nan bò, nou gen yo di ke, hey. Posts gen kòmantè. Se konsa, sa nou ap ale nan fè se defini kòmantè fonksyon piblik. Ak isit la se tounen sa a gen anpil Comment. Se konsa, kounye maji lè nou gen yon pòs, nou ka jwenn kòmantè yo atribi epi li pral peple li ak nan enfòmasyon ki soti nan baz done a. Se konsa, kite a aktyèlman ale nan ak ajoute yon karakteristik nouvo nan dosye nou wè pou nou ka tou de ekspozisyon ak kreye kòmantè. Se konsa, nou ap ale nan defini yon nouvo seksyon. Se pou nou jis separe li ak yon règ orizontal. Seksyon didantite = "kòmantè". Ki sa nou ap ale nan fè isit la se, tankou anvan, repekte nan tout kòmantè yo. Se konsa, aktyèlman ki jan nou fè sa a se, kòm mwen mansyone, san patipri majik. Nou fè poste kòmantè. Lè sa a, nou ka fè sa pou chak riban sou chak nan kòmantè yo. Ak sa ki nou ap ale nan fè se kòmantè klas div, epi nou ap ale nan aktyèlman enprime soti sa a kòmantè. Se konsa, montre ki hey, kòmantè name-- moun nan ki afiche comment-- sa a di dot dot dot. Nou pral mete sa a nan yon blòk quote, jis fè li gade bèl. Lè sa a, fè kòmantè kontni quote blòk. Epi fortch. Se konsa, kounye a sa a se ale nan bouk nan tout kòmantè yo ki asosye ak chak nan poto yo epi montre chak nan sa yo kòmantè. Mwen pral ajoute yon lòt seksyon desann isit la, ki pèmèt nou yo ajoute yon kòmantè. Se konsa, H3 klas. Mete yon tit isit la. Ajoute yon kòmantè. Epi nou ap ale nan defini yon nouvo fòm. Se konsa, tankou anvan, nou ap pral fè fòm aksyon. Ak isit la, aksyon nan nouvo se nou ap pral defini yon nouvo kontwolè ki pèmèt nou yo pou yo reponn afiche demann pou kreye kòmantè. Se konsa, URL :: wout createComment. Mwen pral pase nan paramèt la isit la. ID a nan post la ki nou ap kreye kòmantè sou. Lè sa a, metòd la nan sa a fòm a pwal post. Koulye a, nou ap ale nan ajoute nan yon de jaden, fòm gwoup. Sa a se pral yo dwe genyen yon opinyon ak nan non "non" ak class = "-kontwòl fòm", tape = "tèks", epi ak nan kontneur = "Non ou." Nou ap tou ale nan defini yon lòt fòm jaden, ki a pwal yon tèks zòn kòm nou te gen anvan. Jis tankou anvan, rele li kontni. Class = "fòm-kontwòl." Kontneur = "Ekri isit la." Epi jis pou nou ka aktyèlman soumèt li, soumèt kalite ak class = "btn btn-prensipal." Fèmen fòm nan. Fèmen aksyon sa a. Se konsa, kounye a si nou rafrechi paj sa a kote nou gen, di, yon pòs patikilye. Nou dwe rdemare sèvè a. PHP atizan sèvi yo. Rdemare sa a. Nou dwe defini wout la. Men, pou kounye a, kite yo jis pran sa a soti pou ke nou ka aktyèlman montre w sa paj la sanble, ak Lè sa a, nou pral aktyèlman kreye ki wout. Se konsa, hey. Nou gen nouvo fòm sa a desann isit la pou nou ka kreye kòmantè. Se konsa, kite a aktyèlman defini yon fonksyon nan kontwolè a pou nou ka ajoute kòmantè. Se pou yo tounen. E nan lespas de blogcontroller.php, ki sa nou ap ale nan fè se kreye yon fonksyon nouvo rele kreye kòmantè. Fonksyon Piblik createComment. Sa a se pral gen yon sèl paramèt, ID a nan poto yo ke nou ap fè kòmantè sou. Li te tankou anvan, nou ap ale nan premye jwenn post la. Se konsa, afiche, id findOrfail. Apre sa, nou pwal yo kreye yon kòmantè nouvo. Se konsa, fè kòmantè = nouvo kòmantè. Kòmantè Non = Antre :: jwenn non. Kontni Comment = menm liy nan nouvo nan repo a Antre :: jwenn kontni. Epi finalman, nou ap ale nan gen yo asosye kòmantè sa a ak post la. Se konsa, nou ap ale nan sèvi ak fonksyon sa a, kòmantè, ki pèmèt nou pou konsève pou sa a relasyon. Se konsa, kounye kòmantè sa a pral gen otomatikman ID a post. Nou te kapab tou mete li manyèlman, men sa a se plis fasil li osi lwen kòm fonksyon an ale. Apre yo te fin nou fè sa a, ki sa nou vle fè se redireksyon itilizatè a nan la wout espesifye nan viewPost ak etalaj la ak nan paramèt nan ID a post. Epi, koulye a se konsa ke sa a aktyèlman fonksyon, nou bezwen defini wout sa a. Route :: post. Epi, koulye a nou ap ale nan rele sa a pòs koupe koupe ID kòmantè. Array sèvi ak fonksyon an nouvo ke nou jis kreye. BlogController. CreateComment kòm createComment. Great. Se konsa, kounye èspere ke si nou rafrechi paj sa a epi ajoute nan yon kòmantè, di, David Malan. "Nou swete ke sa a ap travay." Soumèt. Nou, an reyalite, gen yon kòmantè sou pòs blog sa a. Cool. Se konsa, kounye a nou gen yon jistis fonksyonèl pòs blog. Nou jis ap ale nan ajoute yon reglaj koup konsa ke nou gen kèk pi plis itil enfòmasyon sou sa yo posts. Se konsa, si nou tounen nan la paj devan, nou pa gen okenn sans nan konbyen kòmantè yo sou chak nan sa yo posts. Se konsa, sa nou ap aktyèlman pral fè se, andedan modèl nou an, defini yon fonksyon k'ap vin ede ki pèmèt nou presize ki kantite kòmantè ki ale ak yon pòs patikilye. Se konsa, nou ap ale nan kreye yon fonksyon sekou. Fonksyon piblik. GetNumCommentsStr. Se konsa, yon kòd ki espesifye nimewo a nan kòmantè ki ale ansanm ak li. Ak sa ki nou ap ale nan fè se di ki NUM = sa a kòmantè konte. Se konsa, nou ap ale nan konte nimewo a nan kòmantè. Men, si nimewo sa a egal 1, nou ap jis ale nan retounen 1 kòmantè. Lè sa a, otreman, nou vle retounen Anchènman la nan NUM ak kòmantè, pou nou jwenn pluralization ki kòrèk la. Jis fè sa-a yon quote sèl. Youn nan kòmantè. Epi, koulye a nou ka sèvi ak sa a fonksyon dirèkteman andedan nan nou wè. Se konsa, si nou tounen nan la posts yon pati ke nou kreye, kounye a nou vle aktyèlman montre nimewo a nan kòmantè. Se konsa, sa nou ka fè se post, sèvi ak sa a fonksyon ke nou jis te kreye montre nimewo a nan kòmantè. Se konsa, si nou kounye a rafrechi, li fè sa, an reyalite, ekspozisyon kòmantè yo nimewo ki ale ansanm ak li. Si nou te vle yo dwe anpenpan si ou aktyèlman gade nan kòd la distribisyon, nou ka aktyèlman konekte sa a nan kòmantè yo. Si ou sonje, nou defini nan la wè ke sa a gen kòmantè ID seksyon. Se konsa, si nou aktyèlman te vle konekte dirèkteman nan seksyon an kòmantè, ki sa nou ta fè isit la se yon href URL nan viewPost nan wout. Pase nan ID a etalaj de ID post. Lè sa a, nou vle pou yo ale nan espesyalman seksyon an kòmantè. Isit la se pou yo fèmen yon tag la. Se konsa, kounye a si nou rafrechi sa a paj, nou klike sou sa a. Nou pral ale dirèkteman nan seksyon an kòmantè. Si nou te gen yon pòs ki pi long, ou kapab aktyèlman wè rebondisman sa a desann. Men, ou pral avi ke li nan pa nan tèt la nan paj la. Cool. Great. Se konsa, sa a, se yon jistis senp egzanp sou yon bagay ki senp ke ou ka fè ak Laravel. Men, ou ka remake isit la ke nou te fè yon bann bagay sa ak san patipri ti kras kantite lajan nan kòd. Laravel pèmèt nou fè a SQL demann dèyè sèn nan. Li fè sa ki sanitasyon an pou nou dèyè sèn nan. Pèmèt nou fè relasyon sa yo trè fasil san yo pa nou ki bezwen fè nenpòt ki deklarasyon SQL rantre nan konbine kòmantè ak sa poto yo. Pèmèt nou fè sa pòsyon tè nan modèl pou nou ka defini sa yo nidifikasyon dosye se konsa nou pa ap repete tèt nou, jis tankou lè nou te gen ki ekspozisyon nan poto yo blog ke nou pa gen kopi ak keratin kòd la. Li te pran depi isit la ou ka bati de pli zan pli konplike aplikasyon yo. Ou ka imajine si nou te vle aplike ouvri sesyon-an, nou te ka di, pote nan yon twazyèm pati fondasyon ki pèmèt nou fè sa. Genyen yon pakèt moun sou yo ki reyèlman, reyèlman gwo ki ka fè tankou, modpas rekiperasyon. Epi li pral voye ba ou yon Reyajiste modpas imel. Nou ka aplike pèmisyon pou m 'ka kreye yon pòs, men yon lòt moun pa ka edite li. Nou ka aplike fonctionnalités yo efase posts. Men, ou ka wè isit la ke nou gen bèl anpil tout eleman yo estanda yo bati kèk reyèlman, reyèlman, dinamik ak enteresan apps entènèt. Se konsa, avèk sa, mwen panse ke nou ap bon. ou nèg gen nenpòt kesyon? Wi? Oratè 3: Ki jan ou fè jwenn kontni estatik? ERIC Ouyang: kontni estatik. Se konsa, ou te wè anvan sa lè nou te gen dwa sa-a isit la, sa a kontni layout, View fè, nou te gen sa a san yo pa sa a etalaj apre sa. Blog.index, nou te gen sa a kòm jis yon dosye estatik. Se konsa, si nou pa pase anyen ansanm nan li, li pral jis rann HTML a dirèkteman. Men, si nou pase nan asosyatif sa a etalaj de posts, ki se dynamique rale soti nan baz done a, nou ka fè paj la dinamik. Cool. Nenpòt lòt kesyon? Oratè 3: Ki jan ou ta konpare Laravel petèt kèk lòt opsyon? ERIC Ouyang: Asire w. Yeah. Se konsa, sa a, se Laravel is-- yon Gwo kesyon youn nan anpil opsyon pou cadres entènèt. Se konsa, Ruby sou ray se youn sa a, se popilè. Mwen kwè Twitter itilize yo dwe aplike avèk Ruby sou ray. Mwen panse ke yo te depi chanje. Genyen yon lòt yon sèl rele FuelPHP. Se konsa, Ruby sou ray sèvi ak lang la Ruby epi aplike yon anpil nan bagay la mv ke nou wè isit la. FuelPHP se yon lòt fondasyon PHP. Django se youn nan favorites mwen. Li se yon fondasyon entènèt pou Piton. Se konsa, ou ka ekri app entènèt ou nan Piton. Se konsa, gen nan yon tòn nan opsyon sa yo. Laravel, mwen panse, pa ak gwo se dwa pi renmen m ' kounye a pou PHP jis paske nan eleman yo ke nou te pale osijè de pi bonè. Li nan konpozitè pèmèt. Li gen ladan l yon reyèlman, reyèlman espresif ORM sistèm. Tou te gen yon templating vrèman fantastik lang ke kèk nan lòt moun yo jis pa bay. Epi migrasyon. Migrasyon yo pè tou. Cool? Awesome. Oke, mèsi anpil pou l ap gade seminè sa a, ak bon chans sou pwojè final ou a.