[Музике може чути] Ерик Оуианг: Хеј, сви. Велцоме. Ово је зграда Динамички Веб Аппс са Ларавел. Моје име је Ерик Оуианг. Ја сам студент друге године студирања друштвених наука са секундарна у рачунарству, и ја живим у Адамс Кућа овде на Харварду. Дакле Ларавел, у свом највећем језгру, је МВЦ веб апп оквир. Па свиђа шта ви имате радили са ЦС50 финансија, Ларавел је оквир који омогућава да се изгради динамичких веб апликација. Тако да можете мислити о томе на неком смислу као продужетак врсте ствари сте радили у ЦС50 Финансије, али систем који је много више робустан, много елегантније у неком смислу, и пружа пуно функционалност за вас да се изгради прилично сложен веб апликације. Дакле идемо кроз неке од кључних карактеристика, а онда ћемо уронити у Пример изградње блог апликација са Ларавел. Тако је један од првих ствари које разликује га од МВЦ врсту посла да сте радили са ЦС50 је то укључује ОРМ мотор. Тако ОРМ означава објекат релациона мапирање. Па вам је да се изгради слој апстракције између базе података и твоји контролери. Стога, за разлику ЦС50 финансија где можете директно да упите, ОРМ слој вам омогућава да апстрактна да у гостима и створи Модели који су моћнији од можете директно са СКЛ упита. Још једна ствар која је стварно корисно је наследна шаблони. Зато ћете приметити у ЦС50 финансија, завршиш преписивање много ствари, где сте ставља потенцијално могао поновну употребу ствари, нисте у могућности да. Дакле овде у Ларавел, можете користити оно што је познат као шаблона мотор сечива да створи распоред мастер. И одатле, можете наследити тако да суб-шаблони могу заправо укључују елементе унутар да већу базне шаблона. Миграција. Дакле, ово је прилично стандардну опрему на Већина модерних веб апликације оквири. Дакле, ово вам омогућава да шему базе промене у коду. Дакле, без да каже, ПхпМиАдмин, можете креирати ове миграције где сте представник базу података шема мења директно у коду. И ово вам посебно да-- ако имате више људи који раде на истој веб апплицатион-- трацк ове промене, кажу у ГитХуб, или неки други спремиште. Дакле, ово је заиста корисно и ублажава потребу да, рецимо, проћи око много СКЛ депонијама. И на крају, Композитор је нешто стварно, стварно корисно који вам омогућава да користите друге код људи да уради страшан ствари. Дакле Ларавел је структуриран као неколико композитор пакета. Па реци ако је желела да унесе у пакету за потврду идентитета или ако сте жељели у неким врста генератора скрипте или админ интерфејс, можете плуг анд плаи те компоненте са композитором. Па хајде да почнемо. Сва питања из тебе момци пре него што почнемо? Нема питања? Цоол. Дакле први корак је инсталирање Композитор. Дакле Композитор вам омогућава да управља овим зависности, да ли је то Ларавел оквир или неки други локал треће стране. Први команда дозвољава да преузмете Цомпосер, а друга команда вам омогућава да преместите га у свој локални фолдер бин тако да можете покренути Цомпосер директно преко терминала. Након тога, само напред и креирали нови пројекат Ларавел. Ми у ствари идемо у користите неки пример код да сам ставио заједно да створи овај блог. Али ако почев од огреботина, коју ће користити ову команду овде, композитор креирати-пројекат, ларавел сласх ларавел, а затим зове пројекат. А то ће укључити све код дистрибуција за покретање новог Ларавел пројекат. Дакле, за ваше ЦС50 завршних пројеката, ви ћете Вероватно желите да користите ову команду. Али ћемо почети са овим. Дакле кад си урадио да, ти ћеш добити прилично обиман број датотека у блог50. Дакле идемо кроз неке од ових компоненти. Приметићете на овом путу директоријум, постоји фолдер апликација. Унутар фолдера апликације, ту је пар корисних фасцикле. Треба поменути да почне са је ово цонфиг фасцикла. Дакле, ово поставља како Ваш веб апликација је ће, рецимо, потврди аутентичност људе или готовински ствари или повезивање са базом података. И шта је заиста корисно је да Ларавел омогућава вам да подесите другачији развојним окружењима. Па шта смо урадили овде је ако идемо под локалном фолдеру, постоји датабасе.пхп фајл. И приметићете да смо овде подесите МиСКЛ везу ту омогућава појединцима да се повежете на МиСКЛ сервер који је директно на ЦС50 апарата. И ми повезивање са базом података да сам поставити зове Блог50. Па хајде да ствари иду напред и рун радну верзију ове, само да би осећај шта апликација која градимо изгледа. Тако да имам копију ово Блог50 завршена. Тако Ларавел заправо је изграђен у сервер да можете покренути директно из командне линије. Дакле, ово је сличан ПСет пре када вам заиста изградите сопствени сервер у Ц. Тако су један саграђена тако да можете да почнете са Ларавел апликације директно из командне линије. Дакле, ако радимо пхп Артисан служе, ово ће покренути развој сервер на порту 8.000. Дакле, ако одемо у локалној хост 8.000, приметићете да, хеј. Ми имамо блог проради. Дакле Ларавел овде се генерише насловна страна нашег блога. Врло једноставна апликација. Али има пар Стварно Нифти карактеристике да она пружа испод хаубе. Дакле Блог апликација је једноставно. Ако бисмо желели да створе пост, можемо кликните на то дугме. Можемо рећи, "Хеј, свима. Ово је стварно забавно Семинар, "на пример. И напиши нешто овде доле. Тект овде. Ако кликнемо Пошаљи, ви ћете приметити да је наша нова блог Пост је додат у насловна страна блога. Ако се вратимо овде, приметићете да било је неких коментара присутно на блогу. Дакле, ако смо идите доле, ви ћете приметити да Џонатан Тан каже да је био веома заинтригирао овај пост. Тако ћемо ући у објекат како релациона мапирање дозвољава ви да урадите тих односа у прилично бесшовние начин као добро. Цоол. Сва питања у вези функционалности од шта ћемо градити? Цоол. Почнимо са ствари креирање табела базе података. Тако се сећате да је у ЦС50 финансија, те саставио табелу за кориснике као и за залихе у свој портфолио. Дакле, као што је раније поменуто, оно што користимо у Ларавел је нешто познат као миграција. Дакле, ако се вратимо у дистрибуција код овде, Прва наредба да је корисно да вас Ларавел пружа је ово Миграте команда. Тако можемо да урадимо пхп занатску мигрирају: направи. Дакле, ово нам омогућава да креирате миграцију. А онда ћемо желети да створи миграцију зове цреате_постс_табле, који ће да буде тамо где идемо да бе чување наше блога. И приметићете овде да ради преко неког кода који заправо генерише датотеку са ознака времена на њему. Дакле, ако одемо и погледамо базе, ми ћемо приметити под миграцијама да га стварају празно фајл за нас који има општенаменским код са именом да смо назначили, створити порука табелу. И има две функције у њему. Уп је оно што желимо да тече када миграција се наноси на бази података. А доле је оно што ћемо да радимо када желимо да поништи миграцију. Па овде почнимо од са писањем овог миграцију. Тако да од помоћи класа у Ларавел зове шема. Тако ћемо покренути Схема :: стварају. И ми ћемо да створимо сто под називом поруке. И овде применимо ово користећи функцију. И у ту, идемо у ствари навести садржај нашег стола. Идемо да створимо ИД, који је ауто-увецава. Поред тога, идемо да створи поље које представља титулу нашег блогу. Ти такође ћемо створити терен за складиштење текст нашег блогу. И на крају, идемо за чување неке временске ознаке за при стварању наше поруке а када је ажуриран. И за доле, то је прилично једноставан. Све што желите да урадите је кап сто да смо створили. Велики. Има ли питања? Тако да сада ако идемо напред и-- заправо, локални домаћин, дај да уклони оно што смо имали раније. Иди на базама података. Идем да избришете оно што смо имали раније. Баци то и створити нова база података Блог50. И шта сад магичан Део је овде да смо могу да се пријаве ове миграције директно бази података коришћењем командна линија алат. Дакле, ако радимо пхп занатску мигрирају, приметићете да, хеј. То је створио сто миграције, који ћемо да погледамо у мало, и то је применио овај први миграцију. Дакле гледамо Блог50, приметићете да га стварају двије табеле за нас. Прво је ово миграције сто. Дакле, ако смо прегледати ово, приметићете да ово сто је прилично једноставан. То је само рекао да је, хеј. Ми смо применити ову миграцију. Ми се вратимо и погледамо постова. Приметићете да структури је управо оно што смо га питали. Имамо ауто-инцрементинг ИД. Имамо низ за складиштење наслов, а текст поље за складиштење садржаја. Велики. Цоол. Сва питања у вези миграција Рад, како можемо да их применити? Не? Цоол. Дакле, сада ћемо да идемо напред и заправо створи модел. Зато желимо да створимо порука модел који складишти апстракција базе података. Тако уместо да раде МиСКЛ упите директно, идемо да створимо. Дакле, морамо да створимо фасцикла овде називају моделима. И унутра, идемо у креирати фајл под називом пост.пхп. Унутар овог ПХП датотеци, идемо да створимо класа порука која се простире елоквентно. Елоквентна је назив ОРМ мотор који Ларавел пружа. И овде, можемо очекивати да ти стварно треба да напише неки код. Идемо написати неке помоћне функције касније. Али из кутије, ово ће већ препознају шта је у бази података и можемо приступити, кажу, текст нашег блога или наслов, и створити ствари директно са прилично без кода уопште. Дакле, то је један од магичних компоненти. И ветар једном ове класе је више пуноправни, ћемо укључити информације о томе шта то односи на, тако коментарима. Такође креирајте функцију Тако да можемо да директно добијање УРЛ а блог пост страници. Цоол. Сва питања у вези тога? Не. Цоол. Тако сада када имамо наш модел, ми желимо да створимо контролер који је способни за повезивање са овим моделима, а потом база података. Дакле, ако узмемо поглед на БлогЦонтроллер, ви ћете приметити да не постоји много овде сада. Све је ту је индекс функција који генерише почетну страну, али без ичега ту да још приказали. Дакле први функције да ћемо створити је онај који нам омогућава да створи блог пост. Тако ћемо прогласити Нова функција зове невПост. И унутра једноставно, идемо да подесите распоред ове странице да буде рендер верзију, ако се сећате из ЦС50, овог шаблона зове блог.нев, која идемо да створимо у мало. Приметићете овде он лине шест који ми прецизирао ову променљиву, распоред. А ако погледамо Погледа на фолдер, постоји Распореди фасцикла, која укључује веома основни ХТМЛ датотеку. И помена, приметићете да имамо амбалажу овде да даје садржај. Дакле унутар нашег шаблона шта ћемо да радимо се створи шта ће бити супституисан директно у оквиру овог распореда. Тако да смо рекли да желимо да рендер шаблон зове блог.нев. Али унутар Блог, ту је још није овај нови шаблон. Тако ћемо створити фајл под нев.бладе.пхп. Ово говори да Ларавел ово ПХП фајл треба учињен са оштрица шаблон мотор. Дакле, ово је прилично једноставан фајл. То ће бити форма којом ми заправо додати у блогу. Тако магијом овде из наслеђивање је то, хеј. Желимо да прецизира да секција, секција садржај овде, што се обележено по@сецтион и@стоп. Па шта је између овде ће бити замењен у изгледу мастер. И овде оно што желимо да урадимо је Веома једноставно креирате нову ХТМЛ фајл. Хајде да додате брзи титулу. Додај блог пост. И у њој, ми смо ће створити форму. Овај облик ће имати акцију. И ово ће бити нешто да заменимо у касније, па ћемо видети како рутирање уклапа у ту. Али ми ћемо само да дефинишу за сада да ово иде на УРЛ са трасе из цреатеПост. А онда ово иде да имају метод пост. У оквиру овде, идемо да имају два поља. Див цласс = "форма-група". Користимо Бутстрап ЦСС библиотеку милостиво провидед би Твиттер. Тако ћемо створити два ова. Ово прво је улаз Биће наслов. Дакле инпут наме = "наслов". Цласс = "формцонтрол". Типе = "тект". Идем да додате чувар места = "титле". А онда друга је Биће текст област. Наме = "цонтент". Цласс = "формцонтрол". И чувар места = "Врите овде". Ево га. Коначно, идемо у адд брзо поднесе дугме. Типе = "субмит" цласс = "бтн бтн-примарни". Дакле, то су све карактеристике Боотстрап тако да се то може постављени на начин који је плен кориснику, уместо голог ХТМЛ. Тако смо дефинисан овде контролер. Ми смо дефинисали веома једноставан поглед. Али оно што недостаје је везивно ткиво. Дакле, у овом тренутку, Ларавел нема појма како идемо у ствари приступите овом контролер. Дакле, ово је дефинисана у фајл под роутес.пхп. И сада, имамо једну руту. Која је кад одемо у дом пут за овај сајт, то ће рендер индекс контролер. Па овде оно што нам треба урадити је имплементирати нови пут за нас да створи пост. Тако ми користимо ову методу гет, који прецизира да када корисник покуша да ово паге-- конкретно Пост сласх нови паге-- шта ћемо да радимо се користи контролер називом БлогЦонтроллер нови пост. Онај који смо управо створили. А онда идемо да га алиас као невПост. Идемо да створимо други Функција у мало. Али шта је овде под кључ "као" је шта можемо унутар заменити наши Бладе шаблони. Дакле, за сада, хајде заправо такође кажу пут. Тако смо и идемо створити контролер тако да можемо створити ове поруке. Дакле, ако корисник порука на странице пост сласх нова, шта ћемо да радимо је користи контролер који идемо да створимо ускоро звао БлогЦонтроллер на цреатеПост. И идемо у алиас ово са што цреатеПост. Цоол. Има ли питања? Цоол. Па хајде да оно што имамо до сада. Дакле, ако радимо пхп Артисан служе, видећемо много грешака. Па изгледа да имамо синтакса грешка на путевима Лине 27. Ах. Недостаје тачку и зарез. Дакле, ако идемо на 8.000, видећете ништа још овде. Дакле, ово је насловна страна подразумевани. Али ако одемо да поставите сласх нови, хеј. То ће бити у форми коју смо управо креирали. Управо сада, нисмо имплементиран функционалност од када притиснемо дугме Субмит. Дакле, ако смо кликните на Пошаљи дугме, то ће покренути грешку. Али ћемо код који сада, управо оно што смо Желим да радим када корисник подноси овај образац. Па хајде да урадимо то. Врати се у фајлу руковалаца. Шта ћемо да урадимо је имплементирати ову нову функцију који нам омогућава да креирате пост. Прогласи нову функцију. Публиц фунцтион цреатеПост. И ова функција ће бити мало софистициранији него шта смо раније имали. Али видећете овде да нисмо ће заправо писати било СКЛ. ОРМ, Елокуент ОРМ, ће дозволити да урадимо ово у неким начини више елегантан начин. Тако ћемо створити нови пост. И ту смо инстантиатинг нови објекат од модела које смо управо створено, после модела. А шта ћемо да урадимо је постављен наслов атрибут ове користећи нешто да добијамо са сервера. Дакле, ово је слично ономе што смо раније имали у ЦС50 финансија где бисмо урадили, користећи Супер Глобална порука тражи титулу. Дакле Ларавел пружа неке хигијенске услове и шта све не користи ову функцију помоћног. Тако да би радије користе ово уместо ове основном сировом облику из ПХП. И онда шта ћемо да урадимо је постављен Садржај томе да се садржај улаза. Ћемо заправо да заврши ово у користан функцији да ПХП обезбеђује зове нл2бр, која окреће нових линија, НБС, на брс, паузе, тако да можемо да имамо различити ставови у њој. И на крају шта ћемо да урадите је спаси овај пост. Тако зовемо функција саве на овом моделу. Идемо да спасе пост. И на крају шта ћемо да радимо се преусмерава корисника конкретно на рути која Идемо у створити убрзо, алијас од виевПост. И ми ћемо проћи у аргументима ид, као ид ове нове пост. Велики. Тако сада, ако смо заиста отићи и покрените ово. Идемо да додате нови пост. Рецимо ово је семинар 50. И кажу, сигурно. АДСЛ-. Шта год. Нека врста садржаја. И доставља га. А ми ћемо приметити да, хеј. руте није дефинисан. Али ако погледамо пхпМиАдмин и тражити ли је или није наш функције није урадио ништа. Погледајте Блог50 постова. Ми ћемо приметити да, хеј. У ствари, ми смо само створити тај блог пост са временске ознаке као што је наведено. Тако да сада идемо назад и правите ова друга функција у нашем контролер, конкретно виевПост контролер. Дакле јавна функција виевПост. Па овде шта ћемо да урадимо, уместо да имају празне заграде, ми ћемо желети да прође у личне карте Пост да смо стварања. И одавде шта ћемо да радимо заправо упит базу података за то. Дакле, ако смо ми пост, постоји функција зове Пронађи који нам омогућава да га упита по ИД. Конкретно, у ствари, идемо у користити алтернативну верзију овог називом Финд или Фаил, која нам омогућава да одустанем од ове функције, избацити изузетак Ако је ИД ми у пасс не постоји. А онда ћемо да урадимо нешто слично ономе што смо раније радили где смо поставили садржај ове странице да буде донио верзија нове погледом који ћемо створити, блог.виев. И ми ћемо да прође у то-- баш као у ЦС50 рендер фунцтион-- речник променљивих. Кључеве овог асоцијативно арраи постају варијабле у оквиру шаблона. Тако ћемо да радимо пост пост. Тако пролазе индиректно стативу да смо упит из базе података. . Сада шта ћемо урадите је створити овај став тако да можемо да видите Поста су блог који смо изградили. Тако ћемо створити фајл под виев.бладе.пхп. Тако унутар овог шаблона, шта ћемо да радимо се саставља једноставна страна која нам омогућава да прикажете садржај. Тако радимо секцију, то је пре садржаја. Стоп. А шта ћемо да уради у року овде је написати неки ХТМЛ за приказ ову страницу. Тако ћемо га завршити са фанци Нови ХТМЛ5 елемент зове Члан. И овде, идемо да имају главом где ћемо једноставно имати Х1, која укључује пост титулу. Дакле овде, ако погледамо ово двоструко коврџава браће нотација, то ће учинити суштински Пхп ецхо пост титулу. Дакле, то је корисно стенографија да Ларавел нас даје. Тако ћемо користити ово нотација уместо. И овде, идемо у исто одштампати садржај тога. И овде, идемо да радим пост садржаја. А доле на дну оно што ми урадити је створити подножје. А у подножју, идемо у Први екран када је то писао. Дакле, ово је оглашен у, створио у. И Ларавел користи стварно лепо Датум библиотека зове Царбон. Тако да можемо да урадимо нешто што се зове диффорХуманс, који сте раније видели. Када смо постед. то ће рећи, као, пре пет секунди. Дакле, ово је стварно лепо функционалност Ларавел. И на крају, идемо да затвори овај подножје. Тако да сада, ако се вратимо у Почетна страница идемо да не види ништа овде још јер нисмо кодиране почетне стране. Али ако одемо да поставите сласх један, идемо да видимо изузетак. Да ли неко зна зашто видимо изузетак? Шта ми фали? Нека идеја? Па шта смо урадили раније за нас уствари дефинисати како стигнемо до посебни контролори? СПЕАКЕР 1: траса? Ерик Оуианг: Да. Тако да и даље треба да дефинишу пут. Дакле да се вратимо овде да роутес.пхп. Приметићете да смо заправо није дефинисан како ћемо добити на овај контролер. Дакле, сада ћемо дефинисати овај пут. То је прилично једноставан, слично ономе што смо раније радили. Али шта ћемо приметити овде је да ћемо имати чувар места. Дакле, ако радимо роуте.гет коса црта пост ИД. Дакле ИД сада је шта ће се бити донет у контролер. Ово ће користити контролер који смо управо створено, БлогЦонтроллер на виевПост. И идемо у у супротном, ово као виевПост. Велики. Дакле, сада ћемо да створимо тим путем. Дакле, сада, ако смо овде го и освежите ову страницу, ми у ствари немамо нови блог пост. Дакле, ово је оно што смо раније створили. Врло једноставно страница, али приказује блог пост да смо управо створили. Цоол. А ако ми заправо иду кроз цео Процес израде новог блог пост, ћемо приметити да је све преусмерава правилно. Ако кажем, "Здраво. Ја сам Џонатан Тан. " Рећи: "Ово је мој блог пост." И доставља га, то ће створити овај нови блог пост са ИД 2, која корацима од онога што смо имали претходно и приказује га исправно. Страва. Има ли питања? Да? СПЕАКЕР 2: Да ли Ларавел ручицу Санитизатион и све за вас? Ерик Оуианг: Да. Дакле, када смо видели раније, када јесмо улаз дебелог дебелог добити, да санитатес сваку СКЛ ињекције и ситница да ми можда желети да обавља ако ми смо хакери на сајту. Дакле Ларавел рукује много од које иза сцене. Добро питање. Па хајде да погледамо на почетној страници. Дакле, ако смо први пут се вратимо на контролер за почетну страну, приметићете да њега не ради много овде. Приметићете да нисмо пролазећи у овом контролер ништа посебно корисно. То је само овај индекс фајл. Па хајде да прође у ово нешто корисно. И конкретно, ми смо ће проћи у порукама. И Ларавел нам омогућава да уради све пост, који ће нам омогућити да се све поруке. Сада, ако се вратимо у индек.пхп, видећете, хеј. Ништа још овде. Али оно што ми желимо да урадимо овде заправо поновити кроз, урадите фореацх петљу над постова који нам омогућава да одштампате на поруке. Дакле фореацх постове као порука, шта желимо да урадимо се одштампати садржај на блогу. Али једна ствар коју ћете приметити је да ми заправо написао највећи део тог кода већ, у виев.бладе.пхп. Па шта ћемо заправо урадите је користе леп корисне функције у Бладе и фактор овај заједнички код. Дакле идемо овде. Идемо да се овај садржај овде, а шта ћемо да радимо је креирате нову фасциклу. Хајде да то зовемо Партиалс. И овде, идемо да створи пост.бладе.пхп. Дакле овде, ми урачунати од начина на који желимо да приказују ове поруке. И овде шта ћемо урадити уместо заправо немају то ХТМЛ директно, ћемо користити ову директиву зове укључују блог.партиалс.пост. А шта ћемо да радимо овде је прошао у пост странице. Тако да сада, ако се вратимо овде, ми ћемо приметити да функционалност је и даље исто. Али сада имамо ово урачунати од кода, овај ХТМЛ. Тако можемо га користити у индексу. Дакле овде, ово је веома једноставан. Све што радимо је укључити блог.партиалс.пост и низ. И негде на пре, радимо Пост Пост. Тако да сада, ако се вратимо у насловна страна, видећемо да, хеј. Имамо списак свих Поста блог који смо раније имали. Ми можда желите да додате неки "ако" услови и "елсе" услови тако да ако немамо нешто на блогу, желимо да прикажете нешто корисно. Као, хеј. Има још нема садржаја на блогу. А ако ви стварно погледате дистрибуција код на ГитХуб, видећете пример како ми то радимо. Цоол. Има ли питања? Да. СПЕАКЕР 2: Ја само претпостављам фундаментално питање. Назад на траси. Ерик Оуианг: Да. Уколико погледамо рутама. СПЕАКЕР 2: Где се усес.блогцонтроллер на створи пост, Шта нам то директно на? Ерик Оуианг: Да. Да. СПЕАКЕР 2: Или шта је то-- Ерик Оуианг: Па, погледај, кажу на пример, ова траса овде. Први део је стварни УРЛ адреса које корисник ће ићи у. И овај низ овде, асоцијативна низ, дефинише како желимо да имамо Апликација чин као одговор на њу. Дакле користи је контролер, функција која смо Желим да позовем када корисник иде на овом УРЛ-у. Дакле виевПост овде био Функција коју смо унутра дефинисано од БлогЦонтроллер-- СПЕАКЕР 2: Видим. Ерик Оуианг: --со да смо може заправо донесе поглед, обавља неке прорачуне, интеракцију са базом података СКЛ. СПЕАКЕР 2: Ок. Ерик Оуианг: А онда друга дио, "као" алијас да користимо. Дакле, ако приметимо када смо створили форму, Приметићете да УРЛ :: роутецреатеПост. Тако да замењује у стварни УРЛ адреса тако да нисмо тешко кодирање њих у тако можемо промијенити Једном, кажу да смо хтели да промените име. Уместо пост сласх нова, желимо да урадимо као, п сласх нови само за чишћење до наших УРЛ адресе битне. Ми бисмо га променили на једном месту, а него у свим различитим фајловима. Цоол. То је добро. Тако да сада имамо јако Основна блог платформа. Вероватно Желимо да додамо и дугме тако да ми заправо може да створи нове постове. Дакле, ако погледамо на Лаиоут Мастер, имамо одељак под именом Главом Право да смо управо дефинисан горе на врху. Тако можемо додати дугмад на врх заглавља. Дакле, ако одемо у индек.бладе.пхп, заправо урадите је дефинисати шта се унутра одавде. Дакле, ово Главом Право секција, шта ћемо да радимо се додати у дугмету да иду у УРЛ адреса дефинисана Рута нови пост. Само да их обришете и да она лепа и све Бутстрап, идемо направити ово подразумевани дугме. Хајде само да га велики за забаву. И унутар њега, можемо да ставимо неки текст. Али шта Боотстрап обезбеђује је глипхицонс. Тако да постоји могућност додавања у томе лепо оловка да смо видели раније. Глипхицон. Глипхицон-оловка. Тако ће нам ово омогућити да стави у иконом уместо текста. Сада ако не зауставимо, ово ће дефинисати овај одељак. И, хеј. Имамо леп дугме да нас повезује директно додати блог пост страну. Тако имамо прилично једноставан блог. Можемо додати ствари у њој. Али оно што ми очекујемо генерално од блогова коментарише. Тако да је веома важно за нас да имамо, кажу, ако неко други у посети сајт и заиста воли стативу да они могу да се укључе у дискусију са другим људима који посећују страницу. Тако ћемо ићи и створи Нова таблица у бази података и нови модел тако да можемо дружити цомментс са порукама. Дакле први корак, као и прије, је да морамо да покренете миграцију. Дакле као пре, радимо пхп Артисан Миграте: направи. И ми ћемо да створимо једну звао цреате_цомментс_табле. Ово ће креирати фајл да има наш нови миграцију. И идемо у, као пре, дефинисати нову табелу. Дакле Шема :: створи сто позвао коментаре. Ова функција овде. И унутар ове табеле шта ћемо да урадимо је прво, као и до сада, доделити ИД. Корацима ИД. Идемо да омогући корисницима да се друже њихово име са посебним коментаром. Ми ћемо имати неки садржај који иде уз ову, садржај текста. И овде шта ћемо урадите је нешто другачија. Идемо да створимо цео број то се зове ПОСТ_ИД који ће означавати шта пост Посебно коментар иде уз. Поред тога, ми у ствари ће сет кључну страног ограничење за ово. Тако МиСКЛ ће спроводити то. Не покушавамо да доделити коментар број 5 то пост 5,000 ако нисмо имао 5.000 поруке на њему. Па шта радимо овде, радимо страног ПОСТ_ИД биће повезан са ИД поље са стола мјеста. И ми ћемо заправо нешто друго корисно, је онДелете. Дакле, ако смо избрисати неке пост из базе података, да желимо да пада брише за коментаре као добро. Јер то није од велике помоћи за нас да имамо коментаре о постова да не постоје. И на крају, као и до сада, ми смо ће поставити временске ознаке на ово. И као пре, идемо у има обрнути миграција бити испуштање цомментс сто. Тако да сада, ако се вратимо да овде, идемо за покретање ове миграције, занатску мигрирају. И сада се примењује ова Миграција да смо управо створили. Дакле, ако смо поглед на пхпМиАдмин, радимо, у ствари, сада имају цомментс сто да има структура које смо управо наведени. Дакле као пре, да смо ће створити нови модел до апстрактног СКЛ табеле да смо управо створили. Па хајде да Додај нову датотеку. Идемо да га назове цоммент.пхп. И ово је заправо ће бити прилично једноставан уз малу промену од чега смо раније имали. Дакле класа Коментар протеже Елокуент. А шта ћемо да урадите овде је дефинисати функција која је Однос са другим моделима. Тако ћемо имати функцију пост овде да враћа овај однос. Тако смо и прецизирао да ово припада пост, рекавши да постоји једна порука да је овај коментар припада. То заправо мора бити капитал П за модел. А сада само на другој флип страни, морамо да кажемо да, хеј. Поруке имате коментаре. Па шта ћемо да урадимо је дефинишу јавне функције коментаре. И овде се вратио ово има много коментар. Тако сада магично када имамо пост, можемо добити коментаре атрибута и то ће га населити са информације из базе података. Па хајде да ствари иду кроз и додати нову функцију у наш вид фајл тако да можемо обоје дисплеј и створити коментаре. Тако ћемо дефинисати нову секцију. Хајде да га одвоји са хоризонталним правило. Секција ид = "цомментс". Шта ћемо да радимо Овде је, као и раније, поновити кроз све коментаре. Па стварно како то радимо је, као што сам поменуо, прилично магично. Ми радимо коментирате. И онда можемо да урадимо ово за сваку петља над сваким коментара. А шта ћемо урадите је коментар див цласс, и идемо у ствари штампати овај коментар. Тако приказали да хеј, цоммент име-- особу који постед тхис цоммент-- каже Дот Дот Дот. Идемо у стави ово у блоку цитат, само да изгледа лепо. А онда коментарисати садржај блок цитат. И фореацх. Тако да сада ово ће петљу кроз све коментаре која је повезана са сваким од стубова и приказати сваки од тих коментара. Идем да додам још једну секцију доле овде, што нам омогућава да додате коментар. Тако х3 цласс. Пут наслов овде. Додај коментар. И ми ћемо да дефинишемо нову форму. Дакле као пре, да смо урадити форм ацтион. И овде, нова акција је да смо ће дефинисати нову контролер који омогућава нам да одговоримо на пост захтеви за креирање коментаре. Дакле УРЛ :: рута цреатеЦоммент. Идем да прође у параметру овде. ИД о пост који ми ствара коментар о. И онда поступак овог облик ће бити после. Сада ћемо додати у два поља, форма група. Ово ће бити улаз са наме "име" и цласс = "форму контролу", типе = "тект", а са плацехолдер = "Ваше име." Ти такође ћемо дефинисати друга форма поље, које ће бити текст површина као што смо раније имали. Као и до сада, то зову садржај. Цласс = "форма-контрола." Плацехолдер = "Врите овде." И само тако да смо може заправо поднијети, субмит врсту и цласс = "бтн бтн-примарни." Затворите форму. Затворите ову акцију. Тако сада, ако смо освежите ову страницу где имамо, рецимо, посебан пост. Морамо да поново сервер. ПХП Артисан служе. Ребоот ово. Морамо да дефинишемо пут. Али за сада, узмимо ово тако да се ми заправо да вам покажем шта страна изгледа, а затим ми заправо ћемо створити тим путем. Дакле, хеј. Имамо тај нови овде тако да можемо створити коментаре. Па хајде да дефинишемо ствари Функција у оквиру контролера тако да можемо додати коментаре. Вратимо. А у оквиру блогцонтроллер.пхп, шта ћемо да радимо се створи нову функцију зове стварају коментар. Публиц фунцтион цреатеЦоммент. Ово ће имати један параметар, ИД стубова да смо коментаришући. И као пре, да смо ће прво добити пост. Дакле пост, финдОрфаил ид. Након тога, идемо да створи нови коментар. Дакле цоммент = нев коментар. Цоммент наме = инпут :: добити име. Коментар садржај = исто нова линија у паузама од улаза :: добити садржај. И на крају, ми ћемо морати да повезују овај коментар са пост. Тако ћемо користити ова функција, коментари, који нам омогућава да сачувате ова веза. Тако да сада овај коментар ће имати аутоматски после ИД. Такође смо могли поставити ручно, али ово је више лако прочитати колико као функција иде. И после вршимо ово, оно што желимо да урадимо је преусмерава корисника ка рута одређено виевПост са низом са параметар пост ИД. И сад тако да се то заиста функције, морамо да дефинишемо тај пут. Роуте :: порука. А сада идемо у звати Пост сласх сласх ИД коментар. Арраи користи нову функцију да смо управо створили. БлогЦонтроллер. ЦреатеЦоммент као цреатеЦоммент. Велики. Тако сада надамо да ћемо освежите ову страницу и додајте у коментару, рецимо, Давид Малан. "Надам се ово ради." Пошаљи. Ми, у ствари, имају коментарисати овај блог пост. Цоол. Тако да сада имамо прилично функционалан блог пост. Само ћемо да додати пар твеакс тако да имамо неке корисније Информације о овим пословима. Дакле, ако се вратимо у предња страна, немамо смисла колико коментари су на сваком од ових порука. Па шта ћемо заправо догађа да урадите је, у нашем моделу, дефине помоћни функцију која омогућава да одредите број коментара да иду са посебним пост. Тако ћемо створити помагач функција. Јавна функција. ГетНумЦомментсСтр. Дакле стринг који одређује број коментара који иду уз то. А шта ћемо да урадимо је рећи да нум = ова коментари рачунају. Тако ћемо рачунати број коментара. А ако тај број износи 1, ми смо само да се врати 1 коментар. А онда иначе, желимо да се врати Спајање цилиндра и коментарима, тако добијамо плурализација исправна. Само се ово апостроф. Један коментар. А сада можемо користити ову функцију директно унутар нашег гледишта. Дакле, ако се вратимо у парцијалне порука да смо створили, Сада желимо да стварно приказати број коментара. Па шта можемо да урадимо је порука, користите ову функцију да смо управо створили да приказати број коментара. Дакле, ако смо сада рефресх, ит ради, у ствари, дисплаи коментари број да иду заједно са њим. Ако бисмо хтели да будемо фенси ако вас добро погледа код дистрибутивног, ми заправо можемо повезати ово коментарима. Ако се сећате, ми дефинисана у оквиру видите да овај има одељак ИД коментаре. Дакле, ако смо стварно хтели да повежу директно на део коментара, шта ми би овде радимо је хреф УРЛ Рута виевПост. Пролазе у низу ИД за пост ИД. А онда желимо да идемо у конкретно секција коментари. Ево хајде да затворите ознаку. Тако сада, ако смо освежили ово страна, кликнемо на ово. Ми ћемо ићи директно на коментари секција. Ако смо имали дужи пост, можете заправо видите ову боунце доле. Али ви ћете приметити да је не на врху странице. Цоол. Велики. Дакле, то је прилично једноставан Пример нечим једноставним да можете да урадите са Ларавел. Али можете приметити овде да урадили смо много тога са прилично малом количином кода. Ларавел нам омогућава да радимо СКЛ упита иза сцене. То чини санитације за нас иза сцене. Омогућава нам да радимо те односе Веома лако без нас потребе направити никакву СКЛ јоин изјаве комбинују коментаре са оним што је порука. Омогућава нам да се то уради наслеђивање шаблона тако да можемо да дефинишемо ове гнезди датотеке па нисмо сами понављају, баш као кад смо имали да приказ на блогу да ми не морамо да копирај код. И одавде можете изградити све компликоване апликације. Можете замислити да смо желео да спроведе лог-у, могли бисмо рећи, довести у трећем лицу оквир који нам омогућава да урадимо то. Постоји гомила њих да су стварно, стварно велика да може да уради као, пассворд рецовери. И то ће вам послати а ресет пассворд емаил. Ми можемо имплементирати дозволу тако да могу створити пост, али неко други не може да га мења. Ми можемо имплементирати функционалност за брисање поруке. Али можете овде видети да смо прилично имамо много све рудиментарни компоненте да се изгради неки стварно, стварно, динамични и узбудљиве веб апликације. Имајући то, мислим да смо добри. Да ви имате било каквих питања? Да? СПЕАКЕР 3: Како ти се гет статички садржај? Ерик Оуианг: Статични Садржај. Дакле, видели сте пре тога, када смо имали ово овде, овај садржај распоред, Поглед марка, имали смо ово без овог низа после тога. Блог.индек, имали смо ово као само статичког фајла. Дакле, ако ми не прође нешто заједно на њега, само ће донети ХТМЛ директно. Али ако прођемо у овом асоцијативно низ порука, која је динамички извукао из базе података, ми може учинити страна динамичан. Цоол. Има ли још питања? СПЕАКЕР 3: Како би упоредили Ларавел да можда неким другим опцијама? Ерик Оуианг: Наравно. Да. Тако Ларавел је-- то је велики куестион-- једна од многих опција за веб оквирима. Тако Руби он Раилс је онај који је популаран. Верујем Твиттер некада реализује уз Руби он Раилс. Мислим да су од укључен. Постоји још једна зове ФуелПХП. Тако Руби он Раилс користи Руби језик и спроводи доста о МВЦ ствари да видимо овде. ФуелПХП је још један ПХП оквир. Дјанго је један од мојих омиљених. То је веб оквир за Питхон. Тако да можете писати свој веб апликацију у Питхон. Тако да тона ових опција. Ларавел, мислим, по и Велики је мој омиљени праву Сада за ПХП, само зато компоненте да смо раније разговарали. То је Композитор омогућен. То укључује стварно, стварно изражајно ОРМ систем. Такође има стварно страшан Темплатинг језик да неке од осталих Једноставно не пружају. И миграције. Миграције су страшан као добро. Цоол? Страва. Па, хвала пуно за ватцхинг овај семинар, и срецно ти било коначних пројектима.