[Музички] Ерик Ујанг: Еј, сите. Добредојдовте. Ова е за градење на динамични Веб апликации со Laravel. Моето име е Ерик Ујанг. Јас сум на сафомор проучување на социјални студии со средно по компјутерски науки, и живеам во Адамс Куќа тука во Харвард. Значи Laravel, во својата повеќето основни, е MVC веб апликација рамка. Значи допаѓа она што го момци имаат се прави со CS50 финансии, Laravel е рамка што овозможува да се изгради динамички веб апликации. Така можете да мислам на тоа во некои сетила како продолжување на тип на работи сте го правеле во CS50 Финансии, но системот што е многу повеќе робусни, многу повеќе домот во некои сетила, и обезбедува многу функционалност за вас да се изгради прилично комплексна веб апликации. Значи, ајде да одиме преку некои од клучните карактеристики, а потоа ние ќе се нурне во пример за градење на блог апликација со Laravel. Значи, една од првите работи кои тоа се разликува од MVC тип на работа дека сте биле прави со CS50 е тоа вклучува ОРМ моторот. Значи ОРМ се залага за објектот релациони мапирање. Значи ова ви овозможува да се изгради слој на апстракција помеѓу базата на податоци и вашите контролери. Па за разлика во CS50 финансии, каде што можете директно да пребарувања, на ОРМ слој ти овозможува да апстрактни дека далеку и да се создаде модели кои се помоќни од можете директно со SQL кверија. Друга работа е тоа е навистина корисно е наследна шаблони. Па што ќе забележите во CS50 финансии, ќе заврши препишување многу работи, каде места каде што може потенцијално повторна употреба на нештата, не сте во можност да. Значи тука во Laravel, можете да го користите она што е познат како сечилото дефиниција мотор да се создаде еден господар распоред. И од таму, можете да го наследат така што под-шаблони може, всушност, вклучуваат елементи во рамките на дека поголема база на дефиниција. Миграција. Значи, ова е прилично стандардни карактеристики на најмодерните веб апликација рамка. Значи ова ви овозможува да претставуваат база на податоци шема промени во кодот. Значи без случува да се каже, phpMyAdmin, што всушност може да се создадат овие миграции каде што ќе претставува база на податоци шема промени во кодот директно. И ова ви овозможува to-- особено ако имаш повеќе од луѓето кои работат на истата веб-application-- следење на овие промени, велат во GitHub, или некои други складиштето. Значи ова е навистина од голема помош и ублажува потреба да речеме, да помине низ многу на SQL депонии. И, конечно, Композитор е нешто навистина, навистина корисни кој ви овозможува да се користат и други луѓето кодот да се направи страшни работи. Значи Laravel е структурирана како неколку композитор пакети. Така велат дека ако сакаат да ги вратат во проверка на пакетот или ако си сакал да се донесе во некои вид на генератор скрипта или админ интерфејс, може да се вклучи и да игра тие компоненти со композиторот. Значи, ајде да започнете. Било какви прашања од тебе момци пред да можеме да започнете? Нема прашања? Кул. Така, првиот чекор е инсталирање композитор. Значи ти овозможува да Композитор управуваат со овие зависности, дали тоа е Laravel рамка или некои други трети лица продолжување. Првата команда ви овозможува можете да ја преземете Композитор, а втората команда ви овозможува да преместете ја во вашата локална папка Бин така што ќе може да работи Композитор директно преку терминал. После тоа, оди напред и се создаде нов Laravel проект. Ние сме, всушност, ќе употреба на некои пример код дека јас сум се стави заедно да се создаде овој блог. Но, ако сте почнуваат од нула, што ќе ја користите оваа команда до тука, композитор создаде проект, laravel црта laravel, а потоа името на вашиот проект. А тоа ќе вклучи сите дистрибуција код за отпочнување на нов Laravel проект. Значи за вашиот CS50 конечниот проекти, ќе веројатно сакате да ја користите таа команда. Но, ние ќе почнеме со ова. Значи еднаш сте го направиле дека си оди за да се добие прилично обемна број на датотеки во blog50. Значи, ајде да се оди преку некои од овие компоненти. Ќе забележите на овој пат директориумот, постои еден стан папка. Внатре во стан папка, има неколку корисни папки. На белешка да се започне со е оваа конфигурација папка. Значи ова се поставува како Вашиот веб апликација е случува, да речеме, се идентификувате на луѓето или готовина нешта или да се поврзете на базата на податоци. И она што е навистина корисно е дека Laravel Ви овозможува да го поставите различни развојни околини. Значи она што сме го направиле тука е ако одиме под локална папка, има database.php датотека. И ќе забележите дека овде ние формира MySQL конекција дека им овозможува на поединци да се поврзете на MySQL серверот за тоа е директно на CS50 апаратот. И ние сме поврзување со базата на податоци дека јас се постави наречен Blog50. Значи, да се, всушност, оди напред и работи на работната верзија на ова, само за да се добие чувство на она што апликација која ние градиме изгледа како. Значи имам копија од ова Blog50 завршена. Така, всушност, Laravel има изградено во сервер што ќе може да се кандидира директно од командната линија. Значи ова е слично на PSet пред кога ќе всушност изгради свој сервер во В. Така тие се еден изграден во толку што ќе може да се кандидира на вашиот Laravel апликации директно од командната линија. Така да ако правиме PHP занатски служат, овој ќе започне со развој на серверот на порт 8000. Значи, ако ние одиме на локалниот компјутер 8000, ќе се забележи дека, еј. Имаме нашиот блог и трчање. Значи Laravel тука е генерирање на на насловната страница на нашиот блог. Многу едноставна апликација. Но, има неколку навистина Вешта карактеристики тоа што нуди под хауба. Значи блог апликација јасна. Ако сакаме да се создаде еден пост, можеме да кликнете на тоа копче. Може да се каже, "Еј, сите. Ова е навистина забавно Семинар ", на пример. И напише нешто овде. Текст тука. Ако ние кликнете Submit, ќе забележи дека нашиот нов блог пост е додадена на насловната страница на блогот. Ако се вратиме тука, ќе забележите дека имало некои коментари веќе на блог. Значи, ако се движите надолу, ќе забележите дека Џонатан Тан вели дека тој бил многу заинтригиран од овој пост. Значи ќе одиме во начинот на објект релациони мапирање овозможува можете да го направите овие односи во прилично лесна начин, како и. Кул. Било какви прашања во врска со функционалност од она што се случува да се изгради? Кул. Значи, да почнеме со всушност создавање на база на податоци маси. Значи, да се потсетиме дека во CS50 финансии, вие стави заедно на маса за корисници како и за акции во вашето портфолио. Значи, како што споменавме порано, што ние ги користиме во Laravel е нешто познат како миграции. Значи, ако ние се вратиме на дистрибуција код овде, првата команда што е помош која ви обезбедува Laravel е ова мигрираат команда. Значи, ние може да го направи PHP занатски мигрираат: направи. Па ова ни овозможува да се создаде миграција. И тогаш ќе сакаш да се создаде миграција наречен create_posts_table, што се случува да биде каде што ние ќе треба да биде складирање нашиот блог постови. И ќе забележите дека овде се работи преку некои кодот кој, всушност, генерира датотека со времето печат на него. Значи, ако ние одиме и се погледне на база на податоци, ние ќе забележите под Миграции дека тоа е креирано празно датотека за нас, кои има boilerplate код со името дека е одредено, креирате мислења табелата. И тоа има две функции во него. Е она што ние сакаме да се кандидира кога миграција се применува на база на податоци. И долу е она што ние ќе треба да се направи кога сакаме да го поништи миграција. Па еве да почнеме од со пишување на оваа миграција. Па таму е корисен класа во Laravel наречен Шема. Значи ние сме случува да се кандидира Шема :: создаде. И ние си оди за да се создаде маса наречена мислења. И тука се применуваат оваа користејќи функција. И во рамките тука, ние ќе се, всушност, се определи содржината на нашата маса. Ние ќе се создаде проект, кој е авто-incrementing. Покрај тоа, ние ќе да се создаде едно поле што претставува насловот на нашата блог пост. Ние сме, исто така, се случува да се создаде поле за чување на текст на нашата блог пост. И на крај, ние ќе за да ја запази некои маркерите за времето за кога е формиран нашиот пост и кога беше надграден. И за долу, тоа е прилично едноставна. Сите ние сакаме да направите е пад табелата што ние направивме. Велики. Било какви прашања? Па сега ако одиме напред and-- всушност, локалниот компјутер, дозволете ми да ги избришете она што го имавме порано. Оди до бази на податоци. Одам да ги избришете она што го имавме порано. Капка ова и да се создаде нова база на податоци Blog50. Па сега што волшебниот дел е тука дека ние може да се применуваат овие миграции директно до базата на податоци со користење на командната линија алатка. Така да ако правиме PHP занатски мигрираат, ќе забележите дека, еј. Таа е создадена миграција маса, кои ние ќе ги разгледаме во во малку, и тоа е се применува оваа прва миграција. Значи ние се погледне во Blog50, ќе забележите тоа што е создадена две маси за нас. Првиот е ова миграции табелата. Значи, ако ние ги пребарувате на оваа, ќе забележите дека оваа табела е прилично јасна. Тоа е само тоа, еј. Ние сме примени оваа миграција. Ние одиме назад и се погледне мислења. Ќе забележите дека структурата е токму она што му го прашав. Имаме авто-incrementing проект. Имаме низа за складирање насловот, и во полето за текст за чување на содржината. Велики. Кул. Било какви прашања во врска со миграциите работа, како можеме да ги аплицира? Не? Кул. Па сега ние си оди за да се оди напред а всушност се создаде модел. Значи, ние сакаме да се создаде мислења модел кој продавници апстракција на базата на податоци. Така, наместо да прави MySQL пребарувања директно, ние ќе треба да се создаде. Значи ние треба да се создаде папка тука нарекува модели. И во внатрешноста тука, ние ќе треба да создаде фајл наречен post.php. Внатре во оваа PHP фајл, ние си оди за да се создаде класа пост кој се протега елоквентен. Елоквентен е името на ОРМ Laravel мотор кој обезбедува. И овде, можеме да очекуваме дека што всушност треба да пишувам некои код. Ние ќе се пишуваат некои помошник функции подоцна. Но, надвор од кутијата, тоа веќе ќе го признае она што е во базата на податоци а ние може да пристапите до, да речеме, на текст на нашиот блог пост или насловот, и да се создаде работи директно со доста постои кодекс она. Значи тоа е еден од магична компоненти. И ветер еднаш оваа класа се повеќе полноправно, ние ќе вклучуваат информации за тоа што таа е поврзана со, па коментари. Исто така, создаде функција така што можеме, всушност, директно го добиете URL на блог пост-страница. Кул. Било какви прашања во врска со тоа? Не Кул. Па сега еднаш ние си имаме модел, сакате да креирате контролер, кој е може да интерфејс со овие модели, а потоа и на база на податоци. Значи, ако ние ги погледне BlogController, ќе забележите дека не постои многу тука, токму сега. Сè што постои е индекс на функција кој генерира почетната страница, но без ништо има уште да се прикаже. Значи првата функција дека ние ќе треба да се создаде е оној кој ни овозможува да се создаде блог пост. Значи ние ќе треба да се изјасни за нова функција наречена newPost. И во внатрешноста тука едноставно, ние ќе да го поставите изгледот на оваа страница да се биде направат верзија, ако се сеќавате од CS50, на овој шаблон се нарекува blog.new, која ние ќе треба да се создаде во малку. Ќе забележите овде на линија шест што што е наведено оваа променлива, распоред. И ако ги погледнеме во ставовите папка, постои Распоред папка, која вклучува многу основни HTML датотека. И на ум, ќе забележите што го имаме овој контејнер тука што дава содржина. Значи во внатрешноста на нашата дефиниција она што се случува да се направи се создаде она што се случува да биде заменети директно во рамките на овој распоред. Значи ние се рече дека ние сакаме да го направи дефиниција се нарекува blog.new. Но во внатрешноста на блог, има уште не оваа нова дефиниција. Значи ние си оди за да се создаде датотека наречена new.blade.php. Ова му кажува дека Laravel ова PHP фајл треба биде изречена со сечилото дефиниција моторот. Значи, ова е прилично јасна датотека. Тоа се случува да биде во форма со која ние всушност го додадете во блог пост. Значи магија овде од наследство е дека, еј. Ние сакаме да се каже дека дел, содржината секција тука, што е опишан одsection иstop. Значи она што е меѓу нив тука се случува да да биде заменет во господар на распоред. И еве што сакаме да го направиме е многу едноставно создаде нов HTML датотека. Ајде само додадете брзо титула. Додај блог пост. И во рамките на тоа, ние сме случува да се создаде форма. Оваа форма се случува да имаат некоја акција. И ова се случува да биде нешто што ние го замени во подоцна, и ќе видиме колку рутирање вклопува во тука. Но, ние сме само ќе да се дефинира сега за сега дека ова оди до URL-то со рута од createPost. И тогаш тоа се случува да има метод пост. Во рок од тука, ние ќе да има две полиња. Div class = "форма-група". Ние сме користење на библиотеката подигање на CSS грациозно обезбедени од страна на Твитер. Значи ние си оди за да се создаде две од овие. Значи ова е првиот влез ќе биде насловот. Значи внесување име = "наслов". Class = "formcontrol". Type = "text". Одам да додадете случаеви = "Наслов". И тогаш втората е ќе биде дел. Име = "содржина". Class = "formcontrol". И случаеви = "Напиши тука". Не одиме. Конечно, ние ќе треба да додадете брзо достават копче. Тип = "достави" class = "BTN BTN-основно". Значи овие се сите карактеристики на подигање така дека ова може да биде поставен на начин што е плен на корисникот, наместо голи HTML. Затоа ние се дефинира контролорот тука. Ние сме дефинирани многу едноставен приказ. Но, она што недостасува е сврзното ткиво. Значи во овој момент, Laravel нема идеја како ние ќе се всушност пристап до овој контролер. Значи ова е дефинирана во датотека наречена routes.php. И токму сега, имаме еден пат. Која е кога одиме на домашна патека за оваа веб страна, тоа се случува да го направи индексот контролер. Значи тука она што треба да направите е да се спроведе нов начин за нас да создаде еден пост. Значи ние се користи овој метод добие, кој го одредува дека кога еден корисник се обидува да добивате ова page-- специјално пост црта нови page-- она што се случува да се направи се користи контролорот наречен BlogController нов пост. На оној што ние направивме. И тогаш ние ќе да го алијас како newPost. Ние ќе се создаде уште еден функција во малку. Но она што е овде под на клучот "како" е она што ние може да ја замени во нашите Блејд шаблони. Значи сега за сега, ајде всушност, исто така, велат пат. Значи ние сме, исто така, ќе за да се создаде контролер така што можеме да се создадат овие коментари. Значи, ако на корисникот мислења на страницата пост намалување на ново, она што ние ќе треба да се направи се користи контролер, кој ние ќе треба да се создаде кратко наречен BlogController на createPost. И ние си оди за да алијас ова како со createPost. Кул. Било какви прашања? Кул. Значи, да работат она што го имаме досега. Така да ако правиме PHP занатски служат, ќе видиме многу грешки. Па изгледа како имаме синтаксата на правци линија 27. Ах. Недостасува запирка. Значи, ако ние одиме на 8000, ќе видите ништо тука сеуште. Значи ова е стандардно Главна страница. Но, ако ние одиме да ја објавите црта нови, еј. Тоа ќе биде во форма која ние само замислен. Токму сега, не сме спроведува на функционалноста од кога ќе притиснете на копчето Испрати. Значи, ако ние кликнете на Прати копче, тоа се случува да се кандидира за грешка. Но, ние ќе го кодот кој во моментов, токму она што сакате да го направите кога корисникот поднесува оваа форма. Значи, да го направите тоа. Врати се на контролорите датотека. Она што се случува да направите е спроведување на оваа нова функција која ни овозможува да се создаде слики. Изјавувам нова функција. Јавна функција createPost. И оваа функција ќе биде малку пософистицирани отколку што имавме порано. Но, ќе видите дека тука ние не сме ќе всушност се напише било SQL. На ОРМ, елоквентниот ОРМ, се случува да се овозможи ни да го направите тоа во некои начини на поелегантни начин. Значи ние си оди за да се создаде нов пост. И тука сме инстанцирање нов објект од моделот што ние едноставно се создадени, пост модел. И она што ние ќе треба да направите е да поставите насловот атрибут на овој користење на нешто што ги добиваме од серверот. Значи ова е слично на она што имавме порано во CS50 финансии каде што ние би го направил, со користење на супер Глобал пост во потрага по наслов. Значи Laravel обезбедува некои санитарни и какво ли со користење на овој помошник функција. Значи, ние би сакале да користите ова, наместо да ова основно сурова форма од PHP. И тогаш што ние ќе треба да направите е да поставите содржината на тоа да се Влез добие содржина. Ние сме всушност ќе заврши ова во корист функција дека PHP обезбедува наречен nl2br, која Излегува нови линии, NLS, во ТРИСТАЕН, паузи, така што ние, всушност, може да има различни ставови во неа. И конечно, она што се случува да направите е да се спаси овој пост. Значи ние го нарекуваме функција ги зачувате на овој модел. Ние сме случува да се спаси слики. И конечно, она што се случува да се направи се пренасочи на корисникот посебно на пат кој ние ќе се создаде кратко време, со прекар од viewPost. И ние ќе треба да помине во аргументите проект, како проект на овој нов пост. Велики. Па сега ако ние, всушност, оди и да ја стартувате тоа. Ние ќе се додаде нов пост. Да речеме ова е семинар 50. И да каже, секако. ASDL. Сеедно. Некој вид на содржина. И да ја испратат. И ние ќе се забележи дека, еј. патишта не е дефиниран. Но, ако ние ги погледне и phpMyAdmin изгледа за тоа дали или не е нашата функција не направил ништо. Погледни Blog50 мислења. Ќе забележите дека, еј. Всушност, ние не само што создаде блог пост со маркерите за времето, како што е наведено. Па сега ајде да одиме назад и да всушност се создаде овој друга функција во нашата контролор, посебно viewPost контролер. Значи јавна функција viewPost. Па еве што ќе се направи, наместо да има празни загради, ќе сакаат да го поминат во проект на пост, дека ние сме создавање. И од тука она што ние ќе треба да се направи е, всушност, пребарува базата на податоци за тоа. Значи, ако ние пост, има функција наречена Најди која ни овозможува да го пребарува од страна на проект. Поточно, всушност, ние ќе треба да користете алтернативна верзија на ова се нарекува Пронајдете или не, која ни овозможува да се откажете од оваа функција, фрли исклучок ако ИД ние помине во не постои. И тогаш ние ќе треба да се направи нешто слично на она што го правевме претходно каде што ние во собата на содржина на оваа страница за да биде изречена верзија на овој нов поглед што ние ќе треба да се создаде, blog.view. И ние ќе треба да помине во it-- исто како и во CS50 направат function-- речник на променливи. Клучевите на оваа асоцијативна низа стане променливи во рамките на дефиниција. Значи ние сме случува да се направи пост пост. Па го положи индиректно пост што ние сме достапен од базата на податоци. . Сега она што ние ќе треба да направите е да се создаде овој поглед така што ние, всушност, може да видите на блог постови кои сме изградени. Значи ние си оди за да се создаде датотека наречена view.blade.php. Значи во внатрешноста на оваа дефиниција, она што се случува да се направи се стави заедно едноставен страница, која ни овозможува да се прикаже содржината. Па правиме дел, тоа е пред содржини. Стоп. И она што се случува да се направи во рамките тука е пишуваат некои HTML за да се прикаже оваа страница. Така ние ќе го заврши со стилизиран Новиот HTML5 елемент наречен член. И овде, ние ќе да има со глава, каде што ние ќе се едноставно имаат H1, која вклучува насловот на пораката. Па еве, ако се погледне на овој двојни брановидни подготвуваат нотација, тоа ќе го стори во суштина PHP функцијата ехо титула. Така, тоа е корисно стенографија дека Laravel ни дава. Значи ние сме случува да се користи оваа нотација наместо тоа. И тука, ние ќе се, исто така, печатење на содржината на тоа. И овде, ние ќе да се направи пост содржина. И одредување на дното она што ние сме случува да се направи е да се создаде подножјето. И во подножјето, ние ќе треба да Првиот екранот кога овој беше објавен. Значи ова беше објавен во, создадени во. И Laravel користи навистина убаво датум библиотека наречена јаглерод. Значи ние всушност може да направи нешто што се нарекува difforHumans, што го виде порано. Кога се испратени. тоа ќе каже, како, пред пет секунди. Значи ова е навистина убав функционалноста на Laravel. И на крај, ние ќе да се затвори оваа подножјето. Па сега ако ние се вратиме Дома ние ќе за да го видиш тука ништо бидејќи допрва ние не се кодирани до почетната страница. Но, ако ние одиме да ја објавите коса црта еден, ние нема да видите исклучок. Дали некој знае зошто можеме да видиме еден исклучок? Што сме ние недостасува? Сите идеи? Значи она што го правиме порано за нас, всушност, да се дефинира како да се дојде до особено контролорите? ЗВУЧНИЦИ 1: На пат? Ерик Ујанг: Да. Значи ние се уште треба да се дефинираат пат. Значи ние се вратиме тука да routes.php. Ќе забележите дека ние всушност не е дефиниран како ние си оди за да се добие на овој контролер. Па сега ние си оди за да се дефинира овој пат. Тоа е прилично јасна, слично на она што го правевме претходно. Но, она што ние ќе треба да се забележи е дека ние ќе треба да имаат резервирано место. Така да ако правиме route.get коса црта пост проект. Значи проект сега е она што се случува да се да се донесе во контролорот. Ова се случува да се користи контролор дека ние едноставно создадени, BlogController на viewPost. И ние си оди за да алијас ова како viewPost. Велики. Па сега ние си оди за да се создаде овој пат. Па сега ако одиме тука и освежување оваа страница, ние всушност немаат нашиот нов блог пост. Значи ова е она што го креиравте претходно. Многу едноставен страница, но ја прикажува блог пост дека ние само замислен. Кул. И ако ние, всушност, оди во текот на целата процесот на создавање на нов блог пост, ние ќе забележите дека сè пренесувања правилно. Ако речам: "Здраво. Јас сум Џонатан Тан. " Кажи: "Ова е мојот блог пост." И го доставува, тоа ќе создаде овој нов блог пост со лични 2, кои чекори од она што го имавме претходно и го прикажува тоа правилно. Прекрасно. Било какви прашања? Да? ЗВУЧНИЦИ 2: Дали Laravel рачка sanitization и сè за вас? Ерик Ујанг: Да. Значи, кога видовме претходно, кога ние го сторивме влез дебелото црево дебелото црево добие, дека sanitates било SQL инјекции и какво ли не дека ние можеби ќе сакате да се изврши ако ние сме злонамерен корисник на сајтот. Значи Laravel се справува со многу на тој зад сцената. Добро прашање. Па ајде да ги разгледаме во почетната страница. Значи, ако ние прво да се вратиме на Контролер за почетната страница, ќе забележите дека тоа не направи многу тука. Ќе забележите дека ние не сме поминува во овој контролер ништо особено корисна. Тоа е само овој индекс датотеката. Значи, да помине во ова нешто корисно. И конкретно, ние сме ќе помине во мислења. И Laravel ни овозможува да се направи пост сите, што ќе ни овозможи да ги добиете сите постови. Сега, ако се вратиме index.php, ќе видите, еј. Ништо тука уште. Но, она што сакате да го направите тука е, всушност, iterate преку, направи foreach јамка во текот на мислења кои ни овозможува да испечатите на мислења. Значи foreach постови како пост, она што сакате да го направите се испечати неговата содржина на блог пост. Но, едно нешто што ќе забележите е дека ние всушност го напишал повеќето од кои код Веќе во view.blade.php. Значи она што ние ќе треба да направите е, всушност, користат убав корисна функција на Блејд и фактор на овој заеднички код. Значи ќе одиме тука. Ние сме случува да се земе оваа содржина токму тука, и она што се случува да се направи е да креирате нова папка. Ајде да го наречеме Partials. И овде, ние ќе да се создаде post.blade.php. Па еве, ние констатирано и од начинот на кои сакаме да се прикажат овие коментари. И тука она што ние ќе направиме наместо всушност, ја презеде дека HTML директно, ние ќе треба да ја користите оваа Директива наречен вклучуваат blog.partials.post. И она што се случува да го направите тука се помине во пост на страната. Па сега ако ние се вратиме тука, ние ќе забележите дека функционалноста се уште на истиот. Но, сега имаме овој констатирано и надвор код, ова HTML. Значи можеме да ја користите во индексот. Па еве, ова е многу јасна. Сите што го правиме е да го вклучите blog.partials.post и низа. И некаде да пред, тоа го правиме пост пост. Па сега ако ние се вратиме на Главна страница, ќе видиме дека, еј. Имаме листа на сите блог постови кои ги имавме пред. Ние би сакале да додадете некои "ако" условите и "друго" услови така што ако ние немаме нешто на блогот, ние сакаме да се прикаже нешто корисно. Како, еј. Нема содржина се уште на блог. И ако вие момци всушност се погледне дистрибуција кодот на GitHub, ќе видите еден пример за тоа како да го направи тоа. Кул. Било какви прашања? Да. ЗВУЧНИЦИ 2: Претпоставувам дека само фундаменталното прашање. Назад на пат. Ерик Ујанг: Да. Доколку ги погледнеме правци. ЗВУЧНИЦИ 2: Каде се uses.blogcontroller на креирање пост, Што ни го насочи кон? Ерик Ујанг: Да. Да. ЗВУЧНИЦИ 2: Или она што е that-- Ерик Ујанг: Значи, да погледнам, да речеме на пример, овој пат во право тука. Во првиот дел е вистински URL, кој на корисникот ќе одат. И оваа низа тука, асоцијативна низа, го дефинира како сакаме да се имаат апликација дело како одговор на тоа. Значи користи е контролорот, функцијата што ние сакате да се јавите кога корисникот го овој URL-то. Значи viewPost токму тука беше функцијата што е дефинирано во на BlogController-- ЗВУЧНИЦИ 2: Ја гледам. Ерик Ујанг: --so дека ние всушност може да направи во поглед на, изведување на некои пресметки, комуницирате со SQL база на податоци. ЗВУЧНИЦИ 2: OK. Ерик Ујанг: И тогаш другите дел ", како" е алијас кои ги користиме. Значи, ако забележите кога ние направивме форма, ќе забележите дека URL :: routecreatePost. Така, тоа е замена во конкретната URL-то, така што ние не сме тешко кодирање во овие за да можеме да ја промените еднаш, велат дека ако сакаме да се преименува. Наместо пост коса црта нови, ние сакаме да ви се допаѓа, стр коса црта нови само за чистење нашите адреси малку. Ние ќе го промени на едно место, а отколку низ сите различни датотеки. Кул. Тоа е добро. Така, сега имаме многу основните блог платформа. Ние веројатно ќе сакате да го додадете во едно копче така дека ние, всушност, може да се создаде нови мислења. Значи, ако ги погледнеме Распоред на мајстор, имаме секција наречена заглавие Право дека ние сме само што е дефинирано горе на врвот. Значи можеме да додадете копчињата за на врвот на заглавието. Значи, ако ние одиме на index.blade.php, всушност, направите е да се дефинира она што се случува во внатрешноста на овде. Значи ова заглавие Право дел, она што се случува да се направи е да додадете во едно копче да се оди на URL-то е дефинирано од страна на рутата нов пост. Само да го исчисти и да се направи тоа е убава и сите подигање, ние си оди за да се направи ова стандардно копче. Ајде само да се направи тоа голема и за забава. И во него, би можеле да се стави на некој текст. Но, она подигање обезбедува е glyphicons. Значи ние всушност може да го додадете во кои убаво молив што сме го виделе порано. Glyphicon. Glyphicon-молив. Значи ова ќе ни овозможи да се стави во икона, наместо на текстот. Сега ако ние не престануваат, овој ќе го дефинира овој дел. И, еј. Имаме убав копче што не поврзува директно на додадете блог пост страница. Значи имаме прилично едноставна блог. Ние можеме да додадете нешто на тоа. Но, она што ние обично очекуваат од блогови коментира. Значи тоа е навистина важно за нас да имаат, кажам, ако некој друг во посета на веб-сајт и навистина сака пост што тие можат да се вклучат во дискусијата со други луѓе кои ја посетите страницата. Значи ние сме ќе одат и да се создаде нова база на податоци маса и нов модел така што можеме да го поврзете коментари со мислења. Така, првиот чекор, исто како и пред тоа, е дека ние треба да се кандидира на миграцијата. Значи, како и порано, тоа го правиме PHP занатски мигрираат: направи. И ние си оди за да се создаде еден наречен create_comments_table. Ова ќе создаде датотека кој има нашата нова миграција. И ние сме случува да се, како пред, се дефинира нова табела. Значи Шема :: создаде маса наречена коментари. Оваа функција овде. И во оваа табела што ние ќе треба да направите е прво, како и досега, да му постави проект. Наголемува проект. Ние ќе им овозможи на корисниците да се дружат нивното име со посебен коментар. Ние сме случува да имаат некои содржини кои оди заедно со тоа, текст содржина. И еве што ние ќе треба да направите е нешто поинаква. Ние ќе се создаде цел број Тоа се вика post_id кои се случува да се означи она пост одредена коментар оди со. Покрај тоа, ние, всушност, ќе поставите странски клучните Ограничување за ова. Значи, MySQL, ќе се спроведе тоа. Ние не се обидуваме да доделите број коментар 5 да ја објавите 5000 Ако не сме имаше 5.000 постови на неа. Значи она што го правиме тука, правиме странски post_id се случува да се биде поврзан со поле проект од табелата мислења. И ние всушност ќе направи нешто друг корист, е onDelete. Значи, ако ние избришете некои пост од базата на податоци, кои сакаме да ги пренесат на брише за коментари, како и. Бидејќи тоа не е многу корисна за нас да има коментари на постови кои не постојат. И на крај, како и порано, ние сме се случува да го поставите времето марки за ова. И како и порано, ние ќе треба да има обратна миграција се намалувањето на коментари табелата. Па сега ако ние одиме назад до тука, ние ќе да ја извршите оваа миграција, занаетчија мигрираат. И сега тоа е се применува овој миграција, ние само замислен. Значи, ако се погледне phpMyAdmin, правиме, всушност, сега имате коментари маса која има структура која ние само одреден. Значи, како и порано, ние сме ќе се создаде нов модел на апстрактни SQL табела дека ние само замислен. Значи, ајде да додадете нова датотека. Одиме да го наречеме comment.php. И ова е, всушност, ќе биде прилично јасна со мали промени од она што го имавме порано. Значи класа коментар протега елоквентен. И она што се случува да го направите тука е да дефинирате функција која е односи со другите модели. Значи ние се случува да имаат пост функција Тука се враќа на овој однос. Значи ние сме наведувајќи дека Тој припаѓа на пост, велејќи дека има еден пост дека овој коментар припаѓа. Ова, всушност, треба да биде капитал P за моделот. И сега само врз основа на други флип страна, ние треба да се каже дека, еј. Мислења и коментари. Значи она што ние ќе треба да направите е дефинираат јавни коментари функција. И тука се враќа ова има многумина коментираат. Па сега магично кога имаме еден пост, ние може да се добие атрибутот коментари и тоа ќе го населуваат со информации од базата на податоци. Значи, да се, всушност, оди преку и додадете нова функција на нашиот поглед на датотека така што можеме да и дисплеј и да се создаде коментари. Значи ние си оди за да дефинирате нова секција. Ајде само да ја раздели со хоризонталната правило. Дел id = "коментари". Она што се случува да се направи тука е, како и порано, iterate преку сите коментари. Така, всушност, како тоа го правиме ова, како што споменав, прилично магично. Ние го правиме сеиспрати коментари. И тогаш можеме да го стори тоа за секој јамка над секоја од коментари. И она што се случува да се направите е div class коментар, и ние ќе да се, всушност, печати на овој коментар. Значи се прикаже дека еј, коментар name-- лицето кој ја има пратено оваа comment-- вели точка точка точка. Ние ќе се стави ова во еден блок понуда, само за да се направи да изгледа убаво. И тогаш коментира содржината блок понуда. И foreach. Па сега тоа се случува да се јамка преку сите коментари кој е поврзан со секоја од мислења и прикажување на секоја од овие коментари. Одам да додадете уште еден дел надолу тука, која ни овозможува да додадете коментар. Значи Н3 класа. Стави наслов овде. Додади коментар. И ние си оди за да дефинирате нова форма. Значи, како и порано, ние сме случува да се направи форма акција. И тука, новата акција е ние сме ќе се дефинира нов контролер, кој ни овозможува да се одговори да ја објавите барања за создавање коментари. Значи URL :: пат createComment. Одам да се помине во параметар тука. Проект на мислење дека ние сме создавање коментар. И тогаш методот на овој форма ќе биде пост. Сега ние ќе треба да додадете во две полиња, формата група. Ова се случува да биде влез со името "името" и класа = "форма контрола", type = "text", како и со случаеви = "Вашето име". Ние сме, исто така, ќе се дефинираат друга форма област, што се случува да биде еден текст област како што беше порано. Исто како и досега, да го наречеме содржина. Class = "форма-контрола." Случаеви = "Напиши тука." И само така што можеме всушност може да го поднесе, поднесе род и класа = "BTN BTN-основно." Затворете форма. Затворете оваа акција. Па сега ако ние се освежи оваа страница, каде што имаме, да речеме, со одредено работно место. Ние мора да се рестартира серверот. PHP занатски служи. Рестартирајте ова. Ние треба да се дефинираат пат. Но, за сега, ајде да ја искористам оваа надвор, така што ние, всушност, може да ви покаже што страната изгледа, а потоа ние, всушност, ќе се создаде тој пат. Значи, еј. Имаме оваа нова форма овде така што можеме да се создаде коментари. Значи, да се, всушност, се дефинира функција во рамките на контролорот така што можеме да додадете коментари. Да се ​​вратиме. И во рамките blogcontroller.php, она што се случува да се направи се создаде нова функција наречен создаде коментар. Јавна функција createComment. Ова се случува да имаат еден параметар, ИД бројот на постови дека ние сме коментирајќи. И како и порано, ние сме ќе се добие првиот пост. Значи, ја објавите, findOrfail проект. Потоа, ние ќе да се создаде нов коментар. Така коментира = нов коментар. Коментар Име = Влез :: добие име. Коментар содржината = истата нова линија во паузи од Влез :: добие содржина. И на крај, ние ќе треба да се дружат овој коментар со пост. Значи ние сме случува да се користи оваа функција, коментари, која ни овозможува да се спаси овој однос. Па сега овој коментар ќе имаат автоматски пост проект. Ние, исто така може да се постави рачно, но тоа е повеќе лесно да се прочита колку како функција оди. А откако ќе се изврши ова, она што сакате да го направите е пренасочување на корисникот на пат утврдени со viewPost со низа со параметар на пост проект. И сега, така што ова, всушност, функции, ние треба да се дефинира овој пат. Пат :: пост. И сега ние си оди за да се јавите на оваа пост црта проект коса црта коментар. Низа користи новата функција дека ние само замислен. BlogController. CreateComment како createComment. Велики. Така, сега се надевам дека ако се освежи оваа страница и да го додадете во коментар, да речеме, Дејвид Malan. "Се надеваме дека тоа функционира." Прати. Ние, всушност, имаат коментира за овој блог пост. Кул. Така, сега имаме прилично функционална блог пост. Ние сме само ќе додадете неколку измени, па дека ние имаме некои повеќе корисни информации за овие теми. Значи, ако ние се вратиме на насловната страница, ние немаме никаква смисла за тоа како многу коментари се за секој од овие места. Значи она што ние всушност се случува да се направи е, внатре нашиот модел, се дефинира помошник функција што им овозможува ни да го одредите бројот на коментари кои одат со одредено работно место. Значи ние си оди за да се создаде помошник функција. Јавна функција. GetNumCommentsStr. Значи стринг што го одредува бројот коментари кои одат заедно со него. И она што ние ќе треба да направите е да се каже кој = бр овој коментари брои. Значи ние ќе се смета бројот на коментари. И ако овој број е еднаков на 1, ние сме само ќе се врати 1 коментар. И тогаш инаку, ние сакаме да се вратат на сплет на ЕЕЗ и коментари, па ние се плурализација точни. Едноставно направи тоа една понуда. Еден коментар. И сега можеме да ја користите оваа функција директно во внатрешноста на нашиот поглед. Значи, ако ние се вратиме на делумно мислења кои ние направивме, сега сакаме да всушност прикажување на број на коментари. Значи она што можеме да направиме е пост, ја користите оваа функција што ние едноставно се создадени за да прикажување на број на коментари. Значи, ако ние сега се освежи, тоа го прави, всушност, дисплеј бројот коментари кои одат заедно со него. Ако сакавме да биде фенси ако всушност се погледне на дистрибуција код, ние всушност може да се поврзе ова на коментарите. Ако се сеќавате, се дефинирани во видите дека ова има секција проект коментари. Значи, ако ние всушност сакаа да се поврзе директно на делот за коментари, што ние ќе го направите тука е href URL-то на пат viewPost. Подава во низа проект на пост проект. И тогаш сакаат да одат на посебно делот за коментари. Еве, ајде да се затвори А таг. Па сега ако ние ја освежите страница, ние кликнете на ова. Ние ќе одат директно на коментари секција. Ако имавме подолг пост, можете да всушност гледаат оваа отскокнување надолу. Но, ќе забележите дека тоа е не се на врвот на страната. Кул. Велики. Значи тоа е прилично јасна пример за нешто едноставно дека можете да направите со Laravel. Но, може да се забележи дека ние сме го направиле многу нешта со прилично мал износ на кодот. Laravel ни овозможува да го стори SQL queries зад сцената. Тоа го прави на санитарни за нас зад сцената. Ни овозможува да се прават овие односи многу лесно без нас им е потребна да се направи било SQL извештаи да се приклучат комбинираат коментари со она на мислења. Ни овозможува да го направите ова наследството на шаблони така што можеме да го дефинираме овие гнездење датотеки, па ние не сме си повторуваат, исто како кога имавме дека приказ на блог постови дека ние не треба да се копирајте го и ставете го кодот. И од тука може да се изгради повеќе сложени апликации. Можете да замислите ако ние сакаше да се спроведе влезете во, може да се каже, се донесе во трето лице рамка која ни овозможува да го направите тоа. Има еден куп од нив кои се навистина, навистина голема што може да ви се допаѓа, наплата на лозинка. И тоа ќе ти испрати ресетирање на лозинка е-мејл. Ние може да се спроведе дозвола така што јас може да се создаде еден пост, но некој друг не може да го уреди. Ние може да се имплементира функционалност да ги избришете мислења. Но, можете да видите тука дека имаме прилично многу рудиментирани сите компоненти да се изгради некој навистина, навистина, динамичен и возбудлив веб апликации. Така да со тоа, мислам дека си добар. Дали вие момци имате било какви прашања? Да? ЗВУЧНИЦИ 3: Како да го направите добие статична содржина? Ерик Ујанг: Статичка содржина. Значи, сте гледале пред тоа, кога имавме Ова право тука, овој распоред содржина, поглед направи, имавме оваа без оваа низа потоа. Blog.index, имавме оваа како само статична датотека. Значи, ако ние не го положи нешто заедно со неа, тоа само ќе ги направи HTML директно. Но, ако се помине во оваа асоцијативна низа на работни места, што е динамично извлечени од базата на податоци, ние може да се направи од страната динамика. Кул. Било какви други прашања? ЗВУЧНИЦИ 3: Како би го споредуваат Laravel да можеби и некои други опции? Ерик Ујанг: Секако. Да. Значи Laravel is-- тоа е голем question-- еден од многуте опции за веб рамки. Значи Ruby on Rails е оној кој е популарен. Верувам Твитер се користи да биде спроведува со Ruby on Rails. Мислам дека сум од вклучен. Има уште еден вика FuelPHP. Значи Ruby on Rails користи Руби јазик и спроведува многу работи MVC што ние го гледаме тука. FuelPHP е уште една рамка PHP. Џанго е еден од моите омилени. Тоа е веб-рамка за Пајтон. Така можете да го напишете вашиот веб стан во Python. Значи има еден тон на овие опции. Laravel, мислам, од страна и Голем е мојот омилен право сега за само затоа што PHP од компонентите кои зборувавме претходно. Тоа е Композитор е овозможено. Тоа вклучува, навистина, навистина експресивен ОРМ систем. Исто така има навистина страшни templating јазик што некои од другите само не обезбедуваат. И миграции. Миграциите се страшни, како и. Кул? Прекрасно. Па, благодарение толку многу за гледањето на овој семинар, и среќа на вашиот конечниот проекти.