[MUSIC PLAYING] ERIC Ouyang: Hey, hər kəs. Xoş gəlmisiniz. Bu Building Dynamic edir Web Laravel ilə Apps. My name Eric Ouyang edir. Mən sosial tədqiqatlar oxuyan sophomore am kompüter orta ilə, və mən Adams yaşayır Burada Harvard House. Belə ki, Laravel, onun ən əsas, Bir MVC web app çərçivəsində edir. Belə ki, uşaqlar nə kimi CS50 Maliyyə aparır, Laravel imkan verir ki, bir çərçivə dinamik web apps yaratmaq üçün. Belə ki, bəzi mənasında hesab edə bilər məhsulları növü davamı olaraq Siz CS50 bunu etdik Maliyyə, lakin bir sistem daha çox möhkəm, çox bəzi hissləri daha zərif, və bir çox təmin edir sizin üçün işlevsellik kifayət qədər mürəkkəb qurmaq web applications. Belə ki, bəzi vasitəsilə gedək əsas xüsusiyyətləri, sonra biz bir daxil dalış lazımdır Bir blog tikinti nümunə Laravel ilə tətbiqi. Ilk şey biri Belə ki, iş MVC növü onu fərqləndirir Siz CS50 ilə bunu etdik ki, bir ORM mühərrik daxildir. Belə ki, ORM obyekt üçün dayanır relational mapping. Belə ki, bu qurmağa imkan verir abstraksiya bir qat verilənlər bazası arasında və nəzarətçiləri. CS50 Maliyyə olduğu Belə ki, fərqli birbaşa, sorğu etmək ORM qat imkan verir mücərrəd üz yaratmaq daha güclü olan modellər SQL sorğu ilə birbaşa bilərsiniz. Həqiqətən başqa bir şey faydalı devralınabilen şablonları var. Belə ki, CS50 Maliyyə görəcəksiniz, Siz çox şey yeniden başa, hara potensial bilər Siz edə deyilik, hər şeyi təkrar. Belə ki, burada Laravel, siz nə istifadə edə bilərsiniz blade şablon mühərrik kimi tanınan bir master layout yaratmaq. Və orada, siz varis olar belə ki, sub-şablonları həqiqətən bilər çərçivəsində elementləri daxildir böyük baza şablon edir. Miqrasiya. Belə ki, bu barədə kifayət qədər standart xüsusiyyətləri ən müasir web proqram çərçivəsində. Belə ki, bu təmsil etmək üçün imkan verir kodu verilənlər bazası şeması dəyişikliklər. Belə ki, demək olacaq olmadan, phpMyAdmin, Siz, həqiqətən, bu miqrasiyanın yarada Siz bazası təmsil harada şeması birbaşa kodu dəyişir. Bu xüsusilə to-- verir Siz iş bir çox insanlar varsa Eyni web application-- haqqında bu dəyişiklikləri izləmək, GitHub, və ya digər deposu deyirlər. Belə ki, bu həqiqətən faydalıdır və ehtiyac azaldır demək,, SQL zibilliklərin bir çox ətrafında keçir. Və nəhayət, Bəstəkar deyil həqiqətən, həqiqətən faydalı bir şey ki, digər istifadə etməyə imkan verir Xalq kodu zəhmli şeyə. Belə ki, Laravel kimi strukturlaşdırılmış bir neçə bəstəkar paketləri. Belə ki, gətirmək istəyirdi demək bir identifikasiyası paketi və ya bəzi gətirmək istəyirdi generator script və ya bir admin sort interface, plug və oynaya bilər Bəstəkar olanlar komponentləri. Belə ki, in başlamaq bildirin. Siz hər hansı bir sual biz əvvəl uşaqlar başlamaq? No suallar? Cool. Belə ki, ilk addımdır Composer quraşdırma. Belə ki, Bəstəkar imkan verir Bu bağımlılıkları idarə, Bu Laravel çərçivəsində olub və ya digər üçüncü tərəf uzadılması. İlk komanda imkan verir Siz Bəstəkar download ikinci komanda imkan verir Yerli bin qovluq hərəkət belə ki, Bəstəkar çalıştırabilirsiniz ki, birbaşa terminal vasitəsilə. Bundan sonra, irəli getmək və Yeni Laravel layihə yaratmaq. Biz, həqiqətən, olacaq bir misal kodu istifadə Mən birlikdə qoymaq etdik ki, Bu blog yaratmaq. Amma başlayaraq edirsinizsə danışıq, siz bu funksiyanı istifadə edir burada, bəstəkar yaratmaq layihə, laravel sonra laravel doğramaq, və Sizin layihənin adı. Və daxil olacaq bütün distribution kodu Yeni Laravel layihə başlamaq üçün. Sizin CS50 son layihələr Belə ki, will yəqin ki, funksiyanı istifadə etmək istəyirik. Amma biz bu başlamaq olacaq. Belə ki, həyata sonra , siz almaq olacaq ki, kifayət qədər geniş sayı blog50 faylları. Belə ki, yalnız ilə gedək Bu komponentlərin bəzi. Bu marşrutu görəcəksiniz directory bir app qovluq var. App qovluq içərisində var bir neçə faydalı qovluq. Başlamaq üçün qeyd Bu config qovluq. Belə ki, bu qədər necə edir web proqram demək, insanlar kimlik gedən və ya pul hər şeyi və ya verilənlər bazası qoşulmaq. Və nə həqiqətən var faydalı ki, Laravel Siz müxtəlif qurmaq üçün imkan verir inkişaf mühit. Belə ki, nə biz burada etdik əgər biz yerli qovluq altında getmək, bir database.php fayl var. Və burada görəcəksiniz ki, MySQL bağlantısı qurmaq fiziki qoşulmaq üçün imkan verir ki, MySQL server Birbaşa CS50 cihaz. Və biz bir verilənlər bazası birləşdirən edirik Mən müəyyən Blog50 çağırıb. Belə ki, həqiqətən irəli gedək və Bu iş versiyası run yalnız nə bir mənada almaq üçün biz tikinti etdiyiniz proqram kimi görünür. Beləliklə, mən bir surəti Bu Blog50 tamamladı. Belə ki, Laravel həqiqətən bir server inşa etmişdir birbaşa çalıştırabilirsiniz ki, skript satırı. Belə ki, bu benzer PSet zaman həqiqətən əvvəl C. öz server qurmaq Belə ki, onlar belə bir tikilib Siz Laravel apps çalıştırabilirsiniz ki, Birbaşa skript satırı. Biz php sənətkar əgər Belə ki, bu xidmət inkişaf server başlayacaq port 8000-də. Biz yerli ana getmək əgər Belə ki, 8000, hey, görəcəksiniz. Biz blog və çalışan var. Belə ki, Laravel burada yaradan edir bizim blog ön page. Çox sadə tətbiqi. Amma bir neçə var həqiqətən uykusuz xüsusiyyətləri Bu başlıq altında verir ki. Belə ki, blog proqram üzrə sadə. Biz bir post yaratmaq istəyirdi, ki, 'düyməsinə vurun. Biz, "Hey, hər kəs demək olar. Bu, həqiqətən fun Məsələn seminar ". Və aşağı burada bir şey yazın. Burada Text. Biz təqdim basın, siz lazımdır qeyd edir ki, yeni blog post əlavə edilmişdir blog Ön səhifə. Biz burada geri getmək varsa, siz görəcəksiniz Artıq bir şərh var blog. Biz aşağı diyirləyin varsa, siz lazımdır, belə ki, Jonathan Tan deyir ki, qeyd O, çox bu vəzifədə ilə intrigued edilib. Belə ki, biz necə obyekt daxil olacaq relational mapping imkan verir Siz bu əlaqələri etmək eləcə də kifayət qədər sorunsuz yol. Cool. Funksiyaları haqqında hər hansı bir sualınız biz qurmaq olacaq nə? Cool. Belə nin əslində ilə başlamaq edək verilənlər bazası masaları yaradılması. Belə ki, CS50 Maliyyə sizi Xatırladaq ki istifadəçilər üçün masa birlikdə qoymaq eləcə də Sizin portfeli ehtiyatları. Daha əvvəl qeyd etdiyimiz kimi, belə ki, biz Laravel istifadə miqrasiya kimi tanınan bir şeydir. Biz geri getmək əgər Belə ki, Burada distribution kodu, ilk komanda Laravel təmin edir ki, faydalı Bu miqrasiya əmr edir. Beləliklə, biz php sənətkar keçirərkən edə bilərsiniz: olun. Belə ki, bu, bizə bir miqrasiya yaratmaq imkan verir. Və sonra biz lazımdır Bir miqrasiya yaratmaq , create_posts_table adlı olan gedir olmaq biz olacaq Bizim blog saxlanılması ola bilər. Və o çalışır ki, burada görəcəksiniz Bəzi kod vasitəsilə əslində bir fayl yaradır bu bir vaxt möhürü. , Biz getmək və Database baxmaq əgər Belə ki, biz Miqrasiya sahəsində altında görəcəksiniz Bu yaradılmış oldu ki, bizim üçün boş fayl olan adı ilə boilerplate kodu var biz müəyyən ki, ismarıc masa yaratmaq. Və bu iki funksiyaları vardır. Up biz zaman almaq istəyirsinizsə nə miqrasiya verilənlər bazası tətbiq edilir. Və aşağı biz nə olacaq nə bir köç tərsinə istədiyiniz zaman. Belə ki, burada həyata başlamaq edək Bu miqrasiya yazı ilə. Belə ki, yararlı bir sinif var Laravel da Şema çağırıb. Beləliklə, biz Şema :: yaratmaq çalıştırmak olacaq. Və biz yaratmaq olacaq Bir masa ismarışları çağırıb. Burada biz bir funksiyası istifadə edərək, bu tətbiq edilir. Və burada ərzində biz, həqiqətən olacaq Bizim masa məzmunu müəyyən edir. Biz ID yaratmaq olacaq, olan avtomatik incrementing edir. Bundan əlavə, biz gedirik bir sahə yaratmaq üçün Bizim blog adı təmsil edir. Biz də bir sahə yaratmaq olacaq Bizim blog mətn saxlanılması üçün. Və, nəhayət, biz gedirik Bəzi damgaları saxlamaq üçün Bizim post yaradılmışdır zaman üçün və yeniləndi zaman. Və aşağı üçün, kifayət qədər sadə. Biz nə istəyirik Bütün damla Biz yaratdıq masa. Böyük. Hər hansı bir sualınız? Belə ki, indi biz irəliyə getmək əgər and-- həqiqətən, yerli host, Mənə biz əvvəllər nə silmək imkan verir. Verilənlər bazası gedin. Düşünürəm ki, biz əvvəllər nə silmək üçün gedirəm. Bu Drop və yaratmaq Yeni verilənlər bazası Blog50. Belə ki, indi nə sehrli hissəsi ki, biz birbaşa miqrasiya müraciət edə bilər command line istifadə edərək verilənlər bazası vasitədir. Beləliklə, biz php sənətkar keçirərkən əgər, Siz hey, görəcəksiniz. Bu miqrasiya masa yaradılmış oldu, biz bir az nəzər almaq lazımdır, və bu ilk miqrasiya tətbiq edir. Biz Blog50 baxmaq, belə ki, görəcəksiniz ki, bu, bizim üçün iki masalar yaradılmış oldu. Birinci bu miqrasiya masa. Biz bu göz Belə ki, siz görəcəksiniz Bu cədvəli kifayət qədər sadə deyil. Bu, sadəcə hey, ki, deyilir. Biz bu miqrasiya müraciət etdik. Biz geri getmək və vəzifələrdə oldu. Siz quruluşu görəcəksiniz biz bunu xahiş etmişdi məhz budur. Biz avtomatik incrementing ID. Biz saxlanılması üçün bir simli var adı və mətn sahəsində məzmun saxlanılması üçün. Böyük. Cool. Miqrasiya haqqında hər hansı bir sualınız iş, biz onlara necə müraciət edə bilər? No? Cool. Belə ki, indi biz irəliyə getmək olacaq və həqiqətən model yaratmaq. Beləliklə, biz bir ismarıc model yaratmaq istəyirəm ki, verilənlər bazası bir abstraksiya saklar. Belə ki, daha MySQL sorğu bunu çox birbaşa yaratmaq olacaq. Beləliklə, biz bir yaratmaq lazımdır Burada deyilən modelləri qovluq. Və burada daxili, biz olacaq Post.php adlı bir fayl yaradın. Bu PHP fayl daxilində, yaratmaq olacaq fəsahətli uzanan bir sinif post. Fəsahətli ORM adı Laravel təmin engine. Və burada, biz gözləyə bilər Siz, həqiqətən, bir kod yazmaq lazımdır. Biz bəzi yazmaq olacaq sonra köməkçi funksiyaları. Qutusu Amma bu artıq olacaq bazasında nə tanımaq və biz, demək, mətn əldə edə bilərsiniz Bizim blog və ya adı, və birbaşa məhsulları yaratmaq heç olduqca çox heç kodu. Belə ki, sehrli komponentləri biridir. Bu sinif dəfə külək daha tam hüquqlu ki, biz haqqında məlumat daxil olacaq nə Bu şərh, belə ki, bağlı oldu. Həmçinin bir funksiyası yaratmaq belə ki, biz, həqiqətən, bilərsiniz birbaşa URL almaq bir blog post səhifə. Cool. Bu barədə hər hansı bir sualınız? No. Cool. Belə ki, indi biz model bir dəfə, biz bir nəzarətçi yaratmaq istəyirik Bu modellər ilə interface edə, və sonradan bazası. Biz bir göz at əgər Belə ki, BlogController, will yoxdur ki, qeyd İndi burada çox. Var olan bütün bir index funksiyası ki, ana səhifə yaradır, lakin bir şey olmadan hələ keçirmək üçün. Ilk funksiyası, belə ki, yaratmaq olacaq ki, bizə imkan verir bir Bir blog yaratmaq. Beləliklə, biz bir elan olacaq Newpost adlı yeni funksiya. Və burada sadəcə daxili, gedirik bu səhifənin susmaya təyin etmək bir versiyası göstərmək olmaq, Siz CS50 geri əgər, blog.new adlanan bu şablon, hansı Biz bir az yaratmaq olacaq. Siz line altı burada görəcəksiniz ki, Biz layout bu dəyişən ifadə edildi. Və biz bir nəzər əgər Baxılıb qovluq, bir Düzenler qovluq, var olan bir çox əsas HTML fayl daxildir. Və qeyd, siz görəcəksiniz bu konteyner var ki, Burada məzmun verir ki,. Bizim şablon daxilində Belə ki, biz nə olacaq olacaq nə yaratmaq Bu layout ərzində birbaşa əvəz. Belə ki, biz göstərmək istədiklərini ifadə etdi Şablon blog.new çağırıb. Amma Blog daxilində var hələ bu yeni şablon. Beləliklə, biz bir yaratmaq olacaq Fayl new.blade.php çağırıb. Bu Laravel deyir ki, Bu PHP fayl olmalıdır ilə göstəriləcək blade şablon engine. Belə ki, bu kifayət qədər deyil sadə fayl. Bu formu olacaq Biz, həqiqətən, bir blog əlavə edin. Burada sehrli Belə ki, miras hey, edir. Biz ki, ifadə etmək istəyirəm ikibölməli, content bölmə Burada olan məhdudlaşır section vəstop ilə. Belə ki, nə arasında burada var gedir master susmaya daxil əvəz. Və burada biz nə etmək istəyirəm nə Çox sadəcə bir yeni HTML faylı yaradın. Yalnız tez adı əlavə edək. Bir blog əlavə edin. Və ərzində biz istəyirik bir forma yaratmaq olacaq. Bu forma fəaliyyət üçün gedir. Bu bir şey olacaq Biz sonra əvəz ki, və biz necə görürsünüz marşrutlaşdırma burada uyğun. Amma biz yalnız indi üçün müəyyən olacaq Bu marşrutu ilə URL gedir createPost edir. Və sonra bu davam edir üsul post var. Burada ərzində biz gedirik iki sahələri var. Div class = "form-group". Biz Bootstrap CSS kitabxana istifadə etdiyiniz graciously Twitter tərəfindən təmin. Beləliklə, biz bu iki yaratmaq olacaq. Belə ki, bu ilk giriş gedir adı olmalıdır. Belə ki, daxil name = "title". Class = "formcontrol". Type = "text". Mən tutucu = "Title" əlavə etmək üçün gedirəm. Və sonra ikinci bir Mətn sahəsi olacaq. = "Məzmun" adlandırırlar. Class = "formcontrol". Və tutucu = "Burada yazın". Biz də gedin. Nəhayət, biz olacaq tez submit 'düyməsinə əlavə edin. Type = "submit" class = "btn btn-əsas". Belə ki, bu bütün var Bootstrap xüsusiyyətləri belə Bu qoyula bilər ki, ki, bir şəkildə istifadəçi yırtıcı, daha çılpaq HTML-dən. Beləliklə, biz burada nəzarətçi müəyyən etdik. Çox sadə görünüşü müəyyən etdik. Amma nə əskik deyil birləşdirici toxuma. Bu nöqtədə, belə ki, Laravel necə heç bir fikir var Biz, həqiqətən, olacaq Bu nəzarətçi daxil. Belə ki, bu müəyyən edilir Fayl routes.php çağırıb. Və indi, biz bir marşrut var. Biz getmək zaman Bu veb ev yol, Bu göstərməyə olacaq index nəzarətçi. Belə ki, burada biz həyata nə lazımdır nə bizim üçün yeni bir marşrut bir post yaratmaq. Beləliklə, biz bu metodu istifadə ifadə edən almaq bir istifadəçi üçün çalışır ki Bu xüsusi səhifə və almaq post yeni səhifə və doğramaq biz nə olacaq adlı nəzarətçi istifadə olunur BlogController yeni post. biz yalnız yaradılmış bir. Və sonra biz gedirik Newpost kimi alias. Biz başqa yaratmaq olacaq bir az fəaliyyət göstərir. Amma bura nə "kimi" düyməsini nədir biz ərzində əvəz edə bilər Bizim Blade şablonları. Beləliklə, edək həqiqətən də marşrut deyirlər. Belə ki, biz də olacaq Bir nəzarətçi yaratmaq ki, biz bu mesajları yarada bilərsiniz. Belə ki, səhifə ismarıca istifadəçi ismarışları Biz nə olacaq nə, yeni zərbə bir nəzarətçi istifadə edir ki, biz qısa yaratmaq olacaq createPost da BlogController çağırıb. Və biz alias olacaq createPost kimi bu. Cool. Hər hansı bir sualınız? Cool. Belə ki, biz bu günə qədər nə run bildirin. Biz php sənətkar əgər Belə ki, xidmət biz səhvlər çox görəcəksiniz. Biz var kimi Belə ki, görünür marşrutlar üzrə syntax error 27 girdi. Ah. Nöqtəli vergül itkin. Belə ki, biz 8000 getmək əgər, Burada hələ heç bir şey görəcəksiniz. Belə ki, bu u mənim ana səhifə. Biz göndərmək getmək əgər Amma hey, yeni doğramaq. Biz yalnız yaradılmış şəklində olacaq. Hal-hazırda, biz var funksionallığı həyata Biz basın zaman düyməsini göndərin. Biz basın Belə ki təqdim düyməsini bir səhv çalıştırmak olacaq. Amma biz kodu olacaq ki, İndi, dəqiq nə biz bir istifadəçi etmək istəyirəm Bu formu təqdim edir. Belə ki, bunu edək. Geri nəzarətçiləri fayl gedin. Biz nə olacaq edir Bu yeni funksiyanı yerinə yetirir bizə bir post yaratmaq imkan verir. Yeni funksiya bəyan edir. İctimai funksiyası createPost. Bu funksiya olacaq daha mürəkkəb az nə biz əvvəl idi. Amma biz deyilik ki, burada görə bilərsiniz həqiqətən hər hansı bir SQL yazmaq olacaq. ORM, fəsahətli ORM, imkan gedir Bizə bəzi bunu yolları bir daha zərif yolu. Beləliklə, biz yeni bir yazı yaratmaq olacaq. Və burada edirik Yeni obyekt instantiating model ki, biz yalnız yaradılmış, post model. Və biz nə olacaq müəyyən edilir bu istifadə bir şey adı atributu Biz server almaq. Belə ki, bu oxşar nə biz CS50 Maliyyə əvvəl Biz nə olardı, Super istifadə Global Post adı axtarır. Belə ki, Laravel bəzi sanitariya təmin edir və etajer bu köməkçi funksiyası istifadə. Beləliklə, biz bu əvəzinə istifadə tercih PHP bu çox əsas xammal şəklində. Və sonra biz nə olacaq müəyyən edilir Input bu məzmunu content almaq. Biz, həqiqətən, paketi olacaq faydalı funksiyası bu ki, PHP nl2br adlı təmin edən , yeni xətlər, nls, BRS daxil fasilələri çevrilir biz, həqiqətən, ola bilər ki, ərzində müxtəlif ci maddələrdə. Və nəhayət biz olacaq nə etmək üçün bu post xilas edir. Belə ki, biz funksiyası zəng Bu model edin. Biz post saxlamaq olacaq. Və biz nə olacaq nəhayət nə xüsusi istifadəçi yönlendirme edilir biz gedirik marşrutu viewPost tərəfindən qısa alias yaradır. Biz dəlilləri keçmək olacaq id, bu yeni post id olan. Böyük. Belə ki, indi biz, həqiqətən, getmək və bu run əgər. Biz yeni yazı əlavə olacaq. Bu seminar 50 deyirlər. Və əmin, deyirlər. Asdl. Nə olursa olsun. Məzmun bir növ. Və göndərin. Və biz görəcəksiniz, hey. marşrutları müəyyən deyil. Amma biz phpMyAdmin nəzər əgər və ya bizim funksiyası axtarmaq bir şey idi. Blog50 ismarıc baxın. Biz hey, görəcəksiniz. Əslində, biz yalnız blog yaratmaq idi müəyyən edilmiş zaman damgaları ilə göndərin. Belə ki, indi geri getmək və həqiqətən yaratmaq imkan Bizim nəzarətçi bu digər funksiyası, xüsusi viewPost nəzarətçi. Belə ki, ictimai funksiyası viewPost. Belə ki, burada biz nə edəcəyik əvəzinə boş parantez olan, Biz ID keçmək lazımdır biz yaratmaq edirik post. Və burada nə biz nə olacaq həqiqətən üçün verilənlər bazası sorğu edir. Beləliklə, biz göndərmək əgər, adlı bir funksiyası var Bizə ID ilə sorğu imkan verir tapın. Xüsusilə, həqiqətən, biz olacaq adlanan bu bir alternativ versiyasını istifadə Bizə imkan verir tapmaq və ya Fail, Bu funksiya həyata çıxmaq, ID əgər istisna atmaq biz yox keçir. Və sonra biz bir şey olacaq Biz əvvəllər nə oxşar biz content müəyyən bu səhifənin olmaq Bu yeni görünüşü göstərilən versiyası Biz blog.view yaratmaq olacaq olan. Və biz keçir olacaq it-- yalnız göstərmək CS50 kimi dəyişənlərin bir lüğət funksiyası. bu assosiativ array düymələri şablon ərzində dəyişənlərin olur. Beləliklə, biz post post olacaq. Belə ki, dolayısı ilə post keçmək biz verilənlər bazası sorğulanan etdik. . İndi biz nə olacaq nə bu görünüşü yaratmaq Biz, həqiqətən, bilərsiniz, belə ki, inşa etdik blog. Beləliklə, biz bir yaratmaq olacaq Fayl view.blade.php çağırıb. Belə ki, bu şablon daxilində, biz nə olacaq bir sadə səhifə birlikdə qoyulur ki, Bizə məzmun keçirmək üçün imkan verir. Biz bölmə Belə ki, məzmun əvvəl var. Stop. Və biz nə olacaq Burada ərzində etmək Bu səhifəni keçirmək üçün bir HTML yazın. Beləliklə, biz bir xülya ilə kesmek olacaq Yeni HTML5 element-ci maddə çağırıb. Və burada, biz gedirik bir mövzu olduğu üçün biz sadəcə bir h1 olacaq, olan post adı daxildir. Odur ki, biz bu baxsaq ikiqat buruq brace notation, Bu mahiyyətcə edəcəyik PHP post adı əks-səda. Belə ki, bir faydalı stenoqrafiya var Laravel bizi təmin edir. Beləliklə, biz istifadə etmək olacaq əvəzinə bu notation. Və burada, biz də olacaq Bunun məzmunu çap. Və burada, biz gedirik poçt məzmun yoxdur. Və biz olduğunuz alt aşağı edəcəyimiz bir footer yaratmaq edir. Və footer, biz olacaq Bu dərc edilib ilk ekran. Belə ki, bu, da dərc yaradılmışdır. Və Laravel həqiqətən gözəl edir tarix kitabxana Karbon çağırıb. Belə ki, biz, həqiqətən, deyilən bir şey edə bilərsiniz Siz əvvəllər gördüm difforHumans. Biz olunub zaman. Bu, demək lazımdır kimi, beş saniyə əvvəl. Belə ki, bu, həqiqətən, gözəl Laravel funksionallığı. Və, nəhayət, biz gedirik Bu footer yaxın. Belə ki, indi biz geri getmək əgər Əsas səhifə gedirik Burada hələ, çünki heç bir şey görmək biz ev page kodlu deyil. Amma biz çizgi bir göndərmək üçün getmək əgər, bir istisna görmək olacaq. Hər kəs niyə bilir bir istisna görmək? Biz nə eksik? Hər hansı bir fikir? Belə ki, biz nə əvvəllər bizim üçün həqiqətən biz almaq necə müəyyən etmək xüsusi nəzarətçiləri? HOPARLÖR 1: marşrutu? ERIC Ouyang: Bəli. Belə ki, biz hələ marşrutu müəyyən etmək lazımdır. Beləliklə, biz routes.php geri getmək burada. Siz biz görəcəksiniz həqiqətən müəyyən deyil necə almaq olacaq Bu nəzarətçi. Belə ki, indi biz bu marşrut müəyyən olacaq. Bu, kifayət qədər sadə deyil Biz əvvəllər nə oxşar. Amma biz burada qeyd etmək olacaq nə bir tutucu var olacaq ki,. Biz route.get çizgi post ID Belə ki. Belə ki, ID, indi neler edir nəzarətçi qəbul. Bu istifadə etmək niyyətindədir nəzarətçi ki, biz yalnız yaradılmış, viewPost da BlogController. Və biz olacaq viewPost kimi bu bu. Böyük. Belə ki, indi biz bu marşrut yaratmaq olacaq. Belə ki, indi biz burada getmək əgər və bu səhifəni yenileyin, əslində biz yeni blog var. Belə ki, bu biz əvvəllər yaratdığı budur. Çox sadə səhifə, lakin göstərir biz yalnız yaradılmış blog post. Cool. Və biz, həqiqətən, bütün vasitəsilə getmək əgər Yeni blog yaradılması prosesi, Biz hər şeyi görəcəksiniz Düzgün yönləndirən. Mən demək olarsa, "Salam. Mən Jonathan Tan deyiləm. " "Bu mənim blog post edir. De:" Və təqdim, bu yaradacaq ID 2 yeni blog post, Biz nə hansı əlavələr əvvəl və düzgün göstərir ki,. Awesome. Hər hansı bir sualınız? Bəli? HOPARLÖR 2: Laravel qolu mu sanitization və sizin üçün hər şey? ERIC Ouyang: Bəli. Beləliklə, biz əvvəllər zaman görəndə Biz giriş colon colon almaq idi hər hansı bir SQL sanitates iğnesi və etajer Biz əgər yerinə yetirmək üçün istəyirəm bilər ki, Biz haqqinda pis niyetli bir istifadəçi istəyirik. Belə ki, Laravel çox emal pərdə arxasında ki. Yaxşı sual. Belə ki, ana səhifə nəzər salaq. Biz ilk geri getmək əgər Belə ki, üçün ana səhifədən nəzarətçi, Siz onu görəcəksiniz çox burada deyil. Siz biz deyilik ki, görəcəksiniz Bu nəzarətçi keçən bir şey xüsusilə faydalı. Bu, sadəcə bu göstərici fayl var. Belə ki, daxil süzmək faydalı bir şey. Və konkret desək, biz istəyirik ismarışları keçmək olacaq. Və Laravel bizə imkan verir bütün post nə üçün Bizə bütün ismarıclarını almaq üçün imkan verir. İndi biz geri getmək əgər index.php, hey, görəcəksiniz. Heç bir şey burada hələ. Amma biz istədiyiniz nə burada nə həqiqətən vasitəsilə təkrarlamaq ki, ismarışları bir foreach loop ki, Bizə ismarışları çap etməyə imkan verir. Belə ki, foreach ismarıc biz nə etmək istədiklərini post, məzmun çap olunur blog. Amma görəcəksiniz bir şey ki, biz həqiqətən ki kodu ən yazdı artıq view.blade.php edir. Belə ki, biz, həqiqətən, nə olacaq nə Blade gözəl faydalı sistemini istifadə və bu ümumi kodunu amil. Beləliklə, biz burada. Biz bu content almaq olacaq burada, biz nə olacaq nə yeni bir qovluq yaratmaq edir. Yalnız partials zəng edək. Və burada, biz gedirik bir post.blade.php yaratmaq. Belə ki, burada, biz yol factored biz bu mesajları keçirmək istəyirəm. Və burada biz əvəzinə nə edəcəyik həqiqətən birbaşa HTML olan, bu direktiv istifadə etmək olacaq adlı blog.partials.post daxildir. Və biz burada nə olacaq nə Səhifənin vəzifəsinə qəbul edilir. Belə ki, indi biz burada geri getmək əgər, biz lazımdır funksionallığı hələ ki, qeyd eyni. Amma indi biz bu var Bu HTML kodunu factored. Beləliklə, biz Index istifadə edə bilərsiniz. Belə ki, burada, bu çox sadə deyil. Biz bütün daxildir blog.partials.post və array. Və haradasa əvvəl, biz post post yoxdur. Belə ki, indi biz geri getmək əgər ana səhifə, biz hey, görəcəksiniz. Biz bütün bir siyahısı var biz əvvəl idi blog. Biz bəzi "əgər" əlavə edə bilərsiniz şərtləri və "başqa" şərtləri belə ki, biz yoxsa ki, blog bir şey, biz faydalı bir şey göstərmək istəyirəm. Hey, kimi. Blog hələ məzmun var. Və uşaqlar həqiqətən baxsaq GitHub distribution kodu, biz bunu necə bir misal görə bilərsiniz. Cool. Hər hansı bir sualınız? Bəli. HOPARLÖR 2: Mən yalnız tapmaq əsas sual. Geri marşrutu. ERIC Ouyang: Bəli. Biz marşrutları nəzər edin. HOPARLÖR 2: yoxdur harada uses.blogcontroller da, post yaratmaq bizə nə birbaşa edir? ERIC Ouyang: Bəli. Bəli. HOPARLÖR 2: Yoxsa nə that-- deyil ERIC Ouyang: Belə ki, demək, nəzər Məsələn, burada bu marşrut. ilk hissəsi aktualdır Istifadəçi gedəcək URL. Və burada bu array, assosiativ array, müəyyən edir biz istəyirəm necə Buna cavab tətbiqi fəaliyyət göstərir. Belə ki, istifadə edir nəzarətçi, funksiyası ki, bir zəng etmək istəyirəm istifadəçi bu URL gedir. Belə ki, viewPost burada idi biz daxili müəyyən funksiyası BlogController-- of HOPARLÖR 2: görürəm. ERIC Ouyang ki: biz --so həqiqətən bir görünüşü göstərə bilər, bəzi hesablamalar SQL verilənlər bazası ilə qarşılıqlı. HOPARLÖR 2: OK. Və sonra digər: ERIC Ouyang hissəsi "kimi" istifadə bir ləqəbidir. Biz zaman qeyd əgər Belə ki, biz şəklində yaradılmış, ki, URL görəcəksiniz :: routecreatePost. Belə ki, faktiki da əvəz URL ki, biz çətin deyilik Bu kodlaşdırma biz dəyişə bilərsiniz bir dəfə, biz adını dəyişmək istəyirdi deyirlər. Əvəzində post çizgi yeni, biz s kimi etmək istəyirəm yalnız təmiz yeni zərbə Bizim URL bir az. Biz daha bir ləkə onu dəyişdirmək ki, bütün müxtəlif fayllar arasında çox. Cool. Bu yaxşı deyil. Belə ki, indi biz bir çox Əsas blog platform. Biz yəqin ki, belə bir düyməsinə əlavə etmək istəyirəm ki, biz, həqiqətən, yeni ismarıc yarada bilərsiniz. Biz bir nəzər Belə ki Layout Master, Biz Mövzu Right adlı bölmə var biz yalnız üst qədər müəyyən etdik ki,. Beləliklə, biz düymələri əlavə edə bilərsiniz mövzu üst. Belə ki, biz, həqiqətən, index.blade.php getmək əgər nə burada daxilində gedir nə müəyyən edir. Belə ki, bu Header hüququ ikibölməli, biz nə olacaq getmək üçün bir düyməsinə əlavə olunur Marşrut yeni vəzifəyə tərəfindən müəyyən URL. Sadəcə onu təmizləmək və etmək Bu olduqca və Bootstrap, biz olacaq Bu default düyməsini basın. Yalnız əyləncə üçün böyük edək. Və bu, daxili, bəzi mətn qoymaq bilər. Amma nə Bootstrap təmin glyphicons edir. Belə ki, biz, həqiqətən, əlavə edə bilərsiniz biz əvvəllər gördüm gözəl qələm. Glyphicon. Glyphicon-qələm. Belə ki, bu, bizə qoymaq üçün imkan verir ki, əvəzinə mətn bir icon. İndi dayandırmaq yoxdur, bu Bu bölmədə müəyyən edəcək. Və hey. Biz bizi gözəl düyməsinə var birbaşa bir blog post səhifə əlavə. Beləliklə, biz kifayət qədər sadə blog var. Biz bu məhsulları əlavə edə bilərsiniz. Amma biz ümumiyyətlə nə gözləmək Bloq şərh edir. Bizim üçün Belə ki, həqiqətən vacibdir başqası bir web ziyarət əgər, demək və həqiqətən post sevir ki, Onlar bizə məşğul ola bilər səhifəsini ziyarət digər insanlar ilə. Beləliklə, biz getmək və yaratmaq olacaq bir Yeni verilənlər bazası masa və yeni model biz şərik edə bilər ki, ismarıc şərh. Belə ki, ilk addım, əvvəl olduğu kimi, Biz miqrasiya run lazımdır ki. Əvvəl Belə ki, biz php sənətkar miqrasiya: olun. Və biz bir yaratmaq olacaq create_comments_table çağırıb. Bu faylı yaradır ki, yeni miqrasiya var. Və biz kimi olacaq əvvəl yeni bir tablo müəyyən edir. Belə ki, Şema :: yaratmaq masa şərh çağırıb. Burada bu funksiya. Bu masa daxilində nə biz ilk nə etmək olacaq kimi əvvəl ID təyin. ID əlavələr. Biz istifadəçilər birləşmək üçün imkan olacaq xüsusi comment ilə adı. Biz bəzi content olacaq ki, Bu, mətn content ilə yanaşı gedir. Burada biz olacaq nə nə fərqli bir şeydir. Biz tam yaratmaq olacaq ki, post_id deyirlər ki, nə post demek gedir xüsusi comment ilə gedir. Bundan əlavə, biz, həqiqətən, olacaq bu bir xarici əsas sıxıntı seçin. Belə ki, MySQL ki, tətbiq edəcək. Biz çalışırıq deyilik şərh əlavə nömrəsi təyin Biz varsa 5 5000 göndərmək üçün Bu barədə 5000 ismarıc var idi. Beləliklə, biz burada nə, xarici post_id etmək ilə bağlı olacaq Masa vəzifədən ID sahəsində. Və biz, həqiqətən, bir şey edəcəyik başqa faydalı, onDelete edir. Bəzi silmək əgər Belə ki, verilənlər bazası göndərmək Biz şəlalə istəyirəm ki, eləcə də yapılan yorumlar silir. Bu çox faydalı deyil, çünki Bizə ismarışları şərh üçün ki, yoxdur. Və nəhayət, əvvəl kimi, biz istəyirik Bu vaxt marka müəyyən olacaq. Və əvvəl kimi, biz olacaq tərsinə köç olmaq şərh masa düşmə. Belə ki, indi biz geri getmək əgər Burada, biz gedirik Bu miqrasiya, biznesmen keçirərkən çalıştırmak üçün. İndi bu tətbiq edir biz yalnız yaradılmışdır miqrasiya. Biz bir göz phpMyAdmin əgər Belə ki, biz indi, əslində, nə bir şərh masa var biz yalnız müəyyən strukturu. Əvvəl Belə ki, biz istəyirik yeni bir model yaratmaq niyyətindədir mücərrəd SQL masa biz yalnız yaratdı. Belə ki, yeni bir fayl əlavə edək. Biz bunu comment.php zəng olacaq. Bu həqiqətən kifayət qədər olacaq kiçik bir dəyişiklik ilə sadə nə biz əvvəl. Belə ki, sinif Comment fəsahətli uzanır. Və biz nə olacaq müəyyən burada etmək bir funksiyası digər modelləri ilə əlaqələr. Beləliklə, biz bir post funksiyası olacaq Burada bu əlaqələr qayıdır. Beləliklə, biz ifadə edirik bu göndərmək məxsusdur, bir post var ki, bu comment məxsusdur. Bu, həqiqətən, olmalıdır model üçün kapital P. İndi yalnız digər flip haqqında yan, biz hey, ki, var. İsmarıc şərh. Belə ki, nə biz nə olacaq edir ictimai funksiyası şərh müəyyən edir. Və burada geri bu çox Şərh var. Belə ki, indi magically biz bir yazı var zaman, Biz atributu şərh əldə edə bilərsiniz və ilə yaşayır lazımdır verilənlər bazası məlumat. Belə ki, həqiqətən vasitəsilə getmək və Bizim nəzərimizdə fayl yeni bir xüsusiyyət əlavə belə ki, biz həm də ekran və şərh yaradır. Beləliklə, biz yeni bir bölüm müəyyən olacaq. Yalnız ayrı-ayrı edək üfüqi qayda ilə. Bölmə id = "üçün yapılan yorumlar." Biz nə olacaq budur ki, əvvəl kimi, bütün şərh vasitəsilə təkrarlamaq. Yəni əslində biz bu necə, Mən qeyd etdiyim kimi, kifayət qədər sehrli. Biz şərh yazmaq yoxdur. Və sonra biz hər biri üçün bunu edə bilərsiniz şərh hər üzərində loop. Və biz olacaq nə nə, div class comment və biz, həqiqətən olacaq Bu şərh çap. Belə ki, hey keçirmək, şəxs konseptual mənada adı şərh kim bu comment-- olunub dot dot dot deyir. Biz blok bu qoymaq olacaq quote, yalnız gözəl baxmaq üçün. Və sonra content blok quote şərh. Və foreach. Belə ki, indi bu loop gedir bütün şərhlər vasitəsilə ki, bağlıdır ismarışları hər və bu şərh hər göstərilir. Mən bir bölmə əlavə etmək üçün gedirəm Burada imkan verir bizə Şərh əlavə edin. Belə ki, h3 sinif. Burada bir mövzu qoyun. Yorum əlavə et. Və biz yeni bir forma müəyyən olacaq. Əvvəl Belə ki, biz istəyirik formu hərəkət edəcəyik. Və burada, yeni fəaliyyət biz istəyirik Yeni nəzarətçi müəyyən gedir Bizə yazmaq üçün cavab verir şərh yaratmaq üçün sorğu. Belə ki, URL :: marşrutu createComment. Mən burada parametr keçmək üçün gedirəm. Yazının ID ki, Biz şərh yaratmaq edirik. Bu sonra üsulu formu post olacaq. İndi biz əlavə olacaq iki sahələri, forma qrupu. Bu bir giriş olacaq "adı" və class = "form-nəzarət" adı, = "text" ilə yazın tutucu = "Sizin adınız". Biz də müəyyən olacaq başqa forma sahəsində olan Mətn olacaq sahəsi biz əvvəl olduğu kimi. Just əvvəl kimi, content zəng. Class = "form-nəzarət." Placeholder = "Burada yazın." Və yalnız ki, biz həqiqətən təqdim edə bilər, növü və class = təqdim "btn-əsas btn." Formu bağlayın. Bu hərəkəti bağlayın. Belə ki, indi biz bu səhifəni harada yenileyin əgər biz, demək, müəyyən bir post var. Biz server reboot lazımdır. PHP biznesmen xidmət edir. Bu yenidən başladın. Biz marşrutu müəyyən etmək lazımdır. Amma indi üçün, yalnız bu götürək həyata ki, biz, həqiqətən, sizə göstərmək olar nə səhifə kimi görünür və sonra Biz, həqiqətən, marşrut yaratmaq lazımdır. Belə ki, hey. Biz burada bu yeni forması aşağı Biz şərh yaratmaq bilər ki. Belə ki, həqiqətən, müəyyən edək nəzarətçi ərzində funksiyası Biz şərh əlavə edə bilərsiniz ki. Geri gedək. Və blogcontroller.php ərzində biz nə olacaq yeni funksiya yaratmaq şərh yaratmaq çağırıb. İctimai funksiyası createComment. Bu bir gedir parametri, ismarıc ID ki, şərh edirik. Və kimi əvvəl, biz istəyirik ilk post almaq üçün gedir. Belə ki, findOrfail id göndərin. Sonra, biz gedirik Yeni bir yorum yaratmaq. Belə ki = Yeni Şərh şərh. Name = Input Comment :: adı almaq. Comment content = eyni yeni xətt Input fasilələri daxil :: content almaq. Və nəhayət, biz olacaq vəzifə ilə bu şərhi şərik. Beləliklə, biz istifadə etmək olacaq bu funksiya, şərh, bizi saxlamaq üçün imkan verir Bu əlaqələr. Belə ki, indi bu comment olacaq avtomatik post ID. Biz də bunu müəyyən edə bilər əl, lakin bu deyil qədər oxumaq üçün daha asan funksiyası gedir. Və biz həyata sonra Bu, biz nə istəyirik istifadəçi yönlendirme deyil marşrut viewPost tərəfindən müəyyən ilə sırası ilə poçt ID parametri. İndi ki, bu, həqiqətən, funksiyaları, bu marşrut müəyyən etmək lazımdır. Route :: post. İndi biz bu zəng olacaq poçt ID çizgi şərh doğramaq. Array yeni funksiyası istifadə biz yalnız yaratdı. BlogController. CreateComment kimi CreateComment. Böyük. Belə ki, indi biz bu səhifəni yenileyin inşallah əgər və bir comment, demək, David Malan əlavə edin. "Ümid edirəm ki, bu işləyir." Təqdim edir. Biz, əslində, bir var Bu blog şərh. Cool. Belə ki, indi biz kifayət qədər var funksional blog post. Biz yalnız olacaq belə ki, bir neçə tweaks əlavə biz bir daha faydalı ki, bu vəzifələrə haqqında məlumat. Biz geri getmək əgər Belə ki, Ön səhifə, biz heç bir hissi var bir neçə şərhlər Bu ismarışları hər. Belə ki, biz, həqiqətən, olacaq nə Bunu, bizim model daxilində, imkan verir ki, bir köməkçi funksiyası müəyyən Bizə şərh sayı müəyyən etmək üçün müəyyən bir vəzifə ilə getmək. Beləliklə, biz yaratmaq olacaq bir köməkçi funksiyası. İctimai fəaliyyət göstərir. GetNumCommentsStr. Sayını göstərir Belə ki, bir string bununla yanaşı getmək şərh. Və nə biz nə olacaq demək deyil ki, num = Bu şərh saymaq. Beləliklə, biz saymaq olacaq şərh sayı. Bu sayı 1 bərabərdir əgər, biz istəyirik yalnız 1 comment geri olacaq. Və sonra başqa, biz qayıtmaq istəyirəm num və şərh concatenation, belə ki, biz pluralization doğru almaq. Məhz bu bir quote edir. One comment. İndi biz bu funksiyanı istifadə edə bilərsiniz birbaşa görünüşü daxilində. Biz geri getmək əgər Belə ki, biz yaratdıq qismən ismarıc, İndi biz, həqiqətən istəyirəm şərh sayı göstərilir. Belə ki, biz nə edir poçt, bu funksiyadan istifadə Biz yalnız yaradılmışdır ki, şərh sayı göstərilir. Biz indi, yenileyin Belə ki, əgər əslində, yoxdur, ekran sayı comments onunla birlikdə getmək. Biz əgər xülya olmaq istəyirdi həqiqətən distribution kodu baxmaq, Biz, həqiqətən, keçid edə bilərsiniz şərh bu. Siz geri varsa, biz ərzində müəyyən Bu bölmədə ID şərhlər bilərsiniz. Belə ki, biz, həqiqətən, keçid istəyirdi birbaşa şərh bölməsində, nə Biz burada bir href olardı Marşrut viewPost URL. Poçt ID array ID keçir. Və sonra biz getmək istəyirəm xüsusi comments bölmə. Burada A tag yaxın edək. Belə ki, indi biz bu yenileyin əgər səhifə bu basın. Biz birbaşa gedəcəyəm şərh bölmə. Biz uzun post olsaydı, siz əslində bu sıçrama aşağı baxın. Amma ki, görəcəksiniz deyil səhifənin üst. Cool. Böyük. Belə ki, kifayət qədər sadə deyil sadə bir şey nümunə Siz Laravel ilə edə bilərsiniz ki,. Amma burada qeyd edə bilər ki, Biz bir çox şeyi etdik kodu kifayət qədər az miqdarda. Laravel bizə imkan verir Pərdə arxasında SQL queries. Bu kanalizasiya yoxdur pərdə arxasında bizim üçün. Bizə bu əlaqələri etmək üçün imkan verir çox asanlıqla bizə ehtiyac olmadan hər hansı bir SQL etmək şərhlərdə qoşulmaq nə ismarıc şərh birləşdirir. Bizə bunu imkan verir şablon miras belə ki, biz bu yuva müəyyən edə bilərsiniz ki, faylları belə ki, biz özümüzü təkrar deyilik yalnız ki, zaman kimi blog ismarıc ekran biz yoxdur ki, surəti və yapışdırıb. Və buradan inşa edə bilərsiniz getdikcə daha mürəkkəb applications. Siz təsəvvür edə bilərsiniz, əgər biz həyata keçirmək istədiklərini Giriş, Biz üçüncü tərəf gətirmək, demək olar bizə imkan verir çərçivəsində. Onların bir dəstə var ki, həqiqətən, həqiqətən kimi edə bilərsiniz böyük, parol bərpa. Və sizə bir göndərmək lazımdır parol e-poçt yenidən. Biz icazə həyata keçirə bilər Mən bir post yaratmaq bilər ki, lakin başqası redaktə edə bilməz. Biz həyata keçirə bilər funksionallığı ismarışları silmək üçün. Amma biz olduqca var ki, burada görə bilərsiniz çox bütün elementar komponentləri həqiqətən bir yaratmaq üçün, həqiqətən, dinamik və maraqlı web apps. Belə ki, biz yaxşı olduğunuzu düşünürəm. Uşaqlar hər hansı bir sualınız var? Bəli? HOPARLÖR 3: Necə etmək statik məzmun almaq? ERIC Ouyang: Static content. Biz zaman Belə ki, əvvəl gördüm burada bu hüququ, bu layout content, view etmək, biz bu idi sonra bu array olmadan. Blog.index, biz bu idi yalnız statik fayl kimi. Biz keçmək yoxdur Belə ki bu boyunca bir şey, yalnız birbaşa HTML göstərmək lazımdır. Amma biz bu assosiativ keçmək əgər dinamik edir ismarıc array, veritabanından çəkilmiş, biz səhifə dinamik edə bilər. Cool. Hər hansı digər suallar? HOPARLÖR 3: necə müqayisə Bəlkə bəzi digər variantları Laravel? ERIC Ouyang: Sure. Bəli. Belə ki, Laravel ki That böyük sual web çərçivəsində üçün bir çox variantları biridir. Belə ki, Rails haqqında Ruby məşhur biridir. Mən Twitter olmaq üçün istifadə inanıram Rails haqqında Ruby ilə həyata keçirilir. Mən bu yana işə etdik edirəm. FuelPHP adlı başqa bir var. Belə ki, Rails haqqında Ruby Ruby dil istifadə edir və MVC heyəti bir çox həyata keçirir biz burada görürük. FuelPHP bir PHP çərçivəsində edir. Django mənim favoritlərindən biridir. Bu Python üçün bir web çərçivəsində var. Belə ki, Python web app yaza bilərsiniz. Belə ki, bu variantları ton var. Laravel, mən hesab edirəm ki, və böyük mənim sevimli doğru İndi PHP üçün, sadəcə ona görə komponentlərinin biz əvvəllər haqqında söhbət. Bu, Bəstəkar verdi. Bu, həqiqətən, həqiqətən daxildir ifadəli ORM sistemi. Həmçinin həqiqətən zəhmli şablonu var dil ki, digər bəzi yalnız təmin etmir. Və miqrasiya. Miqrasiya, eləcə də zəhmli edir. Cool? Awesome. Yaxşı, çox təşəkkür edirik Bu seminar watching, son layihələr və uğurlar.