[Musika nagpe-play] Eric OUYANG: Uy, lahat. Maligayang pagdating. Ito ay Building Dynamic Web Apps sa Laravel. Ang pangalan ko ay si Eric Ouyang. Ako ay isang sopomor sa pag-aaral ng social na pag-aaral may isang pangalawang sa computer science, at mabuhay ako sa Adams House dito sa Harvard. Kaya Laravel, sa kanyang pinaka-core, ay isang web app framework MVC. Kaya gusto kung ano ang iyong guys Na-ginagawa sa CS50 Finance, Laravel ay isang framework na nagbibigay-daan iyo na bumuo ng mga dynamic na web apps. Kaya maaari mong isipin na ito sa ilang mga pandama bilang isang extension ng uri ng mga bagay-bagay na-paggawa sa CS50 Pananalapi, ngunit isang sistema na kung mas malakas ng maraming, ng maraming higit pa eleganteng sa ilang mga pandama, at nagbibigay ng maraming -andar para sa iyo upang bumuo ng medyo complex web application. Kaya sabihin pumunta sa pamamagitan ng ilang sa mga pangunahing tampok, at pagkatapos ay gagamitin namin sumisid sa isang Halimbawa ng pagbuo ng isang blog aplikasyon sa Laravel. Kaya isa sa mga unang bagay na -iiba dito mula sa MVC uri ng trabaho na kayo ay ginagawa sa CS50 ay kasama nito ang isang ORM engine. Kaya ORM ay kumakatawan sa object relational pagmamapa. Kaya ito ay nagbibigay-daan sa iyo na bumuo isang layer ng abstraction sa pagitan ng database at ang iyong Controllers. Kaya hindi katulad sa CS50 Finance kung saan kang direktang magsagawa ng mga query, Pinapayagan ka ng layer ORM sa abstract na ang layo at lumikha mga modelong na mas malakas kaysa Maaari kang direktang may mga query SQL. Isa pang bagay na talaga kapaki-pakinabang ay minana ng mga template. Kaya mapapansin mo sa CS50 Finance, magtapos up mo muling pagsusulat ng maraming mga bagay, kung saan naglalagay ng dati mong potensyal na muling gamitin ang mga bagay, hindi ka makakapag-. Kaya dito sa Laravel, maaari mong gamitin kung ano ang na kilala bilang ang talim ng template engine upang lumikha ng isang master layout. At mula doon, maaari kang magmana upang ang sub-template maaari talagang Kasama sa mga elemento sa loob na mas malaki base template. Paglipat. Kaya ito ay isang walang kinikilingan karaniwang tampok sa pinaka-modernong Framework web application. Kaya ito ay nagbibigay-daan sa iyo upang kumatawan schema ng database ng mga pagbabago sa code. Kaya nang hindi pagpunta sa sabihin, phpMyAdmin, Maaari mong aktwal na lumikha ng mga paglilipat kung saan kinakatawan ang database ng schema direktang mga pagbabago sa code. At ito ay nagbibigay-daan sa iyo to-- lalo na kung mayroon kang maraming tao nagtatrabaho sa parehong web application-- subaybayan ang mga pagbabagong ito, sabihin sa GitHub, o ilang iba pang imbakan. Kaya ito ay talagang kapaki-pakinabang at mitigates ang pangangailangan sa, sabihin nating, pumasa sa paligid ng maraming SQL lungkot. At sa wakas, kompositor ay isang bagay na talagang, talagang kapaki-pakinabang na nagbibigay-daan sa iyo upang gumamit ng iba pang code ng mga tao na gawin kahanga-hangang mga bagay. Kaya Laravel ng nakaayos ayon sa ilang pakete kompositor. Kaya sabihin kung nais mong dalhin ang sa isang package sa pagpapatunay ng o kung nais mong dalhin sa ilang uri ng generator script o isang admin interface, maaari kang plug at i-play mga sangkap na may kompositor. Kaya sabihin makapagsimula. Ang anumang mga katanungan mula sa iyo guys bago tayo magsimula? Wala pang mga tanong? Ayos. Kaya ang unang hakbang ay -install ng kompositor. Kaya ay nagbibigay-daan sa iyo upang kompositor pamahalaan ang mga dependency, ito man ang Laravel framework o ilang iba pang extension ng third party. Pinapayagan ka ng unang utos mong i-download kompositor, at ang ikalawang utos ay nagbibigay-daan sa iyo upang ilipat ito sa iyong lokal na bin folder sa gayon ay maaari mong patakbuhin ang kompositor direkta sa pamamagitan ng mga terminal. Pagkatapos nito, magpatuloy at lumikha ng isang bagong proyekto Laravel. Talaga kami ng pagpunta sa gamitin ang ilang mga halimbawa code na inilagay ang ko magkasama upang lumikha ng blog na ito. Ngunit kung ikaw ay nagsisimula mula sa sa simula, gagamitin mo ang command na ito hanggang dito, kompositor lumikha-proyekto, laravel iwa laravel, at pagkatapos ay ang pangalan ng iyong proyekto. At iyon ay magsasama lahat ng code ng pamamahagi para sa pagsisimula ng isang bagong proyekto Laravel. Kaya para sa iyong CS50 panghuling proyekto, ikaw ay Gusto marahil na gamitin ang command na iyon. Ngunit kami ay pagpunta sa magsimula sa mga ito. Kaya sa sandaling nagawa mo iyon, na iyong pupuntahan upang makakuha ng isang medyo malawak na numero ng ng mga file sa blog50. Kaya ipaalam pumunta lamang sa pamamagitan ng ang ilan sa mga bahaging ito. Mapapansin mo sa rutang ito direktoryo, mayroong isang folder app. Sa loob ng folder ng app, mayroong ng ilang kapaki-pakinabang na mga folder. Ng tala na magsimula sa ay ang config folder. Kaya Nagtatakda ito up kung paano ang iyong web application ay pagpunta sa, sabihin nating, patotohanan ang mga tao o cash mga bagay o kumonekta sa database. At kung ano talaga kapaki-pakinabang ay na Laravel pinapayagan ka na mag-set up ng iba't ibang kapaligiran ng pag-unlad. Kaya kung ano ang iyong ginawa namin dito ay kung pumunta kami sa ilalim ng lokal na folder, mayroong isang database.php file. At mapapansin mo dito na kami -set up ng isang koneksyon sa MySQL na Binibigyang-daan sa mga indibidwal upang kumonekta sa MySQL server na direkta sa CS50 appliance. At kami ay pagkonekta sa isang database na itinakda ko up tinatawag Blog50. Kaya sabihin aktwal na magpatuloy at tumakbo ang nagtatrabaho bersyon ng ito, upang makakuha lamang ng isang katuturan sa kung ano ang application na aming pagbuo kamukha. Kaya ba akong magkaroon ng kopya ng nakumpleto na ito Blog50. Kaya Laravel talaga ay itinayo sa isang server na maaari mong patakbuhin direkta mula sa command line. Kaya ito ay katulad ng PSet bago kapag mo talaga bumuo ng iyong sariling server sa C. Kaya nilang isa na binuo sa gayon na maaari mong patakbuhin ang iyong mga Laravel apps direkta mula sa command line. Kaya kung gagawin namin php sanay sa maglingkod, ito ay ilunsad ang isang server-unlad sa port 8,000. Kaya kung pumunta kami sa mga lokal na host 8,000, mapapansin mo na, hey. Mayroon kaming aming blog up at tumatakbo. Kaya Laravel dito ay bumubuo ng mga ang front page ng aming blog. Napaka-simpleng application. Ngunit mayroong ilang talagang nakakatawang mga tampok na ito ay nagbibigay sa ilalim ng hood. Kaya ang application blog prangka. Kung gusto naming lumikha ng isang post, maaari naming i-click sa pindutan na iyon. Maaari naming sabihin, "Uy, sa lahat. Ito ay isang tunay na masaya seminar, "halimbawa. At magsulat ng isang bagay down na dito. I-text dito. Kung i-click ang Isumite namin, kakailanganin mo mapapansin na ang ating bagong blog post ay idinagdag sa front page ng blog. Kung pumunta namin pabalik dito, mapapansin mo na nagkaroon ng ilang mga komento na sa blog. Kaya kung mag-scroll namin pababa, ipapakita sa iyo mapansin na sabi ni Jonathan Tan na napaka siya ay intrigued sa pamamagitan ng post na ito. Kaya ipagpapatuloy namin kung paano object Binibigyang-daan ka relational pagmamapa mong gawin ang mga relasyon sa isang walang kinikilingan tuluy-tuloy na paraan pati na rin. Ayos. Ang anumang mga katanungan tungkol sa pag-andar ng kung ano ang iyong pupuntahan namin upang bumuo? Ayos. Kaya sa magsimula sa aktwal na ipaalam paglikha ng mga talahanayan ng database. Kaya isipin na sa CS50 Finance, mo magkasama ng lamesa para sa mga gumagamit pati na rin ang para sa mga stock sa iyong portfolio. Kaya gaya ng nabanggit namin nang mas maaga, kung ano ang ginagamit namin sa Laravel ay isang bagay na kilala bilang paglilipat. Kaya kung pumunta namin pabalik sa pamamahagi ng code dito, ang unang utos na kapaki-pakinabang na Laravel nagbibigay sa iyo ay ito i-migrate ang command. Kaya maaari naming gawin php sanay sa migrate ang: gawin. Kaya ito ay nagbibigay-daan sa amin upang lumikha ng paglipat. At pagkatapos ay gagamitin namin ang gusto upang lumikha ng isang paglilipat tinatawag na create_posts_table, na kung saan ay pagpunta na kung saan kami ay pagpunta sa maging pag-iimbak ng aming mga post sa blog. At mapapansin mo dito na ito ay nagpapatakbo sa pamamagitan ng ilang mga code na talaga bumubuo ng isang file na may isang time stamp sa ito. Kaya kung pumunta kami at tumingin sa Database, kami ay mapapansin sa ilalim ng mga paglilipat na ito ay lumilikha ng isang blangko file para sa amin kung aling mga May boilerplate code ng mga pangalan na aming tinukoy, lumikha ng mga post table. At ito ay may dalawang mga function sa loob nito. Up ay kung ano ang gusto naming magpatakbo kapag ang paglipat ay inilapat sa database. At pababa ay kung ano ang pagpunta naming gawin kapag gusto naming i-reverse ng paglipat. Kaya dito na magsimula ipaalam sa pagsusulat ng paglilipat na ito. Kaya mayroong isang kapaki-pakinabang na klase sa Laravel tinatawag Schema. Kaya kami ay pagpunta sa magpatakbo ng Schema :: lumikha. At kami ay pagpunta sa gumawa isang talahanayan na tinatawag na mga post. At dito kami ilapat ito gamit ang isang function. At sa loob dito, ipinapadala namin pagpunta sa aktwal tukuyin ang mga nilalaman ng aming mga talahanayan. Kami ay pagpunta upang lumikha ng isang ID, na kung saan ang auto-incrementing. Sa karagdagan, kami ay pagpunta upang lumikha ng isang patlang na Kinakatawan ang pamagat ng aming blog post. Din kami ng pagpunta upang lumikha ng isang patlang para sa pag-iimbak ang teksto ng aming blog post. At sa wakas, kami ay pagpunta upang mag-imbak ng ilang mga timestamp para kapag ang aming mga post ay nalikha at kapag ito ay na-update. At para sa mga pababa, ito ay medyo simple. Drop Lahat ng gusto naming gawin ay ang talahanayan na nilikha namin. Mahusay. Ang anumang mga katanungan? Kaya ngayon kung pumunta kami nang maaga and-- talaga, lokal na host, hayaan mo akong magtanggal ng kung ano ang namin ay may mas maaga. Pumunta sa Database. Pupunta ako sa tanggalin kung ano ang namin ay may mas maaga. I-drop ito at lumikha ng isang bagong database Blog50. Kaya ngayon kung ano ang kaakit-akit bahagi Nandito na kami Maaaring mag-apply ang mga paglilipat direkta sa database gamit ang command line tool. Kaya kung gagawin namin php sanay sa mag-migrate, mapapansin mo na, hey. Ito ay nilikha sa talahanayan sa paglilipat, na aming tumingin sa sa ilang sandali, at ito ay inilapat sa unang paglipat. Kaya tinitingnan namin ang Blog50, mapapansin mo na ito ay nilikha ng dalawang mga talahanayan para sa amin. Una ay ang talahanayan ng paglilipat. Kaya kung mag-browse namin ito, mapapansin mo na talahanayang ito ay medyo simple. Ang sinabi lang nito na, hey. Inilapat namin ang paglilipat na ito. Pumunta kami pabalik at tumingin sa mga post. Mapapansin mo na ang mga istraktura ay eksaktong kung ano ang hiniling namin ito. Mayroon kaming isang auto-incrementing ID. Mayroon kaming isang string para sa pag-iimbak sa pamagat, at isang field ng teksto para sa pag-iimbak ng nilalaman. Mahusay. Ayos. Ang anumang mga katanungan tungkol sa mga paglilipat trabaho, kung paano namin ilapat ang mga ito? Walang? Ayos. Kaya ngayon kami ay pagpunta sa sige at talagang lumikha ng modelo. Kaya gusto namin upang lumikha ng isang modelo ng post na nag-iimbak ng isang abstraction ng database. Kaya sa halip na paggawa MySQL query direkta, kami ay pagpunta upang lumikha ng. Kaya mayroon kaming upang lumikha ng isang folder sa dito tinatawag na mga modelo. At sa loob dito, ipinapadala namin sa pagpunta sa lumikha ng isang file na tinatawag na post.php. Inside ang file na ito PHP, kami ay pagpunta sa gumawa isang post klase na umaabot magaling magsalita. Magaling magsalita ay ang pangalan ng ORM engine na nagbibigay Laravel. At in dito, maaaring inaasahan namin na talagang kailangan mong sumulat ng ilang code. Kami ay pagpunta sa sumulat ng ilang helper function sa ibang pagkakataon. Ngunit sa labas ng kahon, na ito ay na makilala kung ano ang sa database at maaari naming ma-access, sabihin, ang teksto sa aming mga blog post o ang pamagat, at nang direkta sa lumikha ng mga bagay-bagay halos walang code kung ano pa man. Kaya na ang isa sa mga kaakit-akit bahagi. At hangin sa sandaling klase na ito ay mas ganap na nasimulan, kami ay may kasamang impormasyon tungkol sa kung ano ito ay may kaugnayan sa, kaya ang mga komento. Gayundin lumikha ng isang function kaya magagawa namin talaga direktang kumuha ng URL ng isang pahina ng blog post na ito. Ayos. Ang anumang mga katanungan tungkol na? Hindi. Ayos. Kaya ngayon sa sandaling mayroon namin ang aming mga modelo, namin nais upang lumikha ng isang controller na magagawa upang mag-interface sa mga modelo, at pagkatapos ay ang database. Kaya kung tinitingnan namin ang sa BlogController, kakailanganin mo mapansin na mayroong hindi magkano dito ngayon. Ang lahat ng mayroong ay isang function na index na binubuo ng home page, ngunit walang anumang bagay doon upang ipakita pa. Kaya ang unang pag-andar na kami ay pagpunta upang lumikha ng ay isa na nagbibigay-daan sa amin upang lumikha ng isang blog post. Kaya kami ay pagpunta sa ipinahahayag ng bagong function na tinatawag na newPost. At sa loob lang dito, ipinapadala namin sa pagpunta upang itakda ang layout ng pahinang ito maging isang render bersyon, kung isipin mo mula sa CS50, ng template na ito na tinatawag na blog.new, na kami ay pagpunta sa lumikha sa ilang sandali. Mapapansin mo dito sa anim na linya na tinukoy na namin ito variable, layout. At kung tinitingnan namin ang sa Pagtingin folder, mayroong isang folder Layout, na Kasama sa isang napaka-basic HTML file. At ng tala, mapapansin mo mayroon kaming ito container dito na nagbibigay ng nilalaman. Kaya sa loob ng aming mga template kung ano ang namin ang pagpunta sa gawin ay lumikha ng kung ano ang nangyayari upang maging substituted nang direkta sa loob ng layout. Kaya't sinabi namin na gusto naming mag-render isang template na tinatawag na blog.new. Ngunit sa loob ng Blog, may Hindi pa ito ng bagong template. Kaya kami ay pagpunta upang lumikha ng isang file na tinatawag na new.blade.php. Sinasabi nito na Laravel ito ang PHP file ay dapat na i-render gamit ang talim ng template engine. Kaya ito ay isang walang kinikilingan prangka file. Ito ay magiging ang form kung saan talaga naming idagdag sa isang blog post. Kaya ang magic dito mula sa pagmamana ay na, hey. Gusto naming tukuyin na ang seksyon, ang seksyon ng nilalaman dito, na kung saan ay inilarawan sa pamamagitan ngsection atstop. Kaya kung ano ang nasa pagitan dito ay pagpunta sa ay substituted sa master layout. At dito kung ano ang gusto naming gawin ay napaka lumikha lamang ng isang bagong file na HTML. Hayaan magdagdag ng lamang ng isang mabilis na pamagat. Magdagdag ng isang blog post. At sa loob nito, kami ay pagpunta upang lumikha ng isang form. Ang form na ito ay pagpunta sa magkaroon ng isang aksyon. At ito ay magiging isang bagay na palitan namin sa ibang pagkakataon, at kami makita kung paano Tama ang sukat sa routing dito. Ngunit lamang kami ng pagpunta upang tukuyin para sa ngayon na ito ang papunta sa isang URL na may mga ruta mula createPost. At pagkatapos ay ito ay pagpunta magkaroon post paraan. Sa loob dito, kami ay pagpunta na magkaroon ng dalawang mga patlang. Div class = "form-group". Ginagamit namin ang library Bootstrap CSS marikit na ibinigay ng Twitter. Kaya kami ay pagpunta upang lumikha ng dalawang sa mga ito. Kaya ito unang-input magiging pamagat. Kaya input name = "title". Class = "formcontrol". Type = "text". Pupunta ako upang magdagdag ng isang placeholder = "Pamagat". At pagkatapos ay ang pangalawang isa ay magiging isang text area. Pangalanan = "nilalaman". Class = "formcontrol". At placeholder = "Isulat dito". May pumunta namin. Sa wakas, kami ay pagpunta sa magdagdag ng isang pindutan sa mabilis na isumite. Type = "isumite" class = "btn btn-primary". Kaya ito ay ang lahat ng mga tampok ng Bootstrap kaya na ito ay inilatag out sa isang paraan na sumila sa gumagamit, sa halip na naked HTML. Kaya nilinaw namin ang controller dito. Nilinaw namin ang isang napaka-simpleng view. Ngunit kung ano ang nawawala ay ang nag-uugnay tissue. Kaya sa puntong ito, Laravel ay walang mga ideya kung paano kami ay pagpunta sa tunay -access ang controller. Kaya ito ay tinukoy sa isang file na tinatawag na routes.php. At ngayon, mayroon kaming isang ruta. Aling ay kapag pumunta kami sa tahanan landas para sa website na ito, ito ang nangyayari upang mag-render sa index ng controller. Kaya dito kung ano ang kailangan namin gawin ay ipatupad isang bagong ruta para sa amin upang lumikha ng isang post. Kaya ginagamit namin ang paraan na ito makakuha ng, na tumutukoy na kapag ang isang user na mag makakuha ng mga partikular na ito page-- ang post iwa bagong page-- kung ano ang namin ang pagpunta sa gawin ay gamitin ang controller tinatawag na BlogController bagong post. Ang isa na lumikha kami lang. At pagkatapos kami ay pagpunta sa alias na ito bilang newPost. Kami ay pagpunta upang lumikha ng isa function na sa ilang sandali. Ngunit kung ano ang dito sa ilalim ng ang susi "bilang" ay kung ano ang maaari naming palitan ang loob talim aming mga template. Kaya sa ngayon, sabihin talaga din sabihin ruta. Kaya kami rin ng pagpunta upang lumikha ng isang controller upang maaari naming lumikha ng mga post na ito. Kaya kung ang isang gumagamit post sa post pahina iwa bago, kung ano ang pagpunta naming gawin ay gumagamit ng controller na kami ay pagpunta upang lumikha ng ilang sandali tinatawag na BlogController sa createPost. At kami ay pagpunta sa alias ito kasama bilang createPost. Ayos. Ang anumang mga katanungan? Ayos. Ay tumakbo sa kung ano ang mayroon kami sa ngayon kaya hayaan. Kaya kung gagawin namin php sanay sa maglingkod, ay namin makita ang maraming mga error. Kaya mukhang mayroon kaming syntax error sa mga ruta line 27. Ah. Kulang ng tuldok-kuwit. Kaya kung pumunta kami sa 8,000, makikita mo walang makikita dito pa. Kaya ito ay ang default na home page. Ngunit kung pumunta namin upang mag-post ng bagong iwa, hey. Ito ang paraan na aming ginawa lamang. Sa ngayon, mayroon kaming hindi ipinatupad ang pag-andar ng kapag pinindot namin ang pindutan ng Isumite. Kaya kung nag-click kami sa Isumite pindutan, ito ay pagpunta sa magpatakbo ng isang error. Ngunit kami ay pagpunta sa code na ngayon, tiyak kung ano ang namin nais na gawin kapag gumagamit ng isinusumite ng form na ito. Kaya sabihin gawin iyon. Bumalik sa Controllers file. Ano kami ay pagpunta sa gawin ay ipatupad ang bagong pag-andar na nagbibigay-daan sa amin upang lumikha ng isang post. Ipinahahayag ng mga bagong function. Pampublikong function na createPost. At ang function na ito ay magiging isang Medyo mas sopistikadong kaysa sa kung ano namin ay may mga bago. Ngunit makikita mo dito na hindi namin pagpunta sa aktwal na isulat ang anumang SQL. Ang ORM, ang mahusay magsalita ORM, ay pagpunta sa payagan amin upang gawin ito sa ilang mga paraan ng isang mas eleganteng paraan. Kaya kami ay pagpunta upang lumikha ng isang bagong post. At dito kami ay instantiating isang bagong bagay na mula sa modelo na namin lamang nilikha, ang modelo post. At kung ano kami ay pagpunta sa gawin ay itakda ang pamagat ng katangian ng ito gamit ang isang bagay na nakukuha namin mula sa server. Kaya ito ay katulad ng kung ano namin ay may bago sa CS50 Pananalapi kung saan nais naming gawin, gamit ang Super Global Post naghahanap ng pamagat. Kaya Laravel ay nagbibigay ng ilang kalinisan at watnat gamit ang helper function. Kaya gusto namin ginusto sa halip na gamitin ito ng napaka pangunahing raw na form mula sa PHP. At pagkatapos ay kung ano kami ay pagpunta sa gawin ay itakda ang nilalaman nito sa iyong input makakuha ng nilalaman. Talaga kami ng pagpunta sa wrap ito sa isang kapaki-pakinabang na function na na PHP ay nagbibigay ng tinatawag na nl2br, na -o bagong linya, nls, sa brs, break, sa gayon ay maaari talagang kami iba't-ibang mga talata sa loob nito. At sa wakas kung ano kami ay pagpunta upang gawin ay i-save ang post na ito. Kaya tinatawag naming ang pag-andar i-save sa modelong ito. Kami ay pagpunta sa i-save ang post na ito. At sa wakas kung ano iyong pupuntahan naming gawin ay nagre-redirect ang user na partikular na sa ruta na kami ng pagpunta sa lumikha ng ilang sandali, alyas sa pamamagitan ng viewPost. At kami ay pagpunta upang pumasa sa mga argumento id, pagiging id ng bagong post. Mahusay. Kaya ngayon kung talagang kami at patakbuhin ito. Kami ay pagpunta sa magdagdag ng isang bagong post. Sabihin natin na ito ay seminar 50. At sabihin, sigurado. Asdl. Anuman. Ang ilang mga uri ng nilalaman. At Ipadala ito. At kami mapansin na, hey. Hindi tinukoy ang mga ruta. Ngunit kung tinitingnan namin ang sa phpMyAdmin at hanapin man o hindi ang aming mga May ginawang kahit ano. Tumingin sa Blog50 mga post. Susubukan naming mapansin na, hey. Sa katunayan, kami ay lumikha lamang ng blog na -post sa mga timestamp tulad ng tinukoy. Kaya ngayon sabihin bumalik at aktwal na lumikha ito sa iba pang mga pag-andar sa aming controller, partikular na ang viewPost controller. Kaya pampublikong function na viewPost. Kaya dito kung ano ang gagawin namin, sa halip ng pagkakaroon ng walang laman ang mga panaklong, kami ay nais upang pumasa sa ID ng ang post na aming nililikha. At mula dito kung ano ang pagpunta naming gawin ay aktwal na query sa database para dito. Kaya kung ako mag-post namin, mayroong isang function na tinatawag na Maghanap na nagbibigay-daan sa amin para sa mga tanong dito sa pamamagitan ng ID. Sa partikular, talaga, ipinapadala namin sa pagpunta sa gamitin ang isang kahaliling bersyon ng tinatawag na Maghanap o mabibigo, na nagpapahintulot sa amin na umalis sa labas ng function na ito, magtapon ng exception kung ang ID kami pumasa sa ay hindi umiiral. At pagkatapos kami ay pagpunta sa gawin ang isang bagay katulad ng kung ano ang ginawa namin nang mas maaga kung saan itinakda namin ang nilalaman ng pahinang ito upang maging -render na bersyon ng bagong view na kung saan kami ay pagpunta upang lumikha, blog.view. At kami ay pagpunta sa pumasa sa gusto lang it-- sa CS50-render function-- isang diksyunaryo ng variable. Ang key ng nag-uugnay array maging variable sa loob ng template. Kaya kami ay pagpunta sa gawin ang post na post. Kaya pumasa hindi direkta ang post na na-query namin mula sa database. . Ngayon kung ano ang namin ang pagpunta sa gawin ay lumikha ng pagtingin na ito sa gayon ay maaari talagang namin tingnan ang mga post sa blog na iyong binuo namin. Kaya kami ay pagpunta upang lumikha ng isang file na tinatawag na view.blade.php. Kaya sa loob ng template na ito, kung ano ang namin ang pagpunta sa gawin ay magkasama isang simpleng pahina na ay nagbibigay-daan sa amin upang ipakita ang nilalaman. Kaya ang ginagawa namin seksyon, na bago ang nilalaman. Itigil. At kung ano kami ay pagpunta gawin sa loob dito ay sumulat ng ilang HTML upang ipakita ang pahinang ito. Kaya kami ay pagpunta sa wrap ito sa isang fancy bagong elemento HTML5 tinatawag na Artikulo. At in dito, ipinapadala namin sa pagpunta na magkaroon ng isang header kung saan kami ay pagpunta sa lamang magkaroon ng isang h1, kung saan kasama ang pamagat ng post. Kaya dito, kung tinitingnan namin ang na ito double kulot suhay pagtatanda, ito ang gagawin ng mahalagang PHP echo pamagat ng post. Kaya ito ay isang kapaki-pakinabang na shorthand Laravel na nagbibigay sa amin. Kaya kami ay pagpunta upang gamitin ang pagtatanda na ito sa halip. At dito, kami ay pagpunta sa din i-print ang nilalaman nito. At in dito, ipinapadala namin sa pagpunta gawin ang post na nilalaman. At pababa sa ibaba kung ano ang hindi namin pagpunta sa gawin ay lumikha ng isang footer. At sa footer, ipinapadala namin sa pagpunta sa unang display kapag ito ay nai-post. Kaya ito ay nai-post sa, nilikha sa. At Laravel ay gumagamit ng isang talagang maganda Petsa ng library na tinatawag na Carbon. Kaya maaari talaga namin gawin ang isang bagay na tinatawag na difforHumans, na nakita mo nang mas maaga. Kapag nag-post namin. Makikita ito sinasabi, tulad ng, limang segundo ang nakalipas. Kaya ito ay talagang maganda -andar ng Laravel. At sa wakas, kami ay pagpunta upang isara ang footer. Kaya ngayon kung pumunta namin pabalik sa Home Page namin pupuntahan upang walang makikita dito pa dahil hindi pa namin ma-code ang home page. Ngunit kung pumunta namin upang mag-post slash isa, kami ay pagpunta upang makita ng pagbubukod. Sinuman Alam ba kung bakit nakikita namin ng pagbubukod? Ano ay ang mga nawawalang namin? Ang anumang mga ideya? Kaya kung ano ang ginawa ang ginagawa namin mas maaga para sa amin talaga upang tukuyin kung paano namin makuha sa partikular na Controllers? Tagapagsalita 1: Ang ruta? Eric OUYANG: Oo. Kaya mayroon pa rin kaming upang matukoy ang ruta. Kaya pumunta kami bumalik dito upang routes.php. Mapapansin mo na kami hindi talaga natukoy kung paano namin pagpunta upang makakuha ng sa controller. Kaya ngayon kami ay pagpunta upang tukuyin ang rutang ito. Ito ay medyo simple, katulad ng kung ano ang ginawa namin nang mas maaga. Ngunit kung ano ang iyong pupuntahan namin na mapansin dito ay na kami ay pagpunta sa may isang placeholder. Kaya kung gagawin namin route.get slash post ID. Kaya ID ngayon ay kung ano ang nangyayari sa ipapasa sa controller. Ito ay pagpunta sa gamitin ang controller na namin lamang nilikha, BlogController sa viewPost. At kami ay pagpunta sa alias na ito bilang viewPost. Mahusay. Kaya ngayon kami ay pagpunta upang lumikha ng rutang ito. Kaya ngayon kung pumunta kami dito at i-refresh ang pahinang ito, kami sa katunayan ay walang aming bagong post sa blog. Kaya ito ay kung ano ang aming ginawa nang mas maaga. Napaka-simpleng pahina, ngunit ipinapakita ng blog post na nilikha namin lamang. Ayos. At kung talagang kami pumunta sa pamamagitan ng buong proseso ng paglikha ng isang bagong post sa blog, kami ay napansin na ang lahat ng bagay pag-redirect ng maayos. Kung sinasabi ko, "Hi. Ako Jonathan Tan. " Sabihing, "Ito ang aking blog post na ito." At Ipadala ito, ito ay bubuo ng ang bagong blog post gamit ang ID 2, na palugit mula sa kung ano ang namin ay may dati at nagpapakita ito nang maayos. Kahanga-hanga. Ang anumang mga katanungan? Oo? Tagapagsalita 2: Laravel handle ba sanitization at lahat ng bagay para sa iyo? Eric OUYANG: Oo. Kaya kapag nakita natin mas maaga kapag ginawa namin input tutuldok colon makakuha ng, na sanitates anumang SQL injections at watnat na maaaring gusto namin upang magsagawa ng kung kami ay nakahahamak na gumagamit ng website. Kaya Laravel nakakahawak ng napakaraming ng na sa likod ng mga eksena. Magandang katanungan. Kaya ipaalam sa tumagal ng isang pagtingin sa home page. Kaya kung una ka naming bumalik sa controller para sa home page, mapapansin mo na ito Hindi makagawa ng higit dito. Mapapansin mo na hindi kami pagpasa sa ito controller anumang bagay partikular na nakatutulong. Ito ay lamang index file na ito. Kaya sabihin pumasa sa kapaki-pakinabang na ito ng isang bagay. At partikular, kami ay pagpunta sa pumasa sa mga post. At Laravel ay nagbibigay-daan sa amin na gawin ang lahat ng mga post, na ay magbibigay-daan sa amin upang makakuha ng lahat ng mga post. Ngayon kung pumunta namin pabalik sa index.php, makikita mo, hey. Wala pa dito. Ngunit kung ano ang gusto naming gawin dito ay talagang umulit sa pamamagitan ng, gawin ang isang foreach loop sa ibabaw ng mga post na ay nagbibigay-daan sa amin upang i-print ang mga post. Kaya foreach post bilang post, ano ang gusto naming gawin ay i-print ang nilalaman ng blog post. Ngunit isang bagay na mapapansin mo ay na talaga ay nagsulat namin ang karamihan sa mga na code na, sa view.blade.php. Kaya kung ano ang iyong pupuntahan namin upang aktwal na gawin ay gumamit ng magandang kapaki-pakinabang na tampok ng talim at magfa-factor out na ito sa karaniwang mga code. Kaya pumunta kami dito. Kami ay pagpunta sa tumagal ang nilalaman na ito karapatan dito, at kung ano ang pagpunta naming gawin ay lumikha ng isang bagong folder. Hayaan ang tawagan ng lang ito Partials. At in dito, ipinapadala namin sa pagpunta upang lumikha ng isang post.blade.php. Kaya dito, isinasali na namin ang paraan sa kung saan nais naming ipakita ang mga post. At dito kung ano ang gagawin namin sa halip na talagang nagkakaroon nang direkta na HTML, kami ay pagpunta sa gamitin ang directive tinatawag na isama blog.partials.post. At kung ano ang pagpunta naming gawin dito ay pumasa sa post ng pahina. Kaya ngayon kung pumunta namin pabalik dito, kami ay mapapansin na ang pag-andar pa rin ang parehong. Ngunit ngayon ay mayroon kaming na ito isinasali ang code, ito HTML. Kaya maaari naming gamitin ito sa Index. Kaya dito, ito ay napaka-simple. Ang lahat ng aming ginagawa ay may kasamang blog.partials.post at array. At sa isang lugar sa bago, ginagawa namin ang post na post. Kaya ngayon kung pumunta namin pabalik sa home page, makikita namin makita na, hey. Mayroon kaming isang listahan ng lahat ng mga mga post sa blog na namin ay may mga bago. Maaaring gusto naming magdagdag ng ilang mga "kung" kundisyon at "iba pa" kundisyon upang kung wala kaming anumang bagay sa blog, gusto naming ipakita ng isang bagay na kapaki-pakinabang. Tulad ng, hey. Walang pang nilalaman sa blog. At kung ikaw guys talagang tumingin sa pamamahagi ng code sa on GitHub, makikita mo ang isang halimbawa ng kung paano namin gawin iyon. Ayos. Ang anumang mga katanungan? Oo. Tagapagsalita 2: hulaan ko lang isang pangunahing katanungan. Bumalik sa ruta. Eric OUYANG: Oo. Kung tinitingnan namin ang sa ruta. Tagapagsalita 2: Saan ginagawa ng uses.blogcontroller sa lumikha ng post, ano nga ba na ituro sa amin upang? Eric OUYANG: Oo. Oo. Tagapagsalita 2: O ano ang that-- Eric OUYANG: Kaya, tingnan, sabihin halimbawa, sa rutang ito dito mismo. Ang unang bahagi ay ang aktwal na URL na user pumunta sa. At ito array dito, nag-uugnay array, tumutukoy kung paano namin nais na magkaroon ang application batas bilang tugon dito. Kaya gumagamit ay ang controller, ang pag-andar na namin gusto mong tawagan kapag ang isang gumagamit pupunta sa URL na ito. Kaya viewPost dito mismo ay isang -andar na aming tinukoy sa loob ng BlogController-- Tagapagsalita 2: nakikita ko. Eric OUYANG: --so na namin talaga ay maaaring render ng isang view, gumanap ng ilang mga kalkulasyon, makipag-ugnayan sa database SQL. Tagapagsalita 2: OK. Eric OUYANG: At pagkatapos ay ang iba pang mga bahagi, "bilang" ay isang alias na ginagamit namin. Kaya kung napansin namin kapag nilikha namin ang form na ito, mapapansin mo na ang URL :: routecreatePost. Kaya pamalit ito sa aktwal na URL upang hindi kami nang husto coding ang mga ito upang maaari namin itong palitan -sabay, sabihin kung gusto naming palitan ang pangalan. Sa halip na post slash bago, nais naming gawin tulad ng, p iwa bagong upang linisin lamang hanggang ang aming mga URL ng kaunti. Gusto naming baguhin ito sa isang lugar sa halip kaysa sa lahat ng mga iba't ibang mga file. Ayos. Iyon ay mabuti. Kaya ngayon ay mayroon kaming isang napaka pangunahing platform ng blog. Malamang na gusto naming idagdag sa isang pindutan sa gayon na maaaring aktwal na namin lumikha ng mga bagong post. Kaya kung tinitingnan namin ang sa Layout Master, mayroon kaming isang seksyon na tinatawag Header Kanan na lamang ang tinukoy up kami sa tuktok. Kaya maaari naming magdagdag ng mga pindutan sa sa tuktok ng header. Kaya kung tayo pupunta index.blade.php, talagang gawin ay tukuyin kung ano ang napupunta sa loob ng dito. Kaya ito Header I-right seksyon, kung ano ang namin ang pagpunta sa gawin ay magdagdag sa isang pindutan upang pumunta sa Natukoy ng ruta bagong post URL. Lamang upang linisin ito up at gumawa ng mga ito kaakit-akit at lahat Bootstrap, kami ay pagpunta sa gawin ito ang isang default na pindutan. Ay gumawa lang ito malaki para masaya Hayaan. At sa loob nito, maaari naming ilagay ng ilang teksto. Ngunit ano Bootstrap Nagbibigay ang glyphicons. Kaya maaari talaga namin idagdag sa na magaling na lapis na nakita natin mas maaga. Glyphicon. Glyphicon-lapis. Kaya ito ay magbibigay-daan sa amin upang ilagay sa isang icon sa halip na teksto. Ngayon kung kami itigil, ito ay tukuyin ang seksyon na ito. At, hey. Mayroon kaming isang masarap na pindutan na nagli-link sa amin direkta sa magdagdag ng isang pahina ng blog post na ito. Kaya mayroon kaming walang kinikilingan simpleng blog. Maaari naming idagdag ang mga bagay-bagay dito. Ngunit kung ano ang namin sa pangkalahatan inaasahan mula sa mga blog ay pagkomento. Kaya talagang mahalaga para sa amin na magkaroon, sabihin, kung ang ibang tao ay bumisita sa website at talagang ang may gusto ang post na maaari silang gumawa ng mga talakayan sa iba pang mga tao na bisitahin ang pahina. Kaya kami ay pagpunta sa pumunta at lumikha ng isang bagong database table at isang bagong modelo sa gayon ay maaari naming iugnay komento sa mga post. Kaya ang unang hakbang, tulad ng dati, ay na kailangan namin upang magpatakbo ng isang paglipat. Kaya tulad ng dati, ang ginagawa namin php sanay sa migrate ang: gawin. At kami ay pagpunta upang lumikha ng isa tinatawag na create_comments_table. Ito ay bubuo ng isang file na may aming bagong paglipat. At kami ay pagpunta sa, tulad ng bago, tukuyin ang isang bagong talahanayan. Kaya Schema :: lumikha ng isang talahanayan na tinatawag na mga komento. Ang pagpapaandar na ito dito. At sa loob ng talahanayan na ito kung ano kami ay pagpunta sa gawin ay, unang tulad ng dati, magtalaga ng ID. -Unti ID. Kami ay pagpunta sa payagan ang mga gumagamit upang i-ugnay ang kanilang pangalan sa isang partikular komento. Kami ay pagpunta sa may ilang nilalaman na mangyaring hindi kasama ang mga ito, teksto ng nilalaman. At dito kung ano ang namin ang pagpunta sa gawin ay isang bagay na naiiba. Kami ay pagpunta upang lumikha ng isang integer na tinatawag na post_id Mawawala upang magpahiwatig kung ano ang post na ito isang partikular na komento napupunta sa. Bilang karagdagan, ang aktwal na kami ay pagpunta sa itakda ang isang dayuhang key hadlang sa ito. Kaya MySQL ay ipatupad na iyon. Hindi namin sinusubukan mong magtalaga ng numero ng komento 5 mag-post ng 5,000 kung kami ay hindi Nagkaroon 5,000 mga post dito. Kaya kung ano ang ginagawa namin dito, ginagawa namin banyagang post_id Mawawala na maugnay sa ang field ng ID mula sa mga post table. At talagang kami kailanman gumawa ng isang bagay iba kapaki-pakinabang, ay onDelete. Kaya kung tatanggalin namin ang ilang mga -post mula sa database, na gusto naming cascade ang Tinatanggal para sa mga komento pati na rin. Dahil ito ay hindi kapaki-pakinabang para sa atin na magkaroon ng mga komento sa mga post na hindi umiiral. At sa wakas, tulad ng dati, kami ay pagpunta sa itakda ang oras ng mga selyo sa ito. At tulad ng dati, ipinapadala namin sa pagpunta sa magkaroon ng reverse migration maging -drop ng talahanayan ng mga komento. Kaya ngayon kung pumunta namin pabalik dito, kami ay pagpunta upang patakbuhin ang paglipat, sanay sa migrate. At ngayon ito ay inilapat ito paglipat na nilikha namin lamang. Kaya kung namin ang phpMyAdmin, ginagawa namin, sa katunayan, ngayon magkaroon ng isang talahanayan ng mga komento na may istraktura na tinukoy namin lamang. Kaya tulad ng dati, kami ay pagpunta upang lumikha ng isang bagong modelo sa abstract ang SQL talahanayan na nilikha lamang namin. Kaya ni Magdagdag ng isang bagong file na ipaalam. Kami ay pagpunta sa tumawag ito comment.php. At ito ay aktwal na pagpunta sa maging medyo prangka na may isang bahagyang pagbabago mula sa kung ano ang namin ay may mga bago. Kaya umaabot klase ng Komento magaling magsalita. At kung ano kami ay pagpunta gawin dito ay tukuyin ang isang function na ay ang pakikipag-ugnayan sa iba pang mga modelo. Kaya kami ay pagpunta sa may isang post-andar dito na nagbabalik ng relasyon na ito. Kaya kami ng pagtukoy na ito ay pagmamay-ari na mag-post, na nagsasabi na mayroong isang post na ang komentong ito ay kabilang sa. Ito talaga ay dapat na kapital na P para sa modelo. At ngayon lamang sa iba pang mga flip gilid, mayroon kaming upang sabihin na, hey. Post may mga komento. Kaya kung ano ang namin ang pagpunta sa gawin ay tukuyin ang pampublikong komento function. At dito ay ibinalik ito ay maraming komento. Kaya ngayon magically kapag mayroon kami ng post, maaari naming makuha ang mga komento ng katangian at ito ay malalagyan ito ng impormasyon mula sa database. Kaya sabihin aktwal na pumunta sa pamamagitan at magdagdag ng isang bagong tampok sa aming view ng file sa gayon ay maaari naming parehong display at lumikha ng mga komento. Kaya kami ay pagpunta upang tukuyin ang isang bagong seksyon. Paghiwalayin ito ay lamang Hayaan may isang pahalang na panuntunan. Seksyon id = "mga komento". Ano kami ay pagpunta sa gawin dito ay kung, tulad ng dati, umulit sa lahat ng mga komento. Kaya talagang kung paano namin gawin ito ay, bilang ako nabanggit, medyo mahiwagang. Ginagawa namin post ng mga komento. At pagkatapos ay maaari naming gawin ito para sa bawat loop sa paglipas ng bawat isa sa mga komento. At kung ano ang namin ang pagpunta sa gawin ay div class komento, at kami ay pagpunta sa tunay -print ang komentong ito. Kaya ipakita na hey, magkomento name-- ang tao nag-post ito comment-- sabi tuldok tuldok tuldok. Kami ay pagpunta sa ilagay ito sa isang bloke quote, upang gawin lamang itong magmukhang maganda. At pagkatapos ay magkomento nilalaman block quote. At foreach. Kaya ngayon ito ay pagpunta sa loop sa lahat ng mga komento na nauugnay sa bawat isa sa mga post at ipakita ang bawat isa sa mga komento. Pupunta ako sa magdagdag ng isa pang seksyon pababa dito, na nagpapahintulot sa amin upang magdagdag ng komento. Kaya h3 class. Maglagay ng pamagat dito. Magdagdag ng komento. At kami ay pagpunta upang tukuyin ang isang bagong form. Kaya tulad ng dati, kami ay pagpunta sa gawin ang pagkilos na form. At dito, ang mga bagong pagkilos ay hindi namin pagpunta upang tukuyin ang isang bagong controller na Binibigyang-daan sa amin upang tumugon upang mag-post mga kahilingan para sa paglikha ng mga komento. Kaya createComment URL :: ruta. Pupunta ako upang pumasa sa parameter dito. Ang ID ng mga post na kami ay ang paglikha ng komento sa. At pagkatapos ay ang pamamaraan ng paraan ay magiging post. Ngayon kami ay pagpunta upang idagdag sa ng dalawang mga patlang, form na pangkat. Ito ay magiging isang input sa pangalanan ang "pangalan" at class = "form-control", -type = "text", at may placeholder = "Iyong pangalan." Kami ay pagpunta ding tumukoy isa pang form field, na ay magiging isang text lugar bilang namin ay may mga bago. Tulad ng dati, tumawag ito ng nilalaman. Class = "form-control." Placeholder = "Isulat dito." At kaya lang na kami talaga ay maaaring isumite ito, isumite ang uri at class = "btn btn-pangunahing." Isara ang form na ito. Isara ang pagkilos na ito. Kaya ngayon kung refresh namin ang pahinang ito kung saan mayroon kaming, halimbawa, ang isang partikular na post na ito. Mayroon kaming i-reboot ang server. PHP sanay sa maglingkod. I-reboot ito. Mayroon kaming upang matukoy ang ruta. Ngunit sa ngayon, sabihin tumagal ito lamang out sa gayon ay maaari talagang namin sa iyo kung ano ang hitsura ng pahina, at pagkatapos ay kami ay talagang likhain ang ruta. Kaya, hey. Mayroon kaming na ito bagong paraan pababa dito upang maaari naming lumikha ng mga komento. Kaya sabihin aktwal na tukuyin ang isang -andar sa loob ng controller upang maaari naming magdagdag ng mga komento. Sabihin bumalik. At sa loob ng blogcontroller.php, kung ano ang namin ang pagpunta sa gawin ay lumikha ng isang bagong pag-andar tinatawag lumikha ng komento. Pampublikong function na createComment. Ito ay pagpunta sa magkaroon ng iisang parameter, ang ID ng mga post na namin ang pagkomento sa. At tulad ng dati, kami ay pagpunta sa unang makuha ang post na ito. Kaya mag-post, findOrfail id. Pagkatapos, kami ay pagpunta upang lumikha ng bagong komento. Kaya magkomento = bagong komento. Name = Input Magkomento :: makakuha ng pangalan. Nilalaman ng Komento = parehong bagong linya sa break ng Input :: makakuha ng nilalaman. At sa wakas, kami ay pagpunta sa may upang -ugnay sa komentong ito sa post na ito. Kaya kami ay pagpunta upang gamitin ang function na ito, komento, na nagbibigay-daan sa amin upang i-save ito relasyon. Kaya ngayon ang komentong ito ay magkakaroon ng Awtomatikong ang post ID. Maaari din naming itakda ito nang manu-mano, ngunit ito ay higit pang madaling basahin bilang malayo bilang napupunta ang pag-andar. At pagkatapos naming isinasagawa ito, kung ano ang gusto naming gawin ay nagre-redirect ang gumagamit sa ruta na tinukoy ng viewPost sa array na may parameter ng post ID. At ngayon upang ang aktwal na ito -andar, kailangan naming tukuyin ang ruta. Ruta :: post. At ngayon kami ay pagpunta sa tumawag ito post iwa ID slash komento. Ang array ay gumagamit ng bagong pag-andar na nilikha lamang namin. BlogController. CreateComment bilang createComment. Mahusay. Kaya ngayon sana kung refresh namin ang pahinang ito at idagdag sa isang komento, sabihin nating, David Malan. "Sana ito gumagana." Isumite. Namin, sa katunayan, ay may magkomento sa post sa blog na ito. Ayos. Kaya ngayon kami ay may isang walang kinikilingan functional blog post. Lamang kami ng pagpunta sa magdagdag ng ilang mga pag-aayos sa gayon mayroon kaming ilang mga mas kapaki-pakinabang impormasyon sa mga post na ito. Kaya kung pumunta namin pabalik sa front page, mayroon kaming walang kahulugan kung gaano karaming mga komento ay sa bawat isa sa mga post na ito. Kaya kung ano talaga tayo pupunta gawin ay, sa loob ng aming mga modelo, tukuyin ang isang helper function na nagbibigay-daan sa amin upang tukuyin ang bilang ng mga komento na pumunta sa isang partikular na post na ito. Kaya kami ay pagpunta sa gumawa isang helper function. Pampublikong function. GetNumCommentsStr. Kaya isang string na tumutukoy sa bilang ng mga puna na sumama sa ito. At kung ano kami ay pagpunta sa gawin ay sabihin na num = ito ang bilang ng mga komento. Kaya kami ay pagpunta sa bilangin ang bilang ng mga komento. At kung ang bilang na ito ay katumbas ng 1, kami ay lamang ng pagpunta sa bumalik 1 komento. At pagkatapos ay kung hindi man, nais naming bumalik ang pagdudugtong ng num at mga komento, kaya nakukuha namin ang tamang pluralization. Tiyakin lang na ito ang isang solong quote. Isang komento. At ngayon maaari naming gamitin ang function na ito nang direkta sa loob ng aming mga view. Kaya kung pumunta namin pabalik sa bahagyang post na aming nilikha, ngayon gusto naming talaga ipakita ang bilang ng mga komento. Kaya kung ano ang maaari naming gawin ay post, gamitin ang function na ito na nilikha pa lang namin sa ipakita ang bilang ng mga komento. Kaya kung namin i-refresh ngayon, ginagawa, sa katunayan, display ang mga komento bilang na sumama sa ito. Kung gusto namin na maging fancy kung talaga tingnan ang code sa pamamahagi, maaari naming aktwal na link ito sa mga komento. Kung isipin ang mo, natukoy namin sa loob ng tingnan ang na ito ay may mga komento seksyon ID. Kaya kung nais talaga namin na mag-link direkta sa seksyon ng mga komento, kung ano Gusto naming gawin dito ay isang href URL ng viewPost ruta. Dumaan sa array ID ng post ID. At pagkatapos ay nais naming pumunta sa partikular na seksyon ng mga komento. Narito isara ang mga tag A ipaalam. Kaya ngayon kung refresh namin ito pahina, i-click kami dito. Susubukan naming pumunta nang direkta sa seksyon ng mga komento. Kung nagkaroon kami ng mas mahabang post, maaari kang talaga makita ito bounce pababa. Ngunit mapapansin mo na ito hindi sa tuktok ng pahina. Ayos. Mahusay. Kaya na ang isang walang kinikilingan prangka halimbawa ng isang bagay na maaari mong gawin sa Laravel. Ngunit maaari mong mapansin dito na tapos na kami ng maraming ng mga bagay may medyo maliit na halaga ng code. Binibigyang-daan ka Laravel sa amin upang gawin ang SQL query sa likod ng mga eksena. Ito ang ginagawa ng kalinisan para sa amin sa likod ng mga eksena. Binibigyang-daan sa amin upang gawin ang mga relasyon napaka madali nang hindi nangangailangan sa amin gawin ang anumang SQL sumali sa mga pahayag sa pagsamahin ang mga komento sa kung ano ang post. Binibigyang-daan sa amin upang gawin ito pagmamana ng mga template upang maaari naming tukuyin ang mga nesting file kaya hindi namin na paulit-ulit ang ating mga sarili, tulad lamang kapag kami ay may na display ng mga post sa blog na hindi namin na kailangang kopyahin at ilagay ang code. At mula dito maaari kang bumuo ng lalong kumplikadong mga application. Maaari mong isipin kung namin Nais na ipapatupad mag-log-in, maaari naming sabihin, magdala ng isang third party framework na nagbibigay-daan sa amin upang gawin iyon. Mayroong isang bungkos ng mga ito na talaga ito, talagang mahusay na maaaring gawin tulad, pagbawi ng password. At sasabihin nito sa iyo ng i-reset ang password sa email. Maaari naming ipatupad ang pahintulot sa gayon ay maaari ba akong lumikha ng isang post, ngunit may ibang tao ay hindi maaaring i-edit ito. Maaari naming ipatupad -andar upang tanggalin ang mga post. Ngunit maaari mong makita dito mayroon kaming medyo magkano ang lahat ng mga nagsisimula pa lamang na bahagi upang bumuo ng ilang mga talagang, talagang, dynamic at kapana-panabik na web apps. Kaya doon, sa tingin ko hindi namin mabuti. Ka guys ay may mga katanungan ba? Oo? Tagapagsalita 3: Paano gagawin mo makakuha ng mga static na nilalaman? Eric OUYANG: Static na nilalaman. Kaya nakita mo bago na kapag namin ay may karapatang ito dito, ang nilalaman na ito sa layout, view ng make, nagkaroon kami ito nang walang ito array pagkatapos. Blog.index, nagkaroon kami ito tulad ng isang static na file. Kaya kung hindi kami pumasa anumang bagay kasama dito, Makikita ito lamang render nang direkta sa HTML. Ngunit kung pumasa kami sa nag-uugnay array ng mga post, na kung saan ay pabago-bago na nakuha mula sa database, namin maaaring gumawa ng mga dynamic na pahina. Ayos. Anumang iba pang mga katanungan? Tagapagsalita 3: Paano mo ihambing Laravel sa siguro ilang iba pang mga pagpipilian? Eric OUYANG: Oo naman. Oo. Kaya is-- Laravel na isang mahusay na question-- isa sa maraming mga pagpipilian para sa mga web Framework. Kaya Ruby on Rails ay isa na ang popular. Naniniwala akong Twitter ginamit upang maging ipinatupad sa Ruby on Rails. Sa tingin ko dahil sila na lumipat. Mayroong isa pa na tinatawag na FuelPHP. Kaya Ruby on Rails ay gumagamit ng wika Ruby at nagpapatupad ng maraming mga bagay-bagay MVC na nakikita natin dito. FuelPHP ay isa pang PHP framework. Django ay isa sa aking mga paborito. Ito ay isang web framework para sa Python. Kaya maaari mong isulat ang iyong web app sa Python. Kaya mayroong isang tonelada ng mga pagpipiliang ito. Laravel, sa palagay ko, sa pamamagitan at malaki ang aking mga paboritong karapatan ngayon para sa PHP dahil lang ng mga component na usapan natin ang tungkol sa mas maaga. Pinagana ito ng kompositor. Kabilang dito ang isang talagang, talagang nagpapahayag ORM system. Mayroon ding isang talagang kahanga-hangang templating wika na ang ilan sa iba lamang huwag ibigay. At paglilipat. Paglilipat ay kahanga-hangang pati na rin. Cool? Kahanga-hanga. Well, salamat kaya magkano para sa nanonood ito seminar, at good luck sa iyong huling proyekto.