1 00:00:00,000 --> 00:00:02,538 >> [MUSIK SPELA] 2 00:00:02,538 --> 00:00:10,800 3 00:00:10,800 --> 00:00:12,390 >> ERIC Ouyang: Hej, alla. 4 00:00:12,390 --> 00:00:13,580 Välkommen. 5 00:00:13,580 --> 00:00:16,860 Detta är Building Dynamic Web Apps med Laravel. 6 00:00:16,860 --> 00:00:18,290 Mitt namn är Eric Ouyang. 7 00:00:18,290 --> 00:00:23,860 Jag är en sophomore studerar samhällskunskap med en sekundär i datavetenskap, 8 00:00:23,860 --> 00:00:27,290 och jag bor i Adams Hus här på Harvard. 9 00:00:27,290 --> 00:00:33,340 >> Så Laravel, som mest kärna, är en MVC web app ram. 10 00:00:33,340 --> 00:00:38,265 Så gillar vad ni har gjort med CS50 Finance, 11 00:00:38,265 --> 00:00:42,480 Laravel är ett ramverk som gör det möjligt du kan bygga dynamiska webbprogram. 12 00:00:42,480 --> 00:00:47,710 Så du kan tänka på det i några sinnen som en förlängning av den typ av saker 13 00:00:47,710 --> 00:00:50,470 du gjort i CS50 Finans, men ett system som är 14 00:00:50,470 --> 00:00:55,890 mycket mer robust, mycket mer elegant i vissa avseenden, 15 00:00:55,890 --> 00:00:57,870 och ger en hel del funktionalitet för dig 16 00:00:57,870 --> 00:01:03,060 att bygga ganska komplicerad webbapplikationer. 17 00:01:03,060 --> 00:01:05,010 Så låt oss gå igenom några av de viktigaste funktionerna, 18 00:01:05,010 --> 00:01:09,550 och sedan ska vi dyka in i en exempel på att bygga en blogg 19 00:01:09,550 --> 00:01:12,500 Ansökan med Laravel. 20 00:01:12,500 --> 00:01:16,700 >> Så en av de första saker som skiljer den från MVC typ av arbete 21 00:01:16,700 --> 00:01:22,100 att du har gjort med CS50 är det innehåller en ORM motor. 22 00:01:22,100 --> 00:01:27,410 Så ORM står för objektet relationell mappning. 23 00:01:27,410 --> 00:01:31,080 Så detta kan du bygga ett lager av abstraktion 24 00:01:31,080 --> 00:01:35,230 mellan databasen och dina controllers. 25 00:01:35,230 --> 00:01:39,150 Så till skillnad från i CS50 Finance där du direkt göra förfrågningar, 26 00:01:39,150 --> 00:01:44,790 ORM lagret kan du abstrakt som bort och skapa 27 00:01:44,790 --> 00:01:48,085 modeller som är mer kraftfull än kan du direkt med SQL-frågor. 28 00:01:48,085 --> 00:01:50,590 29 00:01:50,590 --> 00:01:53,510 >> En annan sak som är riktigt användbart är ärftliga mallar. 30 00:01:53,510 --> 00:01:58,990 Så du kommer att märka i CS50 Finance, du hamnar omskrivning en massa saker, 31 00:01:58,990 --> 00:02:03,150 där placerar du kunde potentiellt återanvända saker, du inte kan. 32 00:02:03,150 --> 00:02:08,539 Så här i Laravel, kan du använda det som finns kallas blad mall motor 33 00:02:08,539 --> 00:02:10,530 att skapa en mästare layout. 34 00:02:10,530 --> 00:02:15,840 Och därifrån kan du ärva så att under mallar kan faktiskt 35 00:02:15,840 --> 00:02:21,210 innefatta element inom att större bas mall. 36 00:02:21,210 --> 00:02:21,810 >> Migration. 37 00:02:21,810 --> 00:02:29,010 Så detta är en ganska standard på de flesta moderna webbapplikation ramar. 38 00:02:29,010 --> 00:02:32,710 Så detta gör att du kan representera databasschemaförändringar kod. 39 00:02:32,710 --> 00:02:39,200 Så utan att gå att säga, phpMyAdmin, Du kan faktiskt skapa dessa migreringar 40 00:02:39,200 --> 00:02:44,660 där du representerar databasen schema förändringar i koden direkt. 41 00:02:44,660 --> 00:02:48,070 Och detta gör att du att-- speciellt om du har flera personer som arbetar 42 00:02:48,070 --> 00:02:52,650 på samma web application-- spåra dessa förändringar, 43 00:02:52,650 --> 00:02:55,380 säger i GitHub, eller någon annan förvaret. 44 00:02:55,380 --> 00:03:00,880 >> Så det här är verkligen bra och mildrar behovet 45 00:03:00,880 --> 00:03:04,580 till, säg, skicka runt en massa SQL soptippar. 46 00:03:04,580 --> 00:03:07,140 Och slutligen, är Composer något riktigt, riktigt användbart 47 00:03:07,140 --> 00:03:09,840 som låter dig använda andra människors kod för att göra awesome saker. 48 00:03:09,840 --> 00:03:14,020 Så Laravel s strukturerad som flera kompositör paket. 49 00:03:14,020 --> 00:03:17,870 Så säga om du ville ta i en autentiseringspaket 50 00:03:17,870 --> 00:03:23,440 eller om du ville ta in vissa sorts generator manus eller en admin 51 00:03:23,440 --> 00:03:26,910 gränssnittet kan du ansluta och spela dessa komponenter med Composer. 52 00:03:26,910 --> 00:03:30,470 53 00:03:30,470 --> 00:03:31,570 >> Så låt oss komma igång. 54 00:03:31,570 --> 00:03:35,185 Eventuella frågor från dig killar innan vi börjar? 55 00:03:35,185 --> 00:03:36,500 Inga frågor? 56 00:03:36,500 --> 00:03:37,490 Cool. 57 00:03:37,490 --> 00:03:39,990 Så det första steget är installera kompositör. 58 00:03:39,990 --> 00:03:43,590 Så Composer kan du hantera dessa beroenden, 59 00:03:43,590 --> 00:03:47,770 oavsett om det är ramverket Laravel eller någon annan tredje part förlängning. 60 00:03:47,770 --> 00:03:50,400 Det första kommandot tillåter dig ladda Kompositör, 61 00:03:50,400 --> 00:03:55,890 och den andra kommandot kan du flytta den till din lokala bin mapp 62 00:03:55,890 --> 00:04:01,340 så att du kan köra Composer direkt genom terminalen. 63 00:04:01,340 --> 00:04:05,405 >> Efter det, gå vidare och skapa ett nytt Laravel projekt. 64 00:04:05,405 --> 00:04:07,280 Vi faktiskt kommer att använda vissa exempelkod 65 00:04:07,280 --> 00:04:10,760 som jag har satt ihop att skapa den här bloggen. 66 00:04:10,760 --> 00:04:14,420 Men om du börjar från scratch, skulle du använda det här kommandot 67 00:04:14,420 --> 00:04:18,160 här uppe, kompositör skapa-projektet, Laravel snedstreck Laravel, och sedan 68 00:04:18,160 --> 00:04:19,940 namnet på ditt projekt. 69 00:04:19,940 --> 00:04:22,275 Och det kommer att omfatta all distributionskod 70 00:04:22,275 --> 00:04:23,733 för att starta ett nytt Laravel projekt. 71 00:04:23,733 --> 00:04:28,870 Så för din CS50 slutprojekt, kommer du förmodligen vill använda det kommandot. 72 00:04:28,870 --> 00:04:31,210 >> Men vi ska börja med detta. 73 00:04:31,210 --> 00:04:34,630 Så när du har gjort att du kommer att få 74 00:04:34,630 --> 00:04:40,190 en ganska omfattande antal filer i blog50. 75 00:04:40,190 --> 00:04:43,840 Så låt oss bara gå igenom vissa av dessa komponenter. 76 00:04:43,840 --> 00:04:49,060 Du kommer att märka på denna väg katalog finns det en app mapp. 77 00:04:49,060 --> 00:04:52,960 Inne i appen mappen, det finns ett par hjälp mappar. 78 00:04:52,960 --> 00:04:56,330 Notera att börja med är detta config-mappen. 79 00:04:56,330 --> 00:04:59,210 Så detta sätter upp hur din webbapplikation är 80 00:04:59,210 --> 00:05:04,350 gå till, säg, autentisera människor eller kontant saker eller ansluta till databasen. 81 00:05:04,350 --> 00:05:06,400 >> Och vad är egentligen användbart är att Laravel 82 00:05:06,400 --> 00:05:09,130 kan du ställa in olika utvecklingsmiljöer. 83 00:05:09,130 --> 00:05:12,090 Så vad vi har gjort här är om vi går under det lokala mappen, 84 00:05:12,090 --> 00:05:14,720 det finns en database.php fil. 85 00:05:14,720 --> 00:05:18,320 Och du kommer att märka här att vi inrätta en MySQL-anslutning som 86 00:05:18,320 --> 00:05:22,230 tillåter individer att ansluta till MySQL-servern som är 87 00:05:22,230 --> 00:05:24,310 direkt på CS50 apparaten. 88 00:05:24,310 --> 00:05:26,980 Och vi ska ansluta till en databas att jag ställer upp som heter Blog50. 89 00:05:26,980 --> 00:05:31,390 90 00:05:31,390 --> 00:05:37,085 >> Så låt oss faktiskt gå vidare och kör arbetsversion av detta, 91 00:05:37,085 --> 00:05:39,710 bara för att få en känsla för vad det applikation som vi bygger 92 00:05:39,710 --> 00:05:41,390 ser ut. 93 00:05:41,390 --> 00:05:46,150 Så jag har en kopia av denna Blog50 klar. 94 00:05:46,150 --> 00:05:51,910 Så Laravel faktiskt har byggt i en server 95 00:05:51,910 --> 00:05:53,910 att du kan köra direkt från kommandoraden. 96 00:05:53,910 --> 00:05:56,900 Så detta liknar den Pset innan när du faktiskt 97 00:05:56,900 --> 00:06:00,580 bygga din egen server i C. Så de har en inbyggd så 98 00:06:00,580 --> 00:06:04,010 att du kan köra dina Laravel appar direkt från kommandoraden. 99 00:06:04,010 --> 00:06:11,650 >> Så om vi gör php hantverkare tjäna, här kommer att lansera en utvecklingsserver 100 00:06:11,650 --> 00:06:13,880 på port 8000. 101 00:06:13,880 --> 00:06:18,250 Så om vi går till lokala värden 8.000, kommer du att märka det, hej. 102 00:06:18,250 --> 00:06:20,800 Vi har vår blogg igång. 103 00:06:20,800 --> 00:06:25,090 Så Laravel här genererar förstasidan på vår blogg. 104 00:06:25,090 --> 00:06:26,350 Mycket enkel applikation. 105 00:06:26,350 --> 00:06:28,610 Men det finns ett par verkligen fiffiga funktioner 106 00:06:28,610 --> 00:06:31,346 att den ger under huven. 107 00:06:31,346 --> 00:06:33,680 >> Så bloggen programmets okomplicerad. 108 00:06:33,680 --> 00:06:36,430 Om vi ​​ville skapa ett inlägg, vi kan klicka på den knappen. 109 00:06:36,430 --> 00:06:40,470 Vi kan säga, "Hej, alla. 110 00:06:40,470 --> 00:06:44,530 Detta är ett riktigt roligt seminarium, "till exempel. 111 00:06:44,530 --> 00:06:46,560 Och skriva något här nere. 112 00:06:46,560 --> 00:06:48,180 Text här. 113 00:06:48,180 --> 00:06:51,327 Om vi ​​klicka på Skicka, du ska märker att vår nya blogg 114 00:06:51,327 --> 00:06:53,410 inlägget har lagts till i förstasidan av bloggen. 115 00:06:53,410 --> 00:06:56,532 116 00:06:56,532 --> 00:06:59,970 Om vi ​​går tillbaka hit, kommer du att märka att det har varit några kommentarer redan 117 00:06:59,970 --> 00:07:01,160 på bloggen. 118 00:07:01,160 --> 00:07:03,630 Så om vi rulla ner, kommer du märker att Jonathan Tan säger 119 00:07:03,630 --> 00:07:08,020 att han var väldigt fascinerad av det här inlägget. 120 00:07:08,020 --> 00:07:11,570 >> Så vi ska gå in på hur objektet relationell mappning möjliggör 121 00:07:11,570 --> 00:07:16,668 dig att göra dessa relationer i ett ganska smidigt sätt också. 122 00:07:16,668 --> 00:07:17,660 Cool. 123 00:07:17,660 --> 00:07:20,290 Eventuella frågor om funktionalitet av vad vi ska bygga? 124 00:07:20,290 --> 00:07:22,850 125 00:07:22,850 --> 00:07:23,840 Cool. 126 00:07:23,840 --> 00:07:28,170 Så låt oss börja med faktiskt skapa databastabeller. 127 00:07:28,170 --> 00:07:33,190 >> Så minns att i CS50 Finance, du sätta ihop en tabell för användarna 128 00:07:33,190 --> 00:07:37,100 liksom för den bestånd i din portfölj. 129 00:07:37,100 --> 00:07:41,040 Så som vi nämnde tidigare, vad vi använder i Laravel 130 00:07:41,040 --> 00:07:43,090 är något som kallas migreringar. 131 00:07:43,090 --> 00:07:48,570 Så om vi går tillbaka till distributions koden här, 132 00:07:48,570 --> 00:07:51,790 det första kommandot som är hjälp att Laravel ger dig 133 00:07:51,790 --> 00:07:54,240 är detta migrate kommandot. 134 00:07:54,240 --> 00:07:59,220 Så vi kan göra php hantverkare Migrera: gör. 135 00:07:59,220 --> 00:08:01,760 Så detta gör att vi kan skapa en migrering. 136 00:08:01,760 --> 00:08:03,710 >> Och då ska vi ha att skapa en migrering 137 00:08:03,710 --> 00:08:07,050 kallas create_posts_table, som kommer 138 00:08:07,050 --> 00:08:11,521 att vara där vi ska vara att lagra våra blogginlägg. 139 00:08:11,521 --> 00:08:14,690 Och du kommer att märka här att det går genom en del kod som faktiskt 140 00:08:14,690 --> 00:08:17,580 genererar en fil med en tidsstämpel på den. 141 00:08:17,580 --> 00:08:22,260 Så om vi går och tittar på Databas, vi kommer att märka i Migra 142 00:08:22,260 --> 00:08:24,830 att det är skapat ett tom fil för oss som 143 00:08:24,830 --> 00:08:30,100 har standardtext kod med namnet att vi specificerade, skapa inlägg bord. 144 00:08:30,100 --> 00:08:31,670 >> Och det har två funktioner i den. 145 00:08:31,670 --> 00:08:40,539 Up är vad vi vill köra när migrering appliceras till databasen. 146 00:08:40,539 --> 00:08:46,380 Och ner är vad vi ska göra när vi vill vända en migrering. 147 00:08:46,380 --> 00:08:49,890 Så här ska vi börja med att skriva denna migration. 148 00:08:49,890 --> 00:08:55,480 Så det finns en hjälpklass i Laravel kallas Schema. 149 00:08:55,480 --> 00:08:57,910 >> Så vi kommer att köra Schema :: skapa. 150 00:08:57,910 --> 00:09:01,080 Och vi kommer att skapa en tabell som kallas inlägg. 151 00:09:01,080 --> 00:09:05,980 Och här är vi tillämpa denna med hjälp av en funktion. 152 00:09:05,980 --> 00:09:11,010 Och inom här, ska vi faktiskt specificera innehållet i vårt bord. 153 00:09:11,010 --> 00:09:14,860 Vi kommer att skapa ett ID, vilket är automatisk uppräkning. 154 00:09:14,860 --> 00:09:19,850 155 00:09:19,850 --> 00:09:24,350 >> Dessutom kommer vi att skapa ett fält som 156 00:09:24,350 --> 00:09:27,060 representerar titeln på vår blogginlägg. 157 00:09:27,060 --> 00:09:29,880 158 00:09:29,880 --> 00:09:36,950 Vi kommer även att skapa ett fält för lagring texten i vår blogginlägg. 159 00:09:36,950 --> 00:09:40,600 Och slutligen, vi kommer att lagra vissa tidsstämplar 160 00:09:40,600 --> 00:09:44,690 när vår post skapades och när den är uppdaterad. 161 00:09:44,690 --> 00:09:46,240 Och för ner, det är ganska enkelt. 162 00:09:46,240 --> 00:09:53,974 Allt vi vill göra är att släppa tabellen som vi har skapat. 163 00:09:53,974 --> 00:09:54,930 >> Stor. 164 00:09:54,930 --> 00:09:55,850 Några frågor? 165 00:09:55,850 --> 00:09:59,730 166 00:09:59,730 --> 00:10:07,110 Så nu om vi går framåt och-- faktiskt, lokal värd, 167 00:10:07,110 --> 00:10:09,640 Låt mig ta bort vad vi hade tidigare. 168 00:10:09,640 --> 00:10:14,330 169 00:10:14,330 --> 00:10:15,190 Gå till databaser. 170 00:10:15,190 --> 00:10:17,640 Jag ska ta bort vad vi hade tidigare. 171 00:10:17,640 --> 00:10:22,870 Släpp det här och skapa en ny databas Blog50. 172 00:10:22,870 --> 00:10:24,930 Så nu vad den magiska del är här som vi 173 00:10:24,930 --> 00:10:28,760 kan tillämpa dessa migreringar direkt till databasen med hjälp av kommandoraden 174 00:10:28,760 --> 00:10:29,290 verktyg. 175 00:10:29,290 --> 00:10:35,100 Så om vi gör php hantverkare migrera, du kommer att märka det, hej. 176 00:10:35,100 --> 00:10:38,320 Det har skapat migrationsbordet, som vi tar en titt på i lite, 177 00:10:38,320 --> 00:10:40,540 och det har tillämpat denna första migration. 178 00:10:40,540 --> 00:10:43,860 179 00:10:43,860 --> 00:10:48,920 >> Så vi tittar på Blog50, kommer du att märka att det är skapat två tabeller för oss. 180 00:10:48,920 --> 00:10:50,300 Först är detta migreringar tabell. 181 00:10:50,300 --> 00:10:54,130 Så om vi bläddra i den här, kommer du att märka att denna tabell är ganska okomplicerat. 182 00:10:54,130 --> 00:10:55,490 Det är bara säga att, hey. 183 00:10:55,490 --> 00:10:58,960 Vi har tillämpat denna migration. 184 00:10:58,960 --> 00:11:01,470 Vi går tillbaka och tittar på inlägg. 185 00:11:01,470 --> 00:11:05,720 Du kommer att märka att strukturen är precis vad vi hade bett den. 186 00:11:05,720 --> 00:11:07,350 Vi har en auto-inkrementering ID. 187 00:11:07,350 --> 00:11:10,450 Vi har en sträng för att lagra titeln, och ett textfält 188 00:11:10,450 --> 00:11:11,450 för lagring av innehållet. 189 00:11:11,450 --> 00:11:14,040 190 00:11:14,040 --> 00:11:14,706 Stor. 191 00:11:14,706 --> 00:11:15,560 Cool. 192 00:11:15,560 --> 00:11:21,626 Eventuella frågor om migration arbete, hur vi kan använda dem? 193 00:11:21,626 --> 00:11:22,126 Nej? 194 00:11:22,126 --> 00:11:23,600 Cool. 195 00:11:23,600 --> 00:11:26,630 Så nu ska vi gå vidare och faktiskt skapar modellen. 196 00:11:26,630 --> 00:11:33,100 Så vi vill skapa en inlägg modell som lagrar en abstraktion av databasen. 197 00:11:33,100 --> 00:11:41,040 Så istället för att göra MySQL-frågor direkt, vi kommer att skapa. 198 00:11:41,040 --> 00:11:45,840 Så vi måste skapa en mapp i här kallas modeller. 199 00:11:45,840 --> 00:11:48,905 Och inne här, ska vi skapa en fil som heter post.php. 200 00:11:48,905 --> 00:11:52,280 201 00:11:52,280 --> 00:11:54,550 >> Inuti denna PHP-fil, vi kommer att skapa 202 00:11:54,550 --> 00:12:00,590 en klass post som sträcker vältalig. 203 00:12:00,590 --> 00:12:08,950 Vältalig är namnet på ORM motor som Laravel tillhandahåller. 204 00:12:08,950 --> 00:12:12,799 Och här, kanske vi förvänta oss att du faktiskt behöver skriva lite kod. 205 00:12:12,799 --> 00:12:14,840 Vi kommer att skriva lite hjälparfunktioner senare. 206 00:12:14,840 --> 00:12:19,420 Men ur lådan, kommer detta redan känner igen vad som finns i databasen 207 00:12:19,420 --> 00:12:24,770 och vi kan komma åt, säger, texten av vår blogginlägg eller titeln, 208 00:12:24,770 --> 00:12:29,230 och skapa saker direkt med ganska mycket ingen kod alls. 209 00:12:29,230 --> 00:12:31,110 >> Så det är en av de magiska komponenter. 210 00:12:31,110 --> 00:12:34,980 Och vinden när denna klass är mer fullfjädrad, 211 00:12:34,980 --> 00:12:40,480 vi ska innehålla information om vad det är relaterat till, så kommentarerna. 212 00:12:40,480 --> 00:12:42,310 Skapa även en funktion så vi kan faktiskt 213 00:12:42,310 --> 00:12:46,340 direkt få webbadressen av ett blogginlägg sida. 214 00:12:46,340 --> 00:12:46,840 Cool. 215 00:12:46,840 --> 00:12:47,881 Eventuella frågor om detta? 216 00:12:47,881 --> 00:12:51,140 217 00:12:51,140 --> 00:12:51,832 Nej. 218 00:12:51,832 --> 00:12:54,100 Cool. 219 00:12:54,100 --> 00:12:57,860 >> Så nu när vi har vår modell, vi vill skapa en styrenhet som är 220 00:12:57,860 --> 00:13:02,340 kunna samverka med dessa modeller, och därefter databasen. 221 00:13:02,340 --> 00:13:05,540 Så om vi tar en titt på BlogController, du ska 222 00:13:05,540 --> 00:13:08,490 märker att det finns inte mycket här just nu. 223 00:13:08,490 --> 00:13:13,220 Allt som finns är en indexfunktion som genererar hemsidan, 224 00:13:13,220 --> 00:13:18,220 men utan något där för att visa ännu. 225 00:13:18,220 --> 00:13:20,560 >> Så den första funktionen att vi kommer att skapa 226 00:13:20,560 --> 00:13:25,790 är en som tillåter oss att skapa ett blogginlägg. 227 00:13:25,790 --> 00:13:30,540 Så vi kommer att förklara en ny funktion kallad newPost. 228 00:13:30,540 --> 00:13:36,430 Och inne här enkelt, vi kommer för att ställa in layouten på denna sida 229 00:13:36,430 --> 00:13:41,850 att vara en rendera version, om du minns från CS50, 230 00:13:41,850 --> 00:13:48,020 av denna mall kallas blog.new, vilket vi kommer att skapa i en liten bit. 231 00:13:48,020 --> 00:13:53,170 >> Du kommer att märka här på line sex som Vi specificerade denna variabel, layout. 232 00:13:53,170 --> 00:13:55,820 Och om vi tar en titt vid Vyer mappen 233 00:13:55,820 --> 00:14:01,640 det finns en layout mapp, som innehåller en mycket grundläggande HTML-fil. 234 00:14:01,640 --> 00:14:04,680 Och notera, kommer du att märka att vi har den här behållaren 235 00:14:04,680 --> 00:14:06,800 här som ger innehållet. 236 00:14:06,800 --> 00:14:09,460 Så insidan av vår mall vad vi ska göra 237 00:14:09,460 --> 00:14:16,180 är att skapa vad som kommer att bli ersattes direkt i den här layouten. 238 00:14:16,180 --> 00:14:20,060 >> Så vi sa att vi vill göra en mall som kallas blog.new. 239 00:14:20,060 --> 00:14:23,790 Men inne i Blog, det finns ännu inte denna nya mallen. 240 00:14:23,790 --> 00:14:26,910 Så vi kommer att skapa en fil som heter new.blade.php. 241 00:14:26,910 --> 00:14:29,860 Detta talar Laravel som denna PHP-fil bör 242 00:14:29,860 --> 00:14:31,720 renderas med blad mall motor. 243 00:14:31,720 --> 00:14:39,510 244 00:14:39,510 --> 00:14:42,630 Så det här är en ganska okomplicerad fil. 245 00:14:42,630 --> 00:14:46,690 Det kommer att bli i form av vilka vi faktiskt lägger i ett blogginlägg. 246 00:14:46,690 --> 00:14:49,220 >> Så magin här från arv är att, hey. 247 00:14:49,220 --> 00:14:52,950 Vi vill ange att avsnitt, innehålls sektionen 248 00:14:52,950 --> 00:14:56,640 Här, som avgränsas genomsection ochstop. 249 00:14:56,640 --> 00:15:02,260 Så vad som finns i mellan här kommer att vara substituerad i master layouten. 250 00:15:02,260 --> 00:15:07,000 Och här vad vi vill göra är att mycket helt enkelt skapa en ny HTML-fil. 251 00:15:07,000 --> 00:15:08,690 Låt oss bara lägga en snabb titel. 252 00:15:08,690 --> 00:15:09,600 Lägg ett blogginlägg. 253 00:15:09,600 --> 00:15:12,110 254 00:15:12,110 --> 00:15:15,390 Och inom den, vi är kommer att skapa ett formulär. 255 00:15:15,390 --> 00:15:19,197 >> Denna form kommer att få en åtgärd. 256 00:15:19,197 --> 00:15:21,780 Och detta kommer att vara något att vi ersätta senare, 257 00:15:21,780 --> 00:15:24,200 och vi får se hur routing passar in här. 258 00:15:24,200 --> 00:15:33,600 Men vi kommer bara att definiera för nu att detta går till en webbadress med rutten 259 00:15:33,600 --> 00:15:34,860 från createPost. 260 00:15:34,860 --> 00:15:38,200 261 00:15:38,200 --> 00:15:40,320 Och sedan detta kommer att ha metod inlägg. 262 00:15:40,320 --> 00:15:43,940 263 00:15:43,940 --> 00:15:47,590 Inom här kommer vi att ha två fält. 264 00:15:47,590 --> 00:15:49,170 Div class = "formgrupp". 265 00:15:49,170 --> 00:15:55,806 >> Vi använder Bootstrap CSS-biblioteket nådigt tillhandahålls av Twitter. 266 00:15:55,806 --> 00:15:57,720 Så vi kommer att skapa två av dessa. 267 00:15:57,720 --> 00:16:01,700 268 00:16:01,700 --> 00:16:05,970 Så denna första ingång är kommer att vara titeln. 269 00:16:05,970 --> 00:16:08,437 Så input name = "title". 270 00:16:08,437 --> 00:16:09,270 Klass = "formcontrol". 271 00:16:09,270 --> 00:16:13,540 272 00:16:13,540 --> 00:16:14,425 Type = "text". 273 00:16:14,425 --> 00:16:16,050 Jag ska lägga en platshållare = "titel". 274 00:16:16,050 --> 00:16:21,570 275 00:16:21,570 --> 00:16:26,140 >> Och sedan den andra är kommer att bli ett textområde. 276 00:16:26,140 --> 00:16:27,827 Namn = "content". 277 00:16:27,827 --> 00:16:28,660 Klass = "formcontrol". 278 00:16:28,660 --> 00:16:33,402 279 00:16:33,402 --> 00:16:34,610 Och platshållare = "Skriv här". 280 00:16:34,610 --> 00:16:42,030 281 00:16:42,030 --> 00:16:43,480 Det går vi. 282 00:16:43,480 --> 00:16:46,760 Slutligen ska vi lägga till en snabb skicka-knappen. 283 00:16:46,760 --> 00:16:50,370 Type = "submit" class = "BTN btn-primär". 284 00:16:50,370 --> 00:16:53,370 285 00:16:53,370 --> 00:16:55,340 Så dessa är alla funktioner i Bootstrap så 286 00:16:55,340 --> 00:16:58,510 att detta kan läggas ut på ett sätt som är 287 00:16:58,510 --> 00:17:03,730 offer för användaren, snarare än nakna HTML. 288 00:17:03,730 --> 00:17:06,250 >> Så vi har definierat styrenheten här. 289 00:17:06,250 --> 00:17:08,930 Vi har definierat en mycket enkel vy. 290 00:17:08,930 --> 00:17:12,339 Men vad som saknas är bindväv. 291 00:17:12,339 --> 00:17:15,420 Så på denna punkt, Laravel har ingen aning om hur 292 00:17:15,420 --> 00:17:18,312 vi ska faktiskt åtkomst till denna regulator. 293 00:17:18,312 --> 00:17:20,270 Så detta definieras i en fil som heter routes.php. 294 00:17:20,270 --> 00:17:22,780 295 00:17:22,780 --> 00:17:24,310 Och just nu har vi en rutt. 296 00:17:24,310 --> 00:17:29,060 Vilket är när vi går till hem väg för denna webbplats, 297 00:17:29,060 --> 00:17:33,140 det kommer att göra indexstyrenheten. 298 00:17:33,140 --> 00:17:38,880 Så här vad vi behöver göra är att genomföra en ny väg för oss att skapa ett inlägg. 299 00:17:38,880 --> 00:17:41,910 >> Så vi använder den här metoden få, som specificerar 300 00:17:41,910 --> 00:17:48,650 att när en användare försöker att få detta page-- specifikt 301 00:17:48,650 --> 00:17:52,850 posten slash nya page-- vad vi ska göra 302 00:17:52,850 --> 00:18:02,060 är använd regulatorn kallas BlogController nytt inlägg. 303 00:18:02,060 --> 00:18:03,460 Det som vi just skapat. 304 00:18:03,460 --> 00:18:08,090 Och sedan kommer vi att alias det som newPost. 305 00:18:08,090 --> 00:18:17,460 306 00:18:17,460 --> 00:18:19,850 Vi kommer att skapa en annan funktion i en liten bit. 307 00:18:19,850 --> 00:18:23,520 Men vad är här under nyckeln "som" är vad 308 00:18:23,520 --> 00:18:28,195 vi kan ersätta inom våra Blade mallar. 309 00:18:28,195 --> 00:18:32,390 310 00:18:32,390 --> 00:18:36,230 Så för nu, låt oss faktiskt också säga rutt. 311 00:18:36,230 --> 00:18:38,380 Så vi kommer också att skapa en styrenhet 312 00:18:38,380 --> 00:18:41,020 så att vi kan skapa dessa tjänster. 313 00:18:41,020 --> 00:18:46,940 Så om en användare postar till sidan inlägget slash nytt, vad vi ska göra 314 00:18:46,940 --> 00:18:51,350 är använder en regulator som vi kommer att skapa kort 315 00:18:51,350 --> 00:18:56,160 kallas BlogController vid createPost. 316 00:18:56,160 --> 00:19:01,929 Och vi kommer att alias detta med så createPost. 317 00:19:01,929 --> 00:19:03,380 Cool. 318 00:19:03,380 --> 00:19:05,811 >> Några frågor? 319 00:19:05,811 --> 00:19:06,310 Cool. 320 00:19:06,310 --> 00:19:09,790 Så låt oss köra vad vi har hittills. 321 00:19:09,790 --> 00:19:16,930 Så om vi gör php hantverkare tjäna, Vi kommer att se massor av fel. 322 00:19:16,930 --> 00:19:20,385 Så det ser ut som vi har en syntaxfel på linjer linje 27. 323 00:19:20,385 --> 00:19:20,885 Ah. 324 00:19:20,885 --> 00:19:21,718 Saknas ett semikolon. 325 00:19:21,718 --> 00:19:24,900 326 00:19:24,900 --> 00:19:32,870 Så om vi går till 8.000, ser du inget här ännu. 327 00:19:32,870 --> 00:19:34,740 Så detta är standard hemsidan. 328 00:19:34,740 --> 00:19:37,730 >> Men om vi går att posta slash nya, hej. 329 00:19:37,730 --> 00:19:40,425 Det blir den form som vi just skapat. 330 00:19:40,425 --> 00:19:42,550 Just nu har vi inte genomfört funktionaliteten 331 00:19:42,550 --> 00:19:44,060 om när vi trycker på skicka. 332 00:19:44,060 --> 00:19:47,110 Så om vi klickar på Submit knapp, det kommer att köra ett fel. 333 00:19:47,110 --> 00:19:49,840 Men vi kommer att kod som just nu, precis vad vi 334 00:19:49,840 --> 00:19:54,840 vill göra när en användare lämnar denna form. 335 00:19:54,840 --> 00:19:55,770 >> Så låt oss göra det. 336 00:19:55,770 --> 00:19:57,380 Gå tillbaka till Controllers filen. 337 00:19:57,380 --> 00:20:00,180 Vad vi ska göra är genomföra denna nya funktion 338 00:20:00,180 --> 00:20:04,360 som tillåter oss att skapa ett inlägg. 339 00:20:04,360 --> 00:20:07,370 340 00:20:07,370 --> 00:20:08,990 Deklarera ny funktion. 341 00:20:08,990 --> 00:20:11,527 Offentlig funktion createPost. 342 00:20:11,527 --> 00:20:14,610 Och denna funktion kommer att bli en lite mer sofistikerad än vad 343 00:20:14,610 --> 00:20:15,559 vi hade tidigare. 344 00:20:15,559 --> 00:20:18,350 Men du ser här att vi inte är kommer att faktiskt skriva någon SQL. 345 00:20:18,350 --> 00:20:20,980 Den ORM, den vältalige ORM, kommer att tillåta 346 00:20:20,980 --> 00:20:26,400 oss att göra detta i en del sätt en mer elegant sätt. 347 00:20:26,400 --> 00:20:29,140 >> Så vi kommer att skapa ett nytt inlägg. 348 00:20:29,140 --> 00:20:34,120 Och här är vi instansiera ett nytt objekt 349 00:20:34,120 --> 00:20:38,080 från den modell som vi bara skapat, eftermodellen. 350 00:20:38,080 --> 00:20:44,450 Och vad vi ska göra är att ställa in title attributet för detta med hjälp av något 351 00:20:44,450 --> 00:20:47,380 som vi får från servern. 352 00:20:47,380 --> 00:20:52,060 Så detta liknar vad vi hade tidigare i CS50 Finans 353 00:20:52,060 --> 00:20:57,750 där vi skulle göra, med hjälp av Super Global Post söker titeln. 354 00:20:57,750 --> 00:21:01,600 >> Så Laravel ger viss sanitet och allt med hjälp av denna hjälpare funktion. 355 00:21:01,600 --> 00:21:07,610 Så vi skulle föredra att använda denna i stället av detta mycket grundläggande rå form från PHP. 356 00:21:07,610 --> 00:21:17,430 Och sedan vad vi ska göra är att ställa innehållet i den till Input få innehåll. 357 00:21:17,430 --> 00:21:20,429 358 00:21:20,429 --> 00:21:22,720 Vi faktiskt kommer att linda detta i en hjälpsam funktion 359 00:21:22,720 --> 00:21:31,820 att PHP ger kallas nl2br, vilket förvandlar nya linjer, NLS, till brs, raster, 360 00:21:31,820 --> 00:21:35,822 så att vi faktiskt kan ha olika punkter inom det. 361 00:21:35,822 --> 00:21:38,030 Och slutligen vad vi tänker göra är att spara det här inlägget. 362 00:21:38,030 --> 00:21:41,686 Så vi kallar funktionen spara på denna modell. 363 00:21:41,686 --> 00:21:43,800 Vi kommer att spara posten. 364 00:21:43,800 --> 00:21:49,970 Och slutligen vad vi ska göra är omdirigera användaren specifikt 365 00:21:49,970 --> 00:21:55,060 till rutten som vi ska skapa kort, alias vid viewPost. 366 00:21:55,060 --> 00:22:00,435 Och vi kommer att passera i de argument id, som är id för denna nya tjänst. 367 00:22:00,435 --> 00:22:04,280 368 00:22:04,280 --> 00:22:05,640 >> Stor. 369 00:22:05,640 --> 00:22:09,090 Så nu om vi faktiskt gå och köra detta. 370 00:22:09,090 --> 00:22:11,370 Vi kommer att lägga till en ny post. 371 00:22:11,370 --> 00:22:15,930 Låt oss säga att det här är seminariet 50. 372 00:22:15,930 --> 00:22:17,620 Och säg, säkert. 373 00:22:17,620 --> 00:22:18,240 ADSL. 374 00:22:18,240 --> 00:22:18,740 Oavsett. 375 00:22:18,740 --> 00:22:20,320 Någon sorts innehåll. 376 00:22:20,320 --> 00:22:21,180 Och skicka in det. 377 00:22:21,180 --> 00:22:23,850 Och vi kommer att märka det, hej. vägar som inte definierats. 378 00:22:23,850 --> 00:22:32,340 Men om vi tar en titt på phpMyAdmin och leta efter huruvida vår funktion 379 00:22:32,340 --> 00:22:34,370 gjorde något. 380 00:22:34,370 --> 00:22:36,670 Titta på Blog50 inlägg. 381 00:22:36,670 --> 00:22:37,720 Vi kommer att märka det, hej. 382 00:22:37,720 --> 00:22:43,530 Faktum är att vi bara skapa den blogg inlägg med de tidsstämplar som anges. 383 00:22:43,530 --> 00:22:46,600 384 00:22:46,600 --> 00:22:51,630 >> Så nu ska vi gå tillbaka och faktiskt skapa denna andra funktion i vår controller, 385 00:22:51,630 --> 00:22:54,790 specifikt viewPost controller. 386 00:22:54,790 --> 00:23:00,290 Så offentlig funktion viewPost. 387 00:23:00,290 --> 00:23:04,070 Så här vad vi ska göra, i stället av att ha tomma parenteser, 388 00:23:04,070 --> 00:23:08,800 vi vill passera på ID posten som vi skapar. 389 00:23:08,800 --> 00:23:12,800 Och härifrån vad vi ska göra är faktiskt söka i databasen för det. 390 00:23:12,800 --> 00:23:15,140 >> Så om vi vill skapa, det finns en funktion som heter 391 00:23:15,140 --> 00:23:18,860 Hitta som tillåter oss att ifrågasätta det genom ID. 392 00:23:18,860 --> 00:23:22,110 Specifikt faktiskt, ska vi använda en alternativ version av denna kallas 393 00:23:22,110 --> 00:23:27,880 Hitta eller underkänd, vilket gör att vi att sluta ut ur denna funktion, 394 00:23:27,880 --> 00:23:34,700 kasta ett undantag om ID vi passerar in finns inte. 395 00:23:34,700 --> 00:23:37,500 Och sedan ska vi göra något liknar vad vi gjorde tidigare 396 00:23:37,500 --> 00:23:41,100 där vi satt innehållet på sidan för att vara 397 00:23:41,100 --> 00:23:47,950 den renderade versionen av denna nya syn som vi ska skapa, blog.view. 398 00:23:47,950 --> 00:23:51,030 >> Och vi kommer att passera in det-- precis som i CS50 render 399 00:23:51,030 --> 00:23:56,645 function-- en ordbok av variabler. 400 00:23:56,645 --> 00:23:59,860 401 00:23:59,860 --> 00:24:04,620 Nycklarna till denna associativ array bli variabler inom mallen. 402 00:24:04,620 --> 00:24:06,830 Så vi ska göra efter inlägg. 403 00:24:06,830 --> 00:24:12,474 Så pass indirekt posten som Vi har frågas från databasen. . 404 00:24:12,474 --> 00:24:14,390 Nu vad vi ska göra är att skapa denna vy 405 00:24:14,390 --> 00:24:17,560 så att vi faktiskt kan se de blogginlägg som vi har byggt. 406 00:24:17,560 --> 00:24:20,280 >> Så vi kommer att skapa en fil som heter view.blade.php. 407 00:24:20,280 --> 00:24:25,870 408 00:24:25,870 --> 00:24:29,640 Så inne i denna mall, vad vi ska göra 409 00:24:29,640 --> 00:24:39,700 är sammanställt en enkel sida som tillåter oss att visa innehållet. 410 00:24:39,700 --> 00:24:44,280 Så vi gör avsnittet, det är före innehåll. 411 00:24:44,280 --> 00:24:46,800 Stopp. 412 00:24:46,800 --> 00:24:53,920 Och vad vi ska att göra inom här är 413 00:24:53,920 --> 00:24:56,930 skriva lite HTML för att visa den här sidan. 414 00:24:56,930 --> 00:25:03,590 >> Så vi kommer att slå in den med en prydlig nya HTML5 element som kallas artikel. 415 00:25:03,590 --> 00:25:05,790 Och här kommer vi att ha en rubrik där 416 00:25:05,790 --> 00:25:12,190 vi ska helt enkelt ha en h1, vilket inkluderar efter titeln. 417 00:25:12,190 --> 00:25:17,120 Så här, om vi ser på det här dubbla klammerparentes notation, 418 00:25:17,120 --> 00:25:21,690 Detta kommer att göra i stort sett PHP echo inlägg titel. 419 00:25:21,690 --> 00:25:25,630 Så det är en hjälp stenografi att Laravel ger oss. 420 00:25:25,630 --> 00:25:31,070 Så vi kommer att använda denna notation i stället. 421 00:25:31,070 --> 00:25:40,220 >> Och här, ska vi också skriva ut innehållet i den. 422 00:25:40,220 --> 00:25:43,480 Och här kommer vi att göra efter innehåll. 423 00:25:43,480 --> 00:25:46,514 424 00:25:46,514 --> 00:25:50,660 Och nere på botten vad vi är kommer att göra är att skapa en sidfot. 425 00:25:50,660 --> 00:25:57,690 Och i sidfoten, ska vi första display när detta var postat. 426 00:25:57,690 --> 00:26:01,320 Så detta var postat på, skapas vid. 427 00:26:01,320 --> 00:26:07,996 >> Och Laravel använder en riktigt trevlig datum bibliotek kallat Carbon. 428 00:26:07,996 --> 00:26:11,120 Så vi kan faktiskt göra något som kallas difforHumans, som ni såg tidigare. 429 00:26:11,120 --> 00:26:14,360 När vi skrev. Det ska säga, liknande, fem sekunder sedan. 430 00:26:14,360 --> 00:26:16,860 Så det här är en riktigt trevlig funktionalitet Laravel. 431 00:26:16,860 --> 00:26:19,469 432 00:26:19,469 --> 00:26:21,385 Och slutligen, vi kommer att stänga denna sidfot. 433 00:26:21,385 --> 00:26:24,900 434 00:26:24,900 --> 00:26:31,450 >> Så nu om vi går tillbaka till Hemsida ska vi 435 00:26:31,450 --> 00:26:34,490 att se inget här ännu eftersom vi har inte kodat upp hemsidan. 436 00:26:34,490 --> 00:26:40,962 Men om vi går att posta snedstreck en, vi kommer att se ett undantag. 437 00:26:40,962 --> 00:26:42,670 Någon som vet varför Vi ser ett undantag? 438 00:26:42,670 --> 00:26:44,516 Vad är det vi saknar? 439 00:26:44,516 --> 00:26:45,290 Några idéer? 440 00:26:45,290 --> 00:26:48,050 441 00:26:48,050 --> 00:26:49,790 Så vad gjorde vi gör tidigare för oss faktiskt 442 00:26:49,790 --> 00:26:52,285 att definiera hur vi kommer till speciella styrenheter? 443 00:26:52,285 --> 00:26:54,895 444 00:26:54,895 --> 00:26:55,770 >> SPEAKER 1: Vägen? 445 00:26:55,770 --> 00:26:56,519 ERIC Ouyang: Yeah. 446 00:26:56,519 --> 00:26:58,070 Så vi har fortfarande att definiera rutten. 447 00:26:58,070 --> 00:26:59,794 Så vi går tillbaka hit för att routes.php. 448 00:26:59,794 --> 00:27:01,710 Du kommer att märka att vi har faktiskt inte definierat 449 00:27:01,710 --> 00:27:05,010 hur vi kommer att få till denna regulator. 450 00:27:05,010 --> 00:27:06,780 Så nu ska vi definiera den vägen. 451 00:27:06,780 --> 00:27:09,280 Det är ganska enkelt, liknar vad vi gjorde tidigare. 452 00:27:09,280 --> 00:27:13,910 Men vad vi ska märka här är att vi kommer att ha en platshållare. 453 00:27:13,910 --> 00:27:18,730 >> Så om vi gör route.get snedstreck inlägget ID. 454 00:27:18,730 --> 00:27:24,290 Så ID är nu vad som kommer att ledas in i regulatorn. 455 00:27:24,290 --> 00:27:27,820 Detta kommer att använda controller att vi bara 456 00:27:27,820 --> 00:27:33,560 skapas, BlogController vid viewPost. 457 00:27:33,560 --> 00:27:36,420 Och vi kommer att alias detta som viewPost. 458 00:27:36,420 --> 00:27:46,544 459 00:27:46,544 --> 00:27:47,490 Stor. 460 00:27:47,490 --> 00:27:49,470 Så nu ska vi skapa denna rutt. 461 00:27:49,470 --> 00:27:52,100 >> Så nu om vi går här och uppdatera den här sidan, 462 00:27:52,100 --> 00:27:54,410 vi faktiskt har vår nya blogginlägg. 463 00:27:54,410 --> 00:27:57,710 Så detta är vad vi skapade tidigare. 464 00:27:57,710 --> 00:28:01,320 Mycket enkel sida, men visar blogginlägg som vi just skapat. 465 00:28:01,320 --> 00:28:04,210 466 00:28:04,210 --> 00:28:04,760 Cool. 467 00:28:04,760 --> 00:28:08,880 Och om vi faktiskt gå igenom hela processen för att skapa ett nytt blogginlägg, 468 00:28:08,880 --> 00:28:11,700 vi kommer att märka att allt omdirigeringar ordentligt. 469 00:28:11,700 --> 00:28:12,950 Om jag säger, "Hej. 470 00:28:12,950 --> 00:28:15,710 Jag är Jonathan Tan. " 471 00:28:15,710 --> 00:28:18,550 Säg, "Det här är mitt blogginlägg." 472 00:28:18,550 --> 00:28:22,830 Och skicka in det, detta kommer att skapa denna nya blogginlägg med ID 2, 473 00:28:22,830 --> 00:28:28,920 vilka steg från vad vi hade tidigare och visar det ordentligt. 474 00:28:28,920 --> 00:28:30,760 Grymt. 475 00:28:30,760 --> 00:28:32,930 >> Några frågor? 476 00:28:32,930 --> 00:28:33,430 Ja? 477 00:28:33,430 --> 00:28:36,537 >> TALARE 2: Gör Laravel handtag sanering och allt för dig? 478 00:28:36,537 --> 00:28:37,245 ERIC Ouyang: Ja. 479 00:28:37,245 --> 00:28:42,990 Så när vi såg tidigare när vi gjorde ingångs kolon kolon få, 480 00:28:42,990 --> 00:28:47,720 som sanitates någon SQL injektioner och allt 481 00:28:47,720 --> 00:28:51,660 att vi kanske vill utföra, om vi är en illvillig användare av webbplatsen. 482 00:28:51,660 --> 00:28:54,115 Så Laravel hanterar mycket av att bakom kulisserna. 483 00:28:54,115 --> 00:28:57,030 Bra fråga. 484 00:28:57,030 --> 00:29:00,390 >> Så låt oss ta en titt på hemsidan. 485 00:29:00,390 --> 00:29:03,220 486 00:29:03,220 --> 00:29:06,790 Så om vi först gå tillbaka till controller för hemsidan, 487 00:29:06,790 --> 00:29:08,740 du kommer att märka att det gör inte mycket här. 488 00:29:08,740 --> 00:29:11,620 Du kommer att märka att vi inte är passerar in i denna regulator 489 00:29:11,620 --> 00:29:13,830 något särskilt hjälpsam. 490 00:29:13,830 --> 00:29:16,660 Det är bara den här indexfilen. 491 00:29:16,660 --> 00:29:18,770 >> Så låt oss gå in i detta något användbart. 492 00:29:18,770 --> 00:29:21,450 Och specifikt är vi kommer att passera i inlägg. 493 00:29:21,450 --> 00:29:28,740 Och Laravel tillåter oss att göra inlägg alls, vilket 494 00:29:28,740 --> 00:29:30,625 ger oss möjlighet att få alla inlägg. 495 00:29:30,625 --> 00:29:33,160 496 00:29:33,160 --> 00:29:35,730 Om vi ​​nu går tillbaka till index.php, ser du, hej. 497 00:29:35,730 --> 00:29:37,060 Inget här ännu. 498 00:29:37,060 --> 00:29:41,290 Men vad vi vill göra här är faktiskt iterera igenom, 499 00:29:41,290 --> 00:29:46,420 gör en foreach loop över de tjänster som ger oss möjlighet att skriva ut stolparna. 500 00:29:46,420 --> 00:29:53,180 >> Så foreach inlägg som post, vad vi vill göra 501 00:29:53,180 --> 00:29:57,252 är skriva ut innehållet av blogginlägg. 502 00:29:57,252 --> 00:30:00,210 Men en sak du kommer att märka är att vi faktiskt skrev det mesta av denna kod 503 00:30:00,210 --> 00:30:01,370 redan i view.blade.php. 504 00:30:01,370 --> 00:30:04,070 505 00:30:04,070 --> 00:30:08,640 Så vad vi ska faktiskt göra är använd en trevlig hjälpsam inslag i Blade 506 00:30:08,640 --> 00:30:11,300 och faktor ut denna gemensamma kod. 507 00:30:11,300 --> 00:30:12,570 Så vi går här. 508 00:30:12,570 --> 00:30:16,210 >> Vi kommer att ta det här innehållet just här, och vad vi ska göra 509 00:30:16,210 --> 00:30:18,170 är att skapa en ny mapp. 510 00:30:18,170 --> 00:30:20,364 Låt oss bara kalla det Partials. 511 00:30:20,364 --> 00:30:22,530 Och här kommer vi att skapa en post.blade.php. 512 00:30:22,530 --> 00:30:26,570 513 00:30:26,570 --> 00:30:33,100 Så här, vi räknade ut hur som vi vill visa dessa tjänster. 514 00:30:33,100 --> 00:30:38,690 Och här vad vi ska göra i stället för faktiskt ha denna HTML direkt, 515 00:30:38,690 --> 00:30:41,530 vi kommer att använda detta direktiv kallas inkluderar blog.partials.post. 516 00:30:41,530 --> 00:30:45,210 517 00:30:45,210 --> 00:30:50,635 >> Och vad vi ska göra här är passerar på posten på sidan. 518 00:30:50,635 --> 00:30:57,076 519 00:30:57,076 --> 00:31:01,050 Så nu om vi går tillbaka hit, vi ska märker att funktionaliteten är fortfarande 520 00:31:01,050 --> 00:31:01,550 samma. 521 00:31:01,550 --> 00:31:05,140 Men nu har vi det här räknade ut kod, denna HTML. 522 00:31:05,140 --> 00:31:07,070 Så vi kan använda den i index. 523 00:31:07,070 --> 00:31:09,090 Så här, är detta mycket enkelt. 524 00:31:09,090 --> 00:31:17,870 Allt vi gör är inkludera blog.partials.post och matris. 525 00:31:17,870 --> 00:31:20,845 Och någonstans att innan, gör vi efter inlägg. 526 00:31:20,845 --> 00:31:23,830 527 00:31:23,830 --> 00:31:28,182 >> Så nu om vi går tillbaka till hemsida, vi får se det, hej. 528 00:31:28,182 --> 00:31:30,515 Vi har en lista på alla blogginlägg som vi hade innan. 529 00:31:30,515 --> 00:31:34,640 530 00:31:34,640 --> 00:31:37,700 Vi kanske vill lägga till några "om" villkor och "else" betingelser 531 00:31:37,700 --> 00:31:39,979 så att om vi inte har något på bloggen, 532 00:31:39,979 --> 00:31:41,520 Vi vill visa något användbart. 533 00:31:41,520 --> 00:31:42,570 Liksom, hej. 534 00:31:42,570 --> 00:31:44,340 Det finns inget innehåll ännu på bloggen. 535 00:31:44,340 --> 00:31:47,670 Och om ni faktiskt titta på distributionskoden på GitHub, 536 00:31:47,670 --> 00:31:50,100 ser du ett exempel på hur vi gör det. 537 00:31:50,100 --> 00:31:52,770 538 00:31:52,770 --> 00:31:54,110 >> Cool. 539 00:31:54,110 --> 00:31:54,890 Några frågor? 540 00:31:54,890 --> 00:31:55,510 Ja. 541 00:31:55,510 --> 00:31:57,468 >> TALARE 2: Jag antar bara en grundläggande fråga. 542 00:31:57,468 --> 00:31:59,480 Tillbaka på vägen. 543 00:31:59,480 --> 00:32:00,230 ERIC Ouyang: Yeah. 544 00:32:00,230 --> 00:32:01,935 Om vi ​​tar en titt på vägar. 545 00:32:01,935 --> 00:32:06,018 >> TALARE 2: Var gör uses.blogcontroller på skapa inlägg, 546 00:32:06,018 --> 00:32:07,560 vad betyder det rikta oss till? 547 00:32:07,560 --> 00:32:08,310 ERIC Ouyang: Yeah. 548 00:32:08,310 --> 00:32:08,550 Yeah. 549 00:32:08,550 --> 00:32:09,716 >> TALARE 2: Eller vad är that-- 550 00:32:09,716 --> 00:32:12,620 ERIC Ouyang: Så, ta en titt, säger till exempel, denna väg här. 551 00:32:12,620 --> 00:32:17,190 Den första delen är själva URL som användaren kommer att gå till. 552 00:32:17,190 --> 00:32:19,930 Och denna array här, associativ array, definierar 553 00:32:19,930 --> 00:32:24,520 hur vi vill ha det Ansökan agera som svar på det. 554 00:32:24,520 --> 00:32:29,090 Så använder är regulatorn, den funktion som vi 555 00:32:29,090 --> 00:32:31,610 vill ringa när en användaren går till denna URL. 556 00:32:31,610 --> 00:32:35,190 Så viewPost just här var en funktion som vi definierat inne 557 00:32:35,190 --> 00:32:36,100 av BlogController-- 558 00:32:36,100 --> 00:32:37,160 >> TALARE 2: Jag ser. 559 00:32:37,160 --> 00:32:39,368 >> ERIC Ouyang: --so att vi kan faktiskt göra en vy, 560 00:32:39,368 --> 00:32:42,590 utföra vissa beräkningar, interagera med SQL-databas. 561 00:32:42,590 --> 00:32:43,560 >> TALARE 2: OK. 562 00:32:43,560 --> 00:32:46,960 >> ERIC Ouyang: Och sedan den andra del ", som" är ett alias som vi använder. 563 00:32:46,960 --> 00:32:50,714 Så om vi märker när Vi skapade formuläret, 564 00:32:50,714 --> 00:32:52,380 du kommer att märka att URL :: routecreatePost. 565 00:32:52,380 --> 00:32:55,000 566 00:32:55,000 --> 00:32:58,330 Så det ersätter i själva URL så att vi inte är hårt 567 00:32:58,330 --> 00:33:02,940 kodning dessa i så att vi kan ändra det gång, säger om vi ville byta namn. 568 00:33:02,940 --> 00:33:06,055 Istället för stolpen snedstreck nytt, vi vill göra något liknande, p 569 00:33:06,055 --> 00:33:09,490 slash nytt bara för att rengöra upp våra webbadresser en bit. 570 00:33:09,490 --> 00:33:14,740 Vi skulle ändra det på ett ställe i stället än i alla de olika filer. 571 00:33:14,740 --> 00:33:15,451 >> Cool. 572 00:33:15,451 --> 00:33:15,950 Det är bra. 573 00:33:15,950 --> 00:33:20,070 Så nu har vi en mycket grundläggande blogg plattform. 574 00:33:20,070 --> 00:33:24,260 Vi vill nog att lägga i en knapp så att vi faktiskt kan skapa nya inlägg. 575 00:33:24,260 --> 00:33:27,850 Så om vi tar en titt på Layout Master, 576 00:33:27,850 --> 00:33:31,280 vi har en sektion som heter Header Höger att vi bara har definierat upp på toppen. 577 00:33:31,280 --> 00:33:34,820 Så vi kan lägga till knappar till toppen av huvudet. 578 00:33:34,820 --> 00:33:43,950 >> Så om vi går till index.blade.php, faktiskt gör är att definiera vad som händer inne i här. 579 00:33:43,950 --> 00:33:46,970 Så denna Header högersektion, vad vi ska göra 580 00:33:46,970 --> 00:33:55,240 är att lägga in en knapp för att gå till URL definieras av rutten nytt inlägg. 581 00:33:55,240 --> 00:33:58,270 582 00:33:58,270 --> 00:34:01,660 Bara för att rensa upp och göra det vackra och allt Bootstrap, 583 00:34:01,660 --> 00:34:04,630 vi ska göra detta en standardknapp. 584 00:34:04,630 --> 00:34:07,794 Låt oss bara göra det stort för skojs skull. 585 00:34:07,794 --> 00:34:09,969 >> Och inuti den, kan vi sätta lite text. 586 00:34:09,969 --> 00:34:14,030 Men vad Bootstrap ger är glyphicons. 587 00:34:14,030 --> 00:34:17,840 Så vi kan faktiskt lägga in att trevlig penna som vi såg tidigare. 588 00:34:17,840 --> 00:34:20,570 589 00:34:20,570 --> 00:34:21,781 Glyphicon. 590 00:34:21,781 --> 00:34:22,489 Glyphicon-penna. 591 00:34:22,489 --> 00:34:25,449 592 00:34:25,449 --> 00:34:35,340 Så detta ger oss möjlighet att sätta i en ikon i stället för text. 593 00:34:35,340 --> 00:34:38,960 Nu om vi slutar, här kommer att definiera detta avsnitt. 594 00:34:38,960 --> 00:34:39,460 Och, hej. 595 00:34:39,460 --> 00:34:45,000 Vi har en fin knapp som länkar oss direkt till lägga ett blogginlägg sida. 596 00:34:45,000 --> 00:34:46,659 >> Så vi har en ganska enkel blogg. 597 00:34:46,659 --> 00:34:49,710 Vi kan lägga saker till den. 598 00:34:49,710 --> 00:34:53,650 Men vad vi i allmänhet förväntar från bloggar är att kommentera. 599 00:34:53,650 --> 00:34:57,340 Så det är verkligen viktigt för oss att ha, säga om någon annan besöker en webbplats 600 00:34:57,340 --> 00:35:00,620 och verkligen gillar det stolpen som de kan engagera sig i diskussioner 601 00:35:00,620 --> 00:35:03,100 med andra människor som besöker sidan. 602 00:35:03,100 --> 00:35:07,050 Så vi kommer att gå och skapa en nya databastabell och en ny modell 603 00:35:07,050 --> 00:35:12,220 så att vi kan associera kommenterar med inlägg. 604 00:35:12,220 --> 00:35:17,370 >> Så det första steget, precis som tidigare, är att vi måste köra en migrering. 605 00:35:17,370 --> 00:35:21,982 Så som förut, vi gör php hantverkare migrera: gör. 606 00:35:21,982 --> 00:35:24,440 Och vi kommer att skapa en kallas create_comments_table. 607 00:35:24,440 --> 00:35:29,520 608 00:35:29,520 --> 00:35:36,080 Detta kommer att skapa en fil som har vår nya migration. 609 00:35:36,080 --> 00:35:40,170 Och vi kommer att, liksom innan, definiera en ny tabell. 610 00:35:40,170 --> 00:35:42,773 Så Schema :: skapa ett Tabellen heter kommentarer. 611 00:35:42,773 --> 00:35:47,410 612 00:35:47,410 --> 00:35:48,430 Denna funktion här. 613 00:35:48,430 --> 00:35:51,620 Och inuti denna tabell vad vi ska göra är att först, 614 00:35:51,620 --> 00:35:54,260 som förut, tilldela ett ID. 615 00:35:54,260 --> 00:35:56,552 Ökar ID. 616 00:35:56,552 --> 00:36:05,440 >> Vi kommer att tillåta användare att associera deras namn med en viss kommentar. 617 00:36:05,440 --> 00:36:10,080 Vi kommer att ha en del innehåll som går med på detta, textinnehåll. 618 00:36:10,080 --> 00:36:13,580 619 00:36:13,580 --> 00:36:15,910 Och här vad vi ska gör är något annorlunda. 620 00:36:15,910 --> 00:36:23,620 Vi kommer att skapa ett heltal som kallas post_id som 621 00:36:23,620 --> 00:36:32,100 kommer att betyda vad inlägget en särskild kommentar går med. 622 00:36:32,100 --> 00:36:35,410 >> Dessutom, vi faktiskt kommer att ställa en främmande avgörande begränsning på detta. 623 00:36:35,410 --> 00:36:37,750 Så MySQL kommer driva det. 624 00:36:37,750 --> 00:36:39,840 Vi försöker inte tilldela kommentar nummer 625 00:36:39,840 --> 00:36:44,440 5 att posta 5.000 om vi har inte hade 5.000 inlägg på det. 626 00:36:44,440 --> 00:36:50,240 Så vad vi gör här, vi gör utländska post_id 627 00:36:50,240 --> 00:37:02,046 kommer att vara associerad med ID-fältet från tabell inlägg. 628 00:37:02,046 --> 00:37:05,900 Och vi ska faktiskt göra något annars bra, är onDelete. 629 00:37:05,900 --> 00:37:11,180 >> Så om vi tar bort en del posta från databasen, 630 00:37:11,180 --> 00:37:15,507 att vi vill kaskad av raderar för kommentarer också. 631 00:37:15,507 --> 00:37:18,090 För det är inte till stor hjälp för oss att ha synpunkter på inlägg 632 00:37:18,090 --> 00:37:19,900 som inte existerar. 633 00:37:19,900 --> 00:37:23,764 Och slutligen, som förut, vi är kommer att ställa tidsstämplar på denna. 634 00:37:23,764 --> 00:37:28,690 635 00:37:28,690 --> 00:37:33,510 Och precis innan, ska vi har den omvända migrationen vara 636 00:37:33,510 --> 00:37:37,920 tappa kommentarer tabellen. 637 00:37:37,920 --> 00:37:40,070 >> Så nu om vi går tillbaka hit kommer vi 638 00:37:40,070 --> 00:37:43,110 att köra den här migration, hantverkare migrera. 639 00:37:43,110 --> 00:37:46,400 Och nu är det tillämpat denna migration som vi just skapat. 640 00:37:46,400 --> 00:37:50,080 Så om vi en titt på phpMyAdmin, vi gör, i själva verket, nu 641 00:37:50,080 --> 00:37:53,210 har en kommentar tabell som har struktur som vi just angivit. 642 00:37:53,210 --> 00:37:56,900 643 00:37:56,900 --> 00:37:59,610 Så som förut, vi är kommer att skapa en ny modell 644 00:37:59,610 --> 00:38:04,450 till abstrakt SQL bordet att vi just skapat. 645 00:38:04,450 --> 00:38:05,450 >> Så låt oss Lägg till en ny fil. 646 00:38:05,450 --> 00:38:06,908 Vi kommer att kalla det comment.php. 647 00:38:06,908 --> 00:38:10,160 648 00:38:10,160 --> 00:38:15,490 Och detta faktiskt kommer att vara ganska okomplicerat med en liten förändring 649 00:38:15,490 --> 00:38:17,520 från vad vi hade tidigare. 650 00:38:17,520 --> 00:38:22,790 Så klass Kommentar utökar Vältalig. 651 00:38:22,790 --> 00:38:25,930 Och vad vi ska att göra här är definiera 652 00:38:25,930 --> 00:38:31,360 en funktion som är relation med andra modeller. 653 00:38:31,360 --> 00:38:39,250 Så vi kommer att ha ett inlägg funktion Här som returnerar detta förhållande. 654 00:38:39,250 --> 00:38:43,330 Så vi anger att detta hör att posta, 655 00:38:43,330 --> 00:38:49,200 säga att det finns ett inlägg att denna kommentaren tillhör. 656 00:38:49,200 --> 00:38:53,917 >> Detta har faktiskt vara kapital P för modellen. 657 00:38:53,917 --> 00:38:56,500 Och nu precis på andra luckan sida, måste vi säga det, hej. 658 00:38:56,500 --> 00:38:58,160 Inlägg har synpunkter. 659 00:38:58,160 --> 00:39:03,030 Så vad vi ska göra är definiera offentliga kommentarer funktions. 660 00:39:03,030 --> 00:39:07,100 661 00:39:07,100 --> 00:39:13,620 Och här är tillbaka Detta har många Kommentera. 662 00:39:13,620 --> 00:39:16,630 663 00:39:16,630 --> 00:39:22,010 Så nu magiskt när vi har ett inlägg, vi kan få attribut kommentarer 664 00:39:22,010 --> 00:39:25,615 och det ska fylla den med de information från databasen. 665 00:39:25,615 --> 00:39:32,950 666 00:39:32,950 --> 00:39:38,220 >> Så låt oss faktiskt gå igenom och lägga till en ny funktion till vår uppfattning fil 667 00:39:38,220 --> 00:39:43,600 så att vi kan både display och skapa kommentarer. 668 00:39:43,600 --> 00:39:54,010 669 00:39:54,010 --> 00:39:56,865 Så vi kommer att definiera ett nytt avsnitt. 670 00:39:56,865 --> 00:39:59,890 Låt oss bara separera den med en horisontell linje. 671 00:39:59,890 --> 00:40:04,065 Avsnitt id = "kommentarer". 672 00:40:04,065 --> 00:40:06,990 Vad vi ska göra här är, liksom tidigare, 673 00:40:06,990 --> 00:40:09,880 iterera igenom alla kommentarer. 674 00:40:09,880 --> 00:40:12,960 Så egentligen hur vi gör detta är, som jag nämnde, ganska magiskt. 675 00:40:12,960 --> 00:40:14,440 >> Vi gör skriva kommentarer. 676 00:40:14,440 --> 00:40:17,410 677 00:40:17,410 --> 00:40:22,710 Och då kan vi göra det för varje slinga över varje kommentarerna. 678 00:40:22,710 --> 00:40:25,740 Och vad vi ska göra är div class kommentar, 679 00:40:25,740 --> 00:40:29,240 och vi ska faktiskt skriva ut den här kommentaren. 680 00:40:29,240 --> 00:40:34,150 Så visa att hey, kommentera name-- personen 681 00:40:34,150 --> 00:40:38,080 som postat detta comment-- säger dot dot dot. 682 00:40:38,080 --> 00:40:41,240 Vi kommer att sätta detta i ett block citat, bara för att det ser trevligt. 683 00:40:41,240 --> 00:40:46,470 Och sedan kommentera innehållsblock citat. 684 00:40:46,470 --> 00:40:49,790 685 00:40:49,790 --> 00:40:50,892 Och foreach. 686 00:40:50,892 --> 00:40:53,100 Så nu detta kommer att slinga genom alla kommentarer 687 00:40:53,100 --> 00:40:56,500 som är associerad med var och en av stolparna 688 00:40:56,500 --> 00:41:00,960 och visa var och en av dessa synpunkter. 689 00:41:00,960 --> 00:41:05,120 Jag ska lägga till en annan avdelning ner Här, som tillåter oss att lägga till en kommentar. 690 00:41:05,120 --> 00:41:07,400 Så h3 class. 691 00:41:07,400 --> 00:41:09,580 Sätt en titel här. 692 00:41:09,580 --> 00:41:10,934 Lägg till en kommentar. 693 00:41:10,934 --> 00:41:13,886 694 00:41:13,886 --> 00:41:15,700 Och vi kommer att definiera en ny form. 695 00:41:15,700 --> 00:41:18,730 >> Så som förut, vi är kommer att göra form action. 696 00:41:18,730 --> 00:41:22,740 Och här är den nya åtgärden är vi kommer att definiera en ny styrenhet som 697 00:41:22,740 --> 00:41:26,770 tillåter oss att svara för att posta önskemål om att skapa kommentarer. 698 00:41:26,770 --> 00:41:33,365 Så URL :: rutt createComment. 699 00:41:33,365 --> 00:41:37,730 Jag ska passera i parametern här. 700 00:41:37,730 --> 00:41:40,380 ID för inlägg som vi skapar kommentera. 701 00:41:40,380 --> 00:41:45,340 702 00:41:45,340 --> 00:41:50,280 Och sedan förfarandet enligt denna formen kommer att vara inlägg. 703 00:41:50,280 --> 00:41:57,240 >> Nu ska vi lägga in en två fält, formulär grupp. 704 00:41:57,240 --> 00:42:04,670 Detta kommer att bli en ingång med name "namn" och class = "formkontroll", 705 00:42:04,670 --> 00:42:14,250 type = "text", och med det platshållare = "Ditt namn." 706 00:42:14,250 --> 00:42:19,380 Vi kommer även att definiera annan form fält, vilket 707 00:42:19,380 --> 00:42:22,970 kommer att bli en text område som vi hade tidigare. 708 00:42:22,970 --> 00:42:25,480 Precis som tidigare, kalla det innehåll. 709 00:42:25,480 --> 00:42:31,160 Class = "formkontroll." 710 00:42:31,160 --> 00:42:41,660 Platshållare = "Skriv här." 711 00:42:41,660 --> 00:42:44,100 >> Och bara så att vi kan faktiskt skicka det, 712 00:42:44,100 --> 00:42:55,740 skicka typ och class = "BTN btn-primära." 713 00:42:55,740 --> 00:42:57,005 Stäng formuläret. 714 00:42:57,005 --> 00:42:59,010 Stäng den här åtgärden. 715 00:42:59,010 --> 00:43:06,580 Så nu om vi uppdatera sidan där vi har, säg, en viss tjänst. 716 00:43:06,580 --> 00:43:10,310 Vi måste starta om servern. 717 00:43:10,310 --> 00:43:12,340 PHP hantverkare tjäna. 718 00:43:12,340 --> 00:43:15,630 719 00:43:15,630 --> 00:43:18,334 Starta detta. 720 00:43:18,334 --> 00:43:19,500 Vi måste definiera rutten. 721 00:43:19,500 --> 00:43:25,090 Men för nu, låt oss bara ta detta ut så att vi faktiskt kan visa dig 722 00:43:25,090 --> 00:43:28,750 vad sidan ser ut, och sedan vi faktiskt skapa den vägen. 723 00:43:28,750 --> 00:43:29,250 Så, hej. 724 00:43:29,250 --> 00:43:37,080 Vi har denna nya form här nere så att vi kan skapa kommentarer. 725 00:43:37,080 --> 00:43:39,950 Så låt oss faktiskt definiera en funktion inom regulatorn 726 00:43:39,950 --> 00:43:43,020 så att vi kan lägga till kommentarer. 727 00:43:43,020 --> 00:43:43,650 Låt oss gå tillbaka. 728 00:43:43,650 --> 00:43:48,420 Och inom blogcontroller.php, vad vi ska göra 729 00:43:48,420 --> 00:43:51,620 är att skapa en ny funktion kallas skapar kommentar. 730 00:43:51,620 --> 00:43:54,220 731 00:43:54,220 --> 00:43:57,040 >> Offentlig funktion createComment. 732 00:43:57,040 --> 00:44:00,130 Detta kommer att ha en enda parametern, ID för stolparna 733 00:44:00,130 --> 00:44:02,280 att vi kommentera. 734 00:44:02,280 --> 00:44:04,790 Och precis innan, vi är kommer att först få posten. 735 00:44:04,790 --> 00:44:10,790 Så posta, findOrfail id. 736 00:44:10,790 --> 00:44:15,020 Efteråt kommer vi att skapa en ny kommentar. 737 00:44:15,020 --> 00:44:18,880 Så kommentera = ny kommentar. 738 00:44:18,880 --> 00:44:26,820 Kommentar name = Ingång :: få namn. 739 00:44:26,820 --> 00:44:39,420 Kommentera content = samma nya linjen in avbrott på Input :: få innehåll. 740 00:44:39,420 --> 00:44:43,460 >> Och slutligen, vi kommer att behöva associera den här kommentaren med posten. 741 00:44:43,460 --> 00:44:47,230 Så vi kommer att använda denna funktion, kommentarer, 742 00:44:47,230 --> 00:44:50,260 som tillåter oss att spara detta förhållande. 743 00:44:50,260 --> 00:44:54,780 Så nu denna kommentar kommer att ha automatiskt inläggets ID. 744 00:44:54,780 --> 00:44:57,640 Vi kunde också ställa in den manuellt, är men detta 745 00:44:57,640 --> 00:45:02,490 mer lättläst så långt som funktionen går. 746 00:45:02,490 --> 00:45:05,860 Och efter att vi utför detta, vad vi vill göra 747 00:45:05,860 --> 00:45:10,840 är omdirigera användaren till rutt som viewPost 748 00:45:10,840 --> 00:45:16,010 med arrayen med parameter i inläggets ID. 749 00:45:16,010 --> 00:45:20,360 750 00:45:20,360 --> 00:45:24,660 >> Och nu så att detta faktiskt funktioner, måste vi definiera den vägen. 751 00:45:24,660 --> 00:45:27,126 Rutt :: inlägg. 752 00:45:27,126 --> 00:45:32,800 Och nu ska vi kalla detta post slash ID snedstreck kommentar. 753 00:45:32,800 --> 00:45:36,725 Array använder den nya funktionen att vi just skapat. 754 00:45:36,725 --> 00:45:37,350 BlogController. 755 00:45:37,350 --> 00:45:40,820 756 00:45:40,820 --> 00:45:44,770 CreateComment som createComment. 757 00:45:44,770 --> 00:45:47,430 758 00:45:47,430 --> 00:45:50,120 Stor. 759 00:45:50,120 --> 00:45:56,150 >> Så nu förhoppningsvis om vi uppdatera sidan och lägg i en kommentar, säg, David Malan. 760 00:45:56,150 --> 00:46:00,630 761 00:46:00,630 --> 00:46:03,920 "Förhoppningsvis fungerar." 762 00:46:03,920 --> 00:46:05,216 Skicka. 763 00:46:05,216 --> 00:46:09,050 Vi, i själva verket har en kommentera detta blogginlägg. 764 00:46:09,050 --> 00:46:13,760 765 00:46:13,760 --> 00:46:14,260 Cool. 766 00:46:14,260 --> 00:46:16,790 767 00:46:16,790 --> 00:46:21,430 Så nu har vi en ganska funktionell blogginlägg. 768 00:46:21,430 --> 00:46:23,180 Vi ska bara lägga till ett par tweaks så 769 00:46:23,180 --> 00:46:29,090 att vi har lite mer användbar information om dessa inlägg. 770 00:46:29,090 --> 00:46:32,780 >> Så om vi går tillbaka till förstasidan har vi ingen mening 771 00:46:32,780 --> 00:46:38,790 hur många kommentarer är På var och en av dessa tjänster. 772 00:46:38,790 --> 00:46:41,340 Så vad vi faktiskt kommer göra är, i vår modell, 773 00:46:41,340 --> 00:46:51,250 definiera en hjälpare funktion som gör oss att specificera antalet kommentarer 774 00:46:51,250 --> 00:46:53,020 att gå med en viss tjänst. 775 00:46:53,020 --> 00:46:56,050 Så vi kommer att skapa en hjälparfunktion. 776 00:46:56,050 --> 00:46:58,020 >> Offentlig funktion. 777 00:46:58,020 --> 00:46:58,770 GetNumCommentsStr. 778 00:46:58,770 --> 00:47:02,030 779 00:47:02,030 --> 00:47:07,180 Så en sträng som anger antalet av kommentarer som går längs med den. 780 00:47:07,180 --> 00:47:12,850 Och vad vi ska göra är att säga att num = detta kommentarer räknas. 781 00:47:12,850 --> 00:47:15,150 Så vi kommer att räkna antalet kommentarer. 782 00:47:15,150 --> 00:47:22,900 Och om detta antal är lika med 1, är vi bara att återvända 1 kommentar. 783 00:47:22,900 --> 00:47:28,890 Och sedan annars vi vill återvända sammanfogningen av num och kommentarer, 784 00:47:28,890 --> 00:47:31,890 så vi får pluralise korrekta. 785 00:47:31,890 --> 00:47:33,380 Bara göra detta ett enda anbud. 786 00:47:33,380 --> 00:47:36,040 787 00:47:36,040 --> 00:47:37,640 En kommentar. 788 00:47:37,640 --> 00:47:41,140 >> Och nu kan vi använda den här funktionen direkt inne i vår uppfattning. 789 00:47:41,140 --> 00:47:44,510 Så om vi går tillbaka till partiella inlägg som vi skapade, 790 00:47:44,510 --> 00:47:49,370 Nu vill vi faktiskt visa antalet kommentarer. 791 00:47:49,370 --> 00:47:52,660 Så vad vi kan göra är post, använda denna funktion 792 00:47:52,660 --> 00:47:57,230 att vi bara skapats för att visa antalet kommentarer. 793 00:47:57,230 --> 00:48:00,440 Så om vi nu uppdatera, det gör, faktiskt, display 794 00:48:00,440 --> 00:48:02,240 siffer kommentarer att gå med på det. 795 00:48:02,240 --> 00:48:05,320 >> Om vi ​​ville vara snygga om du faktiskt titta på distributionskoden, 796 00:48:05,320 --> 00:48:07,800 vi faktiskt kan länka detta till kommentarerna. 797 00:48:07,800 --> 00:48:17,040 Om ni minns, definierade vi inom se att detta har avsnittet ID kommentarer. 798 00:48:17,040 --> 00:48:22,460 Så om vi ville verkligen att länka direkt till kommentarerna, vad 799 00:48:22,460 --> 00:48:36,000 vi skulle göra här är en href URL av rutten viewPost. 800 00:48:36,000 --> 00:48:40,550 Pass i arrayen ID av post-ID. 801 00:48:40,550 --> 00:48:46,140 Och då är vi vill gå till specifikt kommentarerna. 802 00:48:46,140 --> 00:48:49,900 >> Här ska vi stänga En tagg. 803 00:48:49,900 --> 00:48:52,950 Så nu om vi uppdatera sida, vi klickar på den här. 804 00:48:52,950 --> 00:48:54,700 Vi ska gå direkt till avsnittet kommentarer. 805 00:48:54,700 --> 00:48:57,580 Om vi ​​hade en längre inlägg, kan du faktiskt se denna studs ner. 806 00:48:57,580 --> 00:49:02,668 Men du kommer att märka att det är inte överst på sidan. 807 00:49:02,668 --> 00:49:04,090 Cool. 808 00:49:04,090 --> 00:49:04,600 Stor. 809 00:49:04,600 --> 00:49:08,582 Så det är en ganska okomplicerad exempel på något enkelt 810 00:49:08,582 --> 00:49:09,790 att du kan göra med Laravel. 811 00:49:09,790 --> 00:49:13,230 >> Men du kan märka här att Vi har gjort en massa saker 812 00:49:13,230 --> 00:49:16,200 med ganska liten mängd kod. 813 00:49:16,200 --> 00:49:19,420 Laravel tillåter oss att göra det SQL-frågor bakom kulisserna. 814 00:49:19,420 --> 00:49:21,960 Det gör sanitet för oss bakom kulisserna. 815 00:49:21,960 --> 00:49:25,940 Tillåter oss att göra dessa relationer mycket lätt utan att vi behöver 816 00:49:25,940 --> 00:49:33,350 att göra någon SQL gå uttalanden till kombinera kommentarer med vad stolparna. 817 00:49:33,350 --> 00:49:36,480 Tillåter oss att göra detta arv av mallar 818 00:49:36,480 --> 00:49:43,780 så att vi kan definiera dessa häckande filer så vi inte upprepa oss själva, 819 00:49:43,780 --> 00:49:47,020 precis som när vi hade att visning av blogginlägg 820 00:49:47,020 --> 00:49:50,770 att vi inte behöver kopiera koden klistra. 821 00:49:50,770 --> 00:49:55,450 >> Och härifrån kan du bygga alltmer komplicerade tillämpningar. 822 00:49:55,450 --> 00:49:58,370 Du kan föreställa dig om vi ville genomföra logga in, 823 00:49:58,370 --> 00:50:05,532 Vi skulle kunna säga, ta in en tredje part ramverk som tillåter oss att göra det. 824 00:50:05,532 --> 00:50:07,490 Det finns ett gäng av dem som är riktigt, riktigt 825 00:50:07,490 --> 00:50:09,970 stor som kan göra som, återställning av lösenord. 826 00:50:09,970 --> 00:50:14,450 Och det skickar en återställa lösenord e-post. 827 00:50:14,450 --> 00:50:18,260 Vi kan genomföra tillstånd så att jag kan skapa ett inlägg, 828 00:50:18,260 --> 00:50:20,350 men någon annan inte kan redigera den. 829 00:50:20,350 --> 00:50:24,610 Vi kan genomföra funktionalitet för att radera inlägg. 830 00:50:24,610 --> 00:50:28,160 >> Men du kan se här att vi har ganska mycket alla rudimentära komponenter 831 00:50:28,160 --> 00:50:31,640 att bygga några riktigt, riktigt, dynamiska och spännande webbappar. 832 00:50:31,640 --> 00:50:34,035 Så med det, jag tycker vi är bra. 833 00:50:34,035 --> 00:50:35,720 Har ni några frågor? 834 00:50:35,720 --> 00:50:36,220 Ja? 835 00:50:36,220 --> 00:50:38,090 >> TALARE 3: Hur gör du få statiskt innehåll? 836 00:50:38,090 --> 00:50:39,256 >> ERIC Ouyang: Statisk innehåll. 837 00:50:39,256 --> 00:50:45,520 Så du såg innan att när vi hade denna rätt här, det här innehållet layout, 838 00:50:45,520 --> 00:50:49,625 view make, hade vi här utan denna array efteråt. 839 00:50:49,625 --> 00:50:56,440 840 00:50:56,440 --> 00:50:59,152 Blog.index hade vi här som bara en statisk fil. 841 00:50:59,152 --> 00:51:00,860 Så om vi inte klarar någonting med till det, 842 00:51:00,860 --> 00:51:03,340 Det ska bara göra HTML direkt. 843 00:51:03,340 --> 00:51:09,240 Men om vi passerar i detta associativa rad inlägg, vilket är dynamiskt 844 00:51:09,240 --> 00:51:12,950 dras från databasen, vi kan göra sidan dynamisk. 845 00:51:12,950 --> 00:51:13,450 Cool. 846 00:51:13,450 --> 00:51:14,830 Fler frågor? 847 00:51:14,830 --> 00:51:16,786 848 00:51:16,786 --> 00:51:19,720 SPEAKER 3: Hur skulle du jämföra Laravel till kanske några andra alternativ? 849 00:51:19,720 --> 00:51:20,525 ERIC Ouyang: Visst. 850 00:51:20,525 --> 00:51:21,025 Yeah. 851 00:51:21,025 --> 00:51:23,430 Så Laravel är-- det är en stor question-- 852 00:51:23,430 --> 00:51:26,190 ett av många alternativ för webbramverk. 853 00:51:26,190 --> 00:51:31,160 Så Ruby on Rails är en som är populärt. 854 00:51:31,160 --> 00:51:34,590 Jag tror Twitter brukade vara implementeras med Ruby on Rails. 855 00:51:34,590 --> 00:51:37,600 Jag tror de har sedan bytt. 856 00:51:37,600 --> 00:51:40,780 Det finns en annan som heter FuelPHP. 857 00:51:40,780 --> 00:51:46,120 >> Så Ruby on Rails använder Ruby språket och genomför en hel del av MVC grejer 858 00:51:46,120 --> 00:51:48,200 som vi ser här. 859 00:51:48,200 --> 00:51:52,320 FuelPHP är en annan PHP ramverk. 860 00:51:52,320 --> 00:51:54,490 Django är en av mina favoriter. 861 00:51:54,490 --> 00:51:57,010 Det är ett webbramverk för Python. 862 00:51:57,010 --> 00:52:01,270 Så du kan skriva din webb app i Python. 863 00:52:01,270 --> 00:52:03,760 Så det finns en ton av dessa alternativ. 864 00:52:03,760 --> 00:52:06,170 >> Laravel, tror jag, med och stor är min favorit rätt 865 00:52:06,170 --> 00:52:08,232 nu PHP bara för att av komponenterna 866 00:52:08,232 --> 00:52:09,440 att vi talade om tidigare. 867 00:52:09,440 --> 00:52:11,910 Det är Composer aktiverat. 868 00:52:11,910 --> 00:52:15,750 Den innehåller en riktigt, riktigt uttrycks ORM system. 869 00:52:15,750 --> 00:52:18,800 Har också en riktigt häftigt mall språk som vissa av de andra 870 00:52:18,800 --> 00:52:20,630 bara inte ge. 871 00:52:20,630 --> 00:52:21,400 Och migreringar. 872 00:52:21,400 --> 00:52:23,432 Migra är awesome också. 873 00:52:23,432 --> 00:52:24,860 Cool? 874 00:52:24,860 --> 00:52:25,390 Grymt. 875 00:52:25,390 --> 00:52:27,560 Tja, tack så mycket för titta här seminariet, 876 00:52:27,560 --> 00:52:30,650 och lycka till på din slutliga projekt. 877 00:52:30,650 --> 00:52:31,616