1 00:00:00,000 --> 00:00:02,538 >> [MUSIC SPILLE] 2 00:00:02,538 --> 00:00:10,800 3 00:00:10,800 --> 00:00:12,390 >> ERIC Ouyang: Hei, alle sammen. 4 00:00:12,390 --> 00:00:13,580 Velkommen. 5 00:00:13,580 --> 00:00:16,860 Dette er Building Dynamic Web-apper med Laravel. 6 00:00:16,860 --> 00:00:18,290 Mitt navn er Eric Ouyang. 7 00:00:18,290 --> 00:00:23,860 Jeg er en sophomore studerer samfunnsfag med en sekundær i informatikk, 8 00:00:23,860 --> 00:00:27,290 og jeg bor i Adams Huset her ved Harvard. 9 00:00:27,290 --> 00:00:33,340 >> Så Laravel, på sitt mest kjerne, er en MVC web app rammeverk. 10 00:00:33,340 --> 00:00:38,265 Så liker det dere har gjort med CS50 Finance, 11 00:00:38,265 --> 00:00:42,480 Laravel er et rammeverk som gjør det mulig deg å bygge dynamiske web apps. 12 00:00:42,480 --> 00:00:47,710 Så du kan tenke på det i noen sanser som en forlengelse av den type ting 13 00:00:47,710 --> 00:00:50,470 du har gjort i CS50 Økonomi, men et system som er 14 00:00:50,470 --> 00:00:55,890 mye mer robust, mye mer elegant i noen sanser, 15 00:00:55,890 --> 00:00:57,870 og gir en masse funksjonalitet for deg 16 00:00:57,870 --> 00:01:03,060 å bygge ganske kompleks webapplikasjoner. 17 00:01:03,060 --> 00:01:05,010 Så la oss gå gjennom noen av de viktigste funksjonene, 18 00:01:05,010 --> 00:01:09,550 og så skal vi dykke inn i en eksempel på å bygge en blogg 19 00:01:09,550 --> 00:01:12,500 søknad med Laravel. 20 00:01:12,500 --> 00:01:16,700 >> Så en av de første tingene som skiller den fra MVC type arbeid 21 00:01:16,700 --> 00:01:22,100 at du har gjort med CS50 er det inkluderer en ORM motor. 22 00:01:22,100 --> 00:01:27,410 Så ORM står for objekt relasjonelle kartlegging. 23 00:01:27,410 --> 00:01:31,080 Så dette gjør at du kan bygge et lag av abstraksjon 24 00:01:31,080 --> 00:01:35,230 mellom databasen og dine kontrollerne. 25 00:01:35,230 --> 00:01:39,150 Så i motsetning til i CS50 Finance der du direkte lage spørringer, 26 00:01:39,150 --> 00:01:44,790 ORM lag lar deg abstrakt det bort og skape 27 00:01:44,790 --> 00:01:48,085 modeller som er kraftigere enn kan du direkte med SQL-spørringer. 28 00:01:48,085 --> 00:01:50,590 29 00:01:50,590 --> 00:01:53,510 >> En annen ting som er virkelig nyttig er arve maler. 30 00:01:53,510 --> 00:01:58,990 Så du vil legge merke til i CS50 Finans, du ender opp med å skrive om en masse ting, 31 00:01:58,990 --> 00:02:03,150 hvor plasserer du kan potensielt gjenbruke ting, er du ikke i stand til. 32 00:02:03,150 --> 00:02:08,539 Så her i Laravel, kan du bruke hva som er kjent som bladet mal motoren 33 00:02:08,539 --> 00:02:10,530 for å skape en hovedoppsett. 34 00:02:10,530 --> 00:02:15,840 Og derfra kan du arve slik at sub-maler kan faktisk 35 00:02:15,840 --> 00:02:21,210 inkluderer elementer innen at større base mal. 36 00:02:21,210 --> 00:02:21,810 >> Migrasjon. 37 00:02:21,810 --> 00:02:29,010 Så dette er en ganske standard på de fleste moderne webapplikasjon rammeverk. 38 00:02:29,010 --> 00:02:32,710 Så dette gjør at du kan representere database skjema endringer i koden. 39 00:02:32,710 --> 00:02:39,200 Så uten kommer til å si, phpMyAdmin, du kan faktisk lage disse vandringene 40 00:02:39,200 --> 00:02:44,660 hvor du representerer database schema endringer i koden direkte. 41 00:02:44,660 --> 00:02:48,070 Og dette kan du to-- spesielt hvis du har flere personer som arbeider 42 00:02:48,070 --> 00:02:52,650 på samme web application-- spore disse endringene, 43 00:02:52,650 --> 00:02:55,380 si i GitHub, eller noen andre depotet. 44 00:02:55,380 --> 00:03:00,880 >> Så dette er virkelig nyttig og demper behovet 45 00:03:00,880 --> 00:03:04,580 til, si, passerer rundt en masse SQL dumper. 46 00:03:04,580 --> 00:03:07,140 Og til slutt, er Komponist noe virkelig, virkelig nyttig 47 00:03:07,140 --> 00:03:09,840 som lar deg bruke andre folks koden for å gjøre utrolige ting. 48 00:03:09,840 --> 00:03:14,020 Så Laravel er strukturert som flere komponistens pakker. 49 00:03:14,020 --> 00:03:17,870 Så si at hvis du ønsket å bringe i en godkjenningspakke 50 00:03:17,870 --> 00:03:23,440 eller hvis du ønsket å få inn litt slags generator script eller en admin 51 00:03:23,440 --> 00:03:26,910 grensesnitt, kan du plug and play disse komponentene med komponist. 52 00:03:26,910 --> 00:03:30,470 53 00:03:30,470 --> 00:03:31,570 >> Så la oss komme i gang. 54 00:03:31,570 --> 00:03:35,185 Eventuelle spørsmål fra deg gutta før vi kommer i gang? 55 00:03:35,185 --> 00:03:36,500 Ingen spørsmål? 56 00:03:36,500 --> 00:03:37,490 Cool. 57 00:03:37,490 --> 00:03:39,990 Så det første trinnet er installere Composer. 58 00:03:39,990 --> 00:03:43,590 Så Oser lar deg administrere disse avhengigheter, 59 00:03:43,590 --> 00:03:47,770 enten det er den Laravel rammeverk eller en annen tredjepart forlengelse. 60 00:03:47,770 --> 00:03:50,400 Den første kommandoen tillater du laste ned Komponist, 61 00:03:50,400 --> 00:03:55,890 og den andre kommandoen lar deg flytte den til din lokale bin mappen 62 00:03:55,890 --> 00:04:01,340 slik at du kan kjøre Komponist direkte gjennom terminalen. 63 00:04:01,340 --> 00:04:05,405 >> Etter det, gå videre og opprette en ny Laravel prosjekt. 64 00:04:05,405 --> 00:04:07,280 Vi blir faktisk kommer til bruke noen eksempelkode 65 00:04:07,280 --> 00:04:10,760 at jeg har satt sammen å lage denne bloggen. 66 00:04:10,760 --> 00:04:14,420 Men hvis du starter fra scratch, ville du bruke denne kommandoen 67 00:04:14,420 --> 00:04:18,160 opp her, komponist lage-prosjekt, laravel slash laravel, og deretter 68 00:04:18,160 --> 00:04:19,940 navnet på prosjektet. 69 00:04:19,940 --> 00:04:22,275 Og som vil omfatte alle fordelingskode 70 00:04:22,275 --> 00:04:23,733 for å starte en ny Laravel prosjekt. 71 00:04:23,733 --> 00:04:28,870 Så for dine CS50 endelige prosjekter, vil du sannsynligvis vil bruke den kommandoen. 72 00:04:28,870 --> 00:04:31,210 >> Men vi kommer til å begynne med dette. 73 00:04:31,210 --> 00:04:34,630 Så når du har gjort at du kommer til å få 74 00:04:34,630 --> 00:04:40,190 en ganske omfattende nummer av filer i blog50. 75 00:04:40,190 --> 00:04:43,840 Så la oss bare gå gjennom noen av disse komponentene. 76 00:04:43,840 --> 00:04:49,060 Du vil merke på denne ruten katalog, det er en app mappe. 77 00:04:49,060 --> 00:04:52,960 Inne i app-mappen, er det et par nyttige mapper. 78 00:04:52,960 --> 00:04:56,330 Av notatet til å begynne med er dette config mappen. 79 00:04:56,330 --> 00:04:59,210 Så dette setter opp hvordan din webapplikasjon er 80 00:04:59,210 --> 00:05:04,350 kommer til å si, autentisere folk eller kontant ting eller koble til databasen. 81 00:05:04,350 --> 00:05:06,400 >> Og hva er egentlig nyttig er at Laravel 82 00:05:06,400 --> 00:05:09,130 lar deg sette opp ulike utviklingsmiljøer. 83 00:05:09,130 --> 00:05:12,090 Så det vi har gjort her er hvis vi går under lokal mappe, 84 00:05:12,090 --> 00:05:14,720 det er en database.php fil. 85 00:05:14,720 --> 00:05:18,320 Og du vil legge merke til her at vi sette opp en MySQL-tilkobling som 86 00:05:18,320 --> 00:05:22,230 lar enkeltpersoner til å koble til MySQL-serveren som er 87 00:05:22,230 --> 00:05:24,310 direkte på CS50 apparatet. 88 00:05:24,310 --> 00:05:26,980 Og vi skal koble til en database at jeg satt opp kalt Blog50. 89 00:05:26,980 --> 00:05:31,390 90 00:05:31,390 --> 00:05:37,085 >> Så la oss faktisk gå videre og drevet arbeids versjon av denne, 91 00:05:37,085 --> 00:05:39,710 bare for å få en følelse av hva applikasjon som vi bygger 92 00:05:39,710 --> 00:05:41,390 ser ut. 93 00:05:41,390 --> 00:05:46,150 Så jeg har en kopi av dette Blog50 fullført. 94 00:05:46,150 --> 00:05:51,910 Så Laravel faktisk har innebygget en server 95 00:05:51,910 --> 00:05:53,910 at du kan kjøre direkte fra kommandolinjen. 96 00:05:53,910 --> 00:05:56,900 Så dette er lik den PSet før når du faktisk 97 00:05:56,900 --> 00:06:00,580 bygge din egen server i C. Så de har en innebygd slik 98 00:06:00,580 --> 00:06:04,010 at du kan kjøre dine Laravel apps direkte fra kommandolinjen. 99 00:06:04,010 --> 00:06:11,650 >> Så hvis vi gjør php håndverker tjene, dette vil lansere en utviklingsserver 100 00:06:11,650 --> 00:06:13,880 på port 8000. 101 00:06:13,880 --> 00:06:18,250 Så hvis vi går til lokale verten 8000, vil du legge merke til at, hei. 102 00:06:18,250 --> 00:06:20,800 Vi har vår blogg oppe og går. 103 00:06:20,800 --> 00:06:25,090 Så Laravel her genererer forsiden av vår blogg. 104 00:06:25,090 --> 00:06:26,350 Veldig enkelt program. 105 00:06:26,350 --> 00:06:28,610 Men det er et par virkelig fiffige funksjoner 106 00:06:28,610 --> 00:06:31,346 at det gir under panseret. 107 00:06:31,346 --> 00:06:33,680 >> Så bloggen programmets ukomplisert. 108 00:06:33,680 --> 00:06:36,430 Hvis vi ønsket å lage et innlegg, vi kan klikke på den knappen. 109 00:06:36,430 --> 00:06:40,470 Vi kan si: "Hei, alle sammen. 110 00:06:40,470 --> 00:06:44,530 Dette er en veldig morsom seminar, "for eksempel. 111 00:06:44,530 --> 00:06:46,560 Og skrive noe ned her. 112 00:06:46,560 --> 00:06:48,180 Tekst her. 113 00:06:48,180 --> 00:06:51,327 Hvis vi klikker Send, vil du legge merke til at vår nye blogg 114 00:06:51,327 --> 00:06:53,410 innlegget har blitt lagt til forsiden av bloggen. 115 00:06:53,410 --> 00:06:56,532 116 00:06:56,532 --> 00:06:59,970 Hvis vi går tilbake hit, vil du legge merke til at det har vært noen kommentarer allerede 117 00:06:59,970 --> 00:07:01,160 på bloggen. 118 00:07:01,160 --> 00:07:03,630 Så hvis vi bla nedover, vil du legge merke til at Jonathan Tan sier 119 00:07:03,630 --> 00:07:08,020 at han ble veldig fascinert av dette innlegget. 120 00:07:08,020 --> 00:07:11,570 >> Så vi vil gå inn på hvordan objekt relasjonelle kartlegging tillater 121 00:07:11,570 --> 00:07:16,668 du skal gjøre disse relasjonene i en forholdsvis sømløs måte også. 122 00:07:16,668 --> 00:07:17,660 Cool. 123 00:07:17,660 --> 00:07:20,290 Eventuelle spørsmål om funksjonalitet av hva vi kommer til å bygge? 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å la oss starte med faktisk skape databasetabellene. 127 00:07:28,170 --> 00:07:33,190 >> Så husker at i CS50 Finance, du sette sammen et bord for brukerne 128 00:07:33,190 --> 00:07:37,100 så vel som for aksjer i din portefølje. 129 00:07:37,100 --> 00:07:41,040 Slik som vi har nevnt tidligere, hva vi bruker i Laravel 130 00:07:41,040 --> 00:07:43,090 er noe kjent som vandringer. 131 00:07:43,090 --> 00:07:48,570 Så hvis vi går tilbake til den distribusjon kode her, 132 00:07:48,570 --> 00:07:51,790 den første kommandoen som er nyttig at Laravel gir deg 133 00:07:51,790 --> 00:07:54,240 er dette migrate kommandoen. 134 00:07:54,240 --> 00:07:59,220 Slik at vi kan gjøre php håndtverker migrere: gjøre. 135 00:07:59,220 --> 00:08:01,760 Så dette tillater oss å lage en migrasjon. 136 00:08:01,760 --> 00:08:03,710 >> Og så får vi ønsker for å lage en migrering 137 00:08:03,710 --> 00:08:07,050 kalt create_posts_table, som kommer 138 00:08:07,050 --> 00:08:11,521 å være der vi skal være lagring av våre blogginnlegg. 139 00:08:11,521 --> 00:08:14,690 Og du vil legge merke til her at det kjører gjennom noen kode som faktisk 140 00:08:14,690 --> 00:08:17,580 genererer en fil med et tidsstempel på det. 141 00:08:17,580 --> 00:08:22,260 Så hvis vi gå og se på Database, vi vil legge merke til i henhold Migrations 142 00:08:22,260 --> 00:08:24,830 at det er opprettet en blank fil for oss som 143 00:08:24,830 --> 00:08:30,100 har standardkode med navnet at vi spesifisert, lage innlegg tabellen. 144 00:08:30,100 --> 00:08:31,670 >> Og det har to funksjoner i den. 145 00:08:31,670 --> 00:08:40,539 Up er hva vi ønsker å kjøre når den migrasjon påføres databasen. 146 00:08:40,539 --> 00:08:46,380 Og ned er hva vi skal gjøre når vi ønsker å reversere en migrering. 147 00:08:46,380 --> 00:08:49,890 Så her la oss starte ut med å skrive denne migrasjonen. 148 00:08:49,890 --> 00:08:55,480 Så det er en nyttig klasse i Laravel kalt Schema. 149 00:08:55,480 --> 00:08:57,910 >> Så vi kommer til å kjøre Schema :: skape. 150 00:08:57,910 --> 00:09:01,080 Og vi kommer til å skape en tabell kalt innlegg. 151 00:09:01,080 --> 00:09:05,980 Og her bruker vi dette ved hjelp av en funksjon. 152 00:09:05,980 --> 00:09:11,010 Og innenfor her, skal vi faktisk spesifisere innholdet av bordet vårt. 153 00:09:11,010 --> 00:09:14,860 Vi kommer til å lage et ID, som er automatisk øke. 154 00:09:14,860 --> 00:09:19,850 155 00:09:19,850 --> 00:09:24,350 >> I tillegg skal vi å opprette et felt som 156 00:09:24,350 --> 00:09:27,060 representerer tittelen på blogginnlegget. 157 00:09:27,060 --> 00:09:29,880 158 00:09:29,880 --> 00:09:36,950 Vi kommer også til å skape et felt for lagring av teksten i blogginnlegget. 159 00:09:36,950 --> 00:09:40,600 Og til slutt, skal vi å lagre noen tidsstempler 160 00:09:40,600 --> 00:09:44,690 for når vår innlegget ble opprettet og når den ble oppdatert. 161 00:09:44,690 --> 00:09:46,240 Og for ned, er det ganske enkelt. 162 00:09:46,240 --> 00:09:53,974 Alt vi ønsker å gjøre er å slippe tabellen som vi har laget. 163 00:09:53,974 --> 00:09:54,930 >> Stor. 164 00:09:54,930 --> 00:09:55,850 Eventuelle spørsmål? 165 00:09:55,850 --> 00:09:59,730 166 00:09:59,730 --> 00:10:07,110 Så nå hvis vi går videre og-- faktisk, lokale verten, 167 00:10:07,110 --> 00:10:09,640 la meg slette det vi hadde tidligere. 168 00:10:09,640 --> 00:10:14,330 169 00:10:14,330 --> 00:10:15,190 Gå til databaser. 170 00:10:15,190 --> 00:10:17,640 Jeg kommer til å slette det vi hadde tidligere. 171 00:10:17,640 --> 00:10:22,870 Slippe dette og skape en ny database Blog50. 172 00:10:22,870 --> 00:10:24,930 Så nå hva den magiske del er her at vi 173 00:10:24,930 --> 00:10:28,760 kan søke disse vandringene direkte til databasen ved å bruke kommandolinje 174 00:10:28,760 --> 00:10:29,290 verktøyet. 175 00:10:29,290 --> 00:10:35,100 Så hvis vi gjør php håndverker migrate, vil du legge merke til at, hei. 176 00:10:35,100 --> 00:10:38,320 Det er opprettet migrasjon bordet, som vi vil ta en titt på i en bit, 177 00:10:38,320 --> 00:10:40,540 og det er brukt denne første migrasjon. 178 00:10:40,540 --> 00:10:43,860 179 00:10:43,860 --> 00:10:48,920 >> Så vi ser på Blog50, vil du merke at det er opprettet to tabeller for oss. 180 00:10:48,920 --> 00:10:50,300 Første er dette vandringer tabellen. 181 00:10:50,300 --> 00:10:54,130 Så hvis vi bla dette, vil du legge merke til at denne tabellen er ganske grei. 182 00:10:54,130 --> 00:10:55,490 Det er bare sagt at, hei. 183 00:10:55,490 --> 00:10:58,960 Vi har brukt denne migrasjonen. 184 00:10:58,960 --> 00:11:01,470 Vi går tilbake og ser på innleggene. 185 00:11:01,470 --> 00:11:05,720 Du vil merke at strukturen er akkurat det vi hadde bedt om det. 186 00:11:05,720 --> 00:11:07,350 Vi har en automatisk øke ID. 187 00:11:07,350 --> 00:11:10,450 Vi har en streng for å lagre tittelen, og et tekstfelt 188 00:11:10,450 --> 00:11:11,450 for lagring av innhold. 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 Eventuelle spørsmål om vandringer arbeid, hvordan vi kan bruke dem? 193 00:11:21,626 --> 00:11:22,126 Nei? 194 00:11:22,126 --> 00:11:23,600 Cool. 195 00:11:23,600 --> 00:11:26,630 Så nå skal vi gå videre og faktisk lage modellen. 196 00:11:26,630 --> 00:11:33,100 Så vi ønsker å skape et innlegg modell som lagrer en abstraksjon av databasen. 197 00:11:33,100 --> 00:11:41,040 Så heller enn å gjøre MySQL-spørringer direkte, skal vi skape. 198 00:11:41,040 --> 00:11:45,840 Så vi må skape en mappe i her kalt modeller. 199 00:11:45,840 --> 00:11:48,905 Og inni her, skal vi opprette en fil som heter post.php. 200 00:11:48,905 --> 00:11:52,280 201 00:11:52,280 --> 00:11:54,550 >> Inne i denne PHP-filen, vi kommer til å skape 202 00:11:54,550 --> 00:12:00,590 en A-post som strekker veltalende. 203 00:12:00,590 --> 00:12:08,950 Veltalende er navnet på ORM motor som Laravel gir. 204 00:12:08,950 --> 00:12:12,799 Og her kan vi forvente at du faktisk trenger å skrive noen kode. 205 00:12:12,799 --> 00:12:14,840 Vi kommer til å skrive noen hjelpefunksjoner senere. 206 00:12:14,840 --> 00:12:19,420 Men ut av boksen, vil dette allerede gjenkjenne hva som er i databasen 207 00:12:19,420 --> 00:12:24,770 og vi kan få tilgang til, si, teksten av blogginnlegget eller tittelen, 208 00:12:24,770 --> 00:12:29,230 og skape ting direkte med stort sett ingen kode hodet. 209 00:12:29,230 --> 00:12:31,110 >> Så det er en av de magiske komponenter. 210 00:12:31,110 --> 00:12:34,980 Og vind når denne klassen er mer fullverdig, 211 00:12:34,980 --> 00:12:40,480 vi vil inneholde informasjon om hva det er relatert til, så kommentarene. 212 00:12:40,480 --> 00:12:42,310 Også lage en funksjon slik at vi faktisk kan 213 00:12:42,310 --> 00:12:46,340 direkte få nettadressen av et blogginnlegg siden. 214 00:12:46,340 --> 00:12:46,840 Cool. 215 00:12:46,840 --> 00:12:47,881 Eventuelle spørsmål om det? 216 00:12:47,881 --> 00:12:51,140 217 00:12:51,140 --> 00:12:51,832 Nei. 218 00:12:51,832 --> 00:12:54,100 Cool. 219 00:12:54,100 --> 00:12:57,860 >> Så nå når vi har vår modell, vi ønsker å lage en kontroller som er 220 00:12:57,860 --> 00:13:02,340 stand til å samhandle med disse modellene, og deretter databasen. 221 00:13:02,340 --> 00:13:05,540 Så hvis vi tar en titt på BlogController, vil du 222 00:13:05,540 --> 00:13:08,490 merke til at det ikke er mye her akkurat nå. 223 00:13:08,490 --> 00:13:13,220 Alt er det er en indeks funksjon som genererer hjemmesiden, 224 00:13:13,220 --> 00:13:18,220 men uten noe det å vise enda. 225 00:13:18,220 --> 00:13:20,560 >> Så den første funksjonen at vi kommer til å skape 226 00:13:20,560 --> 00:13:25,790 er en som lar oss å lage et blogginnlegg. 227 00:13:25,790 --> 00:13:30,540 Så vi kommer til å erklære en ny funksjon kalt newPost. 228 00:13:30,540 --> 00:13:36,430 Og inne her rett og slett, vi skal for å stille inn utseendet på denne siden 229 00:13:36,430 --> 00:13:41,850 å være en render versjon hvis du husker fra CS50, 230 00:13:41,850 --> 00:13:48,020 av denne malen kalles blog.new, som vi kommer til å lage i en liten bit. 231 00:13:48,020 --> 00:13:53,170 >> Du vil legge merke til her på linje seks som vi spesifisert denne variabelen, layout. 232 00:13:53,170 --> 00:13:55,820 Og hvis vi tar en titt på Visninger-mappen, 233 00:13:55,820 --> 00:14:01,640 det er en utforminger mappe, som inkluderer en svært grunnleggende HTML-fil. 234 00:14:01,640 --> 00:14:04,680 Og av notatet, vil du legge merke at vi har denne beholderen 235 00:14:04,680 --> 00:14:06,800 her som gir innhold. 236 00:14:06,800 --> 00:14:09,460 Så innsiden av vår mal hva vi skal gjøre 237 00:14:09,460 --> 00:14:16,180 er å lage hva som kommer til å være erstattes direkte i dette oppsettet. 238 00:14:16,180 --> 00:14:20,060 >> Så sa vi at vi ønsker å gjengi en mal som heter blog.new. 239 00:14:20,060 --> 00:14:23,790 Men innsiden av bloggen, det er ennå ikke denne nye malen. 240 00:14:23,790 --> 00:14:26,910 Så vi kommer til å skape en fil som heter new.blade.php. 241 00:14:26,910 --> 00:14:29,860 Dette forteller Laravel som denne PHP-filen bør 242 00:14:29,860 --> 00:14:31,720 gjengis med blad mal motor. 243 00:14:31,720 --> 00:14:39,510 244 00:14:39,510 --> 00:14:42,630 Så dette er en nokså grei fil. 245 00:14:42,630 --> 00:14:46,690 Det kommer til å være den formen som vi faktisk legge inn et blogginnlegg. 246 00:14:46,690 --> 00:14:49,220 >> Så den magiske her fra arv er at, hei. 247 00:14:49,220 --> 00:14:52,950 Vi ønsker å presisere at seksjon, innholdet seksjon 248 00:14:52,950 --> 00:14:56,640 her, som er avgrenset vedsection ogstop. 249 00:14:56,640 --> 00:15:02,260 Så hva er i mellom her kommer til å være substituert i hoved layout. 250 00:15:02,260 --> 00:15:07,000 Og her er hva vi ønsker å gjøre er veldig enkelt opprette en ny HTML-fil. 251 00:15:07,000 --> 00:15:08,690 La oss bare legge en rask tittel. 252 00:15:08,690 --> 00:15:09,600 Legg et blogginnlegg. 253 00:15:09,600 --> 00:15:12,110 254 00:15:12,110 --> 00:15:15,390 Og i det, er vi kommer til å lage et skjema. 255 00:15:15,390 --> 00:15:19,197 >> Dette skjemaet skal ha en handling. 256 00:15:19,197 --> 00:15:21,780 Og dette kommer til å være noe at vi erstatte senere, 257 00:15:21,780 --> 00:15:24,200 og vi får se hvordan ruting passer inn her. 258 00:15:24,200 --> 00:15:33,600 Men vi er bare nødt til å definere for nå at dette går til en URL med ruten 259 00:15:33,600 --> 00:15:34,860 fra createPost. 260 00:15:34,860 --> 00:15:38,200 261 00:15:38,200 --> 00:15:40,320 Og så dette kommer å ha metode innlegg. 262 00:15:40,320 --> 00:15:43,940 263 00:15:43,940 --> 00:15:47,590 Innenfor her, vi skal å ha to felt. 264 00:15:47,590 --> 00:15:49,170 Div class = "form-gruppe". 265 00:15:49,170 --> 00:15:55,806 >> Vi bruker den Bootstrap CSS bibliotek graciously levert av Twitter. 266 00:15:55,806 --> 00:15:57,720 Så vi kommer til å lage to av disse. 267 00:15:57,720 --> 00:16:01,700 268 00:16:01,700 --> 00:16:05,970 Så denne første innspill er kommer til å være tittelen. 269 00:16:05,970 --> 00:16:08,437 Så innspill name = "title". 270 00:16:08,437 --> 00:16:09,270 Class = "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 Jeg kommer til å legge til en plassholder = "Tittel". 274 00:16:16,050 --> 00:16:21,570 275 00:16:21,570 --> 00:16:26,140 >> Og deretter den andre er kommer til å være et tekstområde. 276 00:16:26,140 --> 00:16:27,827 Name = "innhold". 277 00:16:27,827 --> 00:16:28,660 Class = "formcontrol". 278 00:16:28,660 --> 00:16:33,402 279 00:16:33,402 --> 00:16:34,610 Og plassholder = "Skriv her". 280 00:16:34,610 --> 00:16:42,030 281 00:16:42,030 --> 00:16:43,480 Det vi går. 282 00:16:43,480 --> 00:16:46,760 Til slutt skal vi legge til en rask send-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å disse er alle funksjonene i Bootstrap så 286 00:16:55,340 --> 00:16:58,510 at dette kan legges ut på en måte som er 287 00:16:58,510 --> 00:17:03,730 byttedyr til brukeren, snarere enn naken HTML. 288 00:17:03,730 --> 00:17:06,250 >> Så vi har definert kontrolleren her. 289 00:17:06,250 --> 00:17:08,930 Vi har definert en veldig enkel visning. 290 00:17:08,930 --> 00:17:12,339 Men hva som mangler er bindevev. 291 00:17:12,339 --> 00:17:15,420 Så på dette punktet, Laravel har ingen anelse om hvordan 292 00:17:15,420 --> 00:17:18,312 vi kommer til å faktisk tilgang til denne kontrolleren. 293 00:17:18,312 --> 00:17:20,270 Så dette er definert 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 Og akkurat nå, har vi en rute. 296 00:17:24,310 --> 00:17:29,060 Som er når vi går til hjemmebanen for dette nettstedet, 297 00:17:29,060 --> 00:17:33,140 det kommer til å gjengi indeksen kontrolleren. 298 00:17:33,140 --> 00:17:38,880 Så her er hva vi trenger gjøre er å implementere en ny rute for oss å lage et innlegg. 299 00:17:38,880 --> 00:17:41,910 >> Så vi bruker denne metoden få, som angir 300 00:17:41,910 --> 00:17:48,650 at når en bruker prøver å få dette page-- spesifikt 301 00:17:48,650 --> 00:17:52,850 innlegget slash ny page-- hva vi skal gjøre 302 00:17:52,850 --> 00:18:02,060 er bruke kontrolleren heter BlogController nytt innlegg. 303 00:18:02,060 --> 00:18:03,460 Den som vi nettopp opprettet. 304 00:18:03,460 --> 00:18:08,090 Og så skal vi til Alias ​​det som newPost. 305 00:18:08,090 --> 00:18:17,460 306 00:18:17,460 --> 00:18:19,850 Vi kommer til å lage en annen funksjon i en liten bit. 307 00:18:19,850 --> 00:18:23,520 Men hva er her i henhold nøkkelen "som" er hva 308 00:18:23,520 --> 00:18:28,195 vi kan erstatte innen våre Blade maler. 309 00:18:28,195 --> 00:18:32,390 310 00:18:32,390 --> 00:18:36,230 Så for nå, la oss faktisk også si rute. 311 00:18:36,230 --> 00:18:38,380 Så vi også kommer for å skape en styre 312 00:18:38,380 --> 00:18:41,020 slik at vi kan lage disse innleggene. 313 00:18:41,020 --> 00:18:46,940 Så hvis en bruker poster til siden innlegget slash ny, hva vi skal gjøre 314 00:18:46,940 --> 00:18:51,350 er bruker en kontroller som vi kommer til å lage kort tid 315 00:18:51,350 --> 00:18:56,160 kalt BlogController på createPost. 316 00:18:56,160 --> 00:19:01,929 Og vi kommer til å alias dette med så createPost. 317 00:19:01,929 --> 00:19:03,380 Cool. 318 00:19:03,380 --> 00:19:05,811 >> Eventuelle spørsmål? 319 00:19:05,811 --> 00:19:06,310 Cool. 320 00:19:06,310 --> 00:19:09,790 Så la oss kjøre det vi har så langt. 321 00:19:09,790 --> 00:19:16,930 Så hvis vi gjør php håndverker tjene, vi vil se massevis av feil. 322 00:19:16,930 --> 00:19:20,385 Så det ser ut som vi har en syntaksfeil på ruter linje 27. 323 00:19:20,385 --> 00:19:20,885 Ah. 324 00:19:20,885 --> 00:19:21,718 Mangler et semikolon. 325 00:19:21,718 --> 00:19:24,900 326 00:19:24,900 --> 00:19:32,870 Så hvis vi går til 8000, vil du se noe her ennå. 327 00:19:32,870 --> 00:19:34,740 Så dette er standard startside. 328 00:19:34,740 --> 00:19:37,730 >> Men hvis vi går å poste slash ny, hei. 329 00:19:37,730 --> 00:19:40,425 Det vil være den formen som vi nettopp opprettet. 330 00:19:40,425 --> 00:19:42,550 Akkurat nå, ikke har vi implementert funksjonaliteten 331 00:19:42,550 --> 00:19:44,060 av når vi trykker på Send-knappen. 332 00:19:44,060 --> 00:19:47,110 Så hvis vi klikker på Submit knappen, kommer det til å kjøre en feil. 333 00:19:47,110 --> 00:19:49,840 Men vi kommer til å kode som akkurat nå, nettopp hva vi 334 00:19:49,840 --> 00:19:54,840 ønsker å gjøre når en bruker sender dette skjemaet. 335 00:19:54,840 --> 00:19:55,770 >> Så la oss gjøre det. 336 00:19:55,770 --> 00:19:57,380 Gå tilbake til Controllers fil. 337 00:19:57,380 --> 00:20:00,180 Hva vi skal gjøre er implementere denne nye funksjonen 338 00:20:00,180 --> 00:20:04,360 som tillater oss å lage et innlegg. 339 00:20:04,360 --> 00:20:07,370 340 00:20:07,370 --> 00:20:08,990 Erklære ny funksjon. 341 00:20:08,990 --> 00:20:11,527 Offentlig funksjon createPost. 342 00:20:11,527 --> 00:20:14,610 Og denne funksjonen kommer til å være en litt mer avansert enn hva 343 00:20:14,610 --> 00:20:15,559 vi hadde før. 344 00:20:15,559 --> 00:20:18,350 Men du vil se her at vi ikke er kommer til å faktisk skrive noe SQL. 345 00:20:18,350 --> 00:20:20,980 ORM, den Eloquent ORM, kommer til å tillate 346 00:20:20,980 --> 00:20:26,400 oss å gjøre dette i noen måter en mer elegant måte. 347 00:20:26,400 --> 00:20:29,140 >> Så vi kommer til å lage et nytt innlegg. 348 00:20:29,140 --> 00:20:34,120 Og her er vi Instantiating et nytt objekt 349 00:20:34,120 --> 00:20:38,080 fra den modellen som vi bare opprettet, innlegget modell. 350 00:20:38,080 --> 00:20:44,450 Og hva vi skal gjøre er å sette den Tittelen egenskap av dette ved hjelp av noe 351 00:20:44,450 --> 00:20:47,380 som vi får fra serveren. 352 00:20:47,380 --> 00:20:52,060 Så dette er likt det vi hadde før i CS50 Finance 353 00:20:52,060 --> 00:20:57,750 hvor vi ville gjøre, ved hjelp av Super Globalt Post jakt etter tittelen. 354 00:20:57,750 --> 00:21:01,600 >> Så Laravel gir noen sanitær og whatnot bruke denne hjelperen funksjonen. 355 00:21:01,600 --> 00:21:07,610 Så vi foretrekker å bruke dette i stedet av denne svært grunnleggende rå form fra PHP. 356 00:21:07,610 --> 00:21:17,430 Og så hva vi skal gjøre er å sette innholdet i det å Input få innhold. 357 00:21:17,430 --> 00:21:20,429 358 00:21:20,429 --> 00:21:22,720 Vi blir faktisk kommer til å vikle dette i en nyttig funksjon 359 00:21:22,720 --> 00:21:31,820 at PHP gir kalt nl2br, som snur nye linjer, NLS, inn brs, pauser, 360 00:21:31,820 --> 00:21:35,822 slik at vi faktisk kan ha forskjellige avsnitt i det. 361 00:21:35,822 --> 00:21:38,030 Og til slutt hva vi skal å gjøre er å lagre dette innlegget. 362 00:21:38,030 --> 00:21:41,686 Så vi kaller funksjonen lagre på denne modellen. 363 00:21:41,686 --> 00:21:43,800 Vi kommer til å spare i stolpen. 364 00:21:43,800 --> 00:21:49,970 Og til slutt hva vi skal gjøre er omdirigere brukeren spesifikt 365 00:21:49,970 --> 00:21:55,060 til ruten som vi kommer til å lage kort tid, alias av viewPost. 366 00:21:55,060 --> 00:22:00,435 Og vi kommer til å passere i argumentene id, som er den id av denne nye innlegg. 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å nå hvis vi faktisk gå og kjøre denne. 370 00:22:09,090 --> 00:22:11,370 Vi kommer til å legge til et nytt innlegg. 371 00:22:11,370 --> 00:22:15,930 La oss si at dette er seminar 50. 372 00:22:15,930 --> 00:22:17,620 Og si sikkert. 373 00:22:17,620 --> 00:22:18,240 ADSL. 374 00:22:18,240 --> 00:22:18,740 Uansett. 375 00:22:18,740 --> 00:22:20,320 En slags innhold. 376 00:22:20,320 --> 00:22:21,180 Og sende det. 377 00:22:21,180 --> 00:22:23,850 Og vi vil legge merke til det, hei. ruter som ikke er definert. 378 00:22:23,850 --> 00:22:32,340 Men hvis vi tar en titt på phpMyAdmin og se etter om ikke vår funksjon 379 00:22:32,340 --> 00:22:34,370 gjorde noe. 380 00:22:34,370 --> 00:22:36,670 Se på Blog50 innlegg. 381 00:22:36,670 --> 00:22:37,720 Vi vil legge merke til at, hei. 382 00:22:37,720 --> 00:22:43,530 Faktisk gjorde vi bare lage den bloggen poste med tidsstempler som spesifisert. 383 00:22:43,530 --> 00:22:46,600 384 00:22:46,600 --> 00:22:51,630 >> Så nå la oss gå tilbake og faktisk lage denne annen funksjon i vår controller, 385 00:22:51,630 --> 00:22:54,790 spesielt viewPost kontrolleren. 386 00:22:54,790 --> 00:23:00,290 Så offentlig funksjon viewPost. 387 00:23:00,290 --> 00:23:04,070 Så her er hva vi skal gjøre, i stedet av å ha tomme parenteser, 388 00:23:04,070 --> 00:23:08,800 vi vil ønske å passere i ID av innlegget som vi skaper. 389 00:23:08,800 --> 00:23:12,800 Og herfra hva vi skal gjøre er faktisk søke i databasen for det. 390 00:23:12,800 --> 00:23:15,140 >> Så hvis vi legger inn, det er en funksjon som heter 391 00:23:15,140 --> 00:23:18,860 Finn som tillater oss å spørre på den ved ID. 392 00:23:18,860 --> 00:23:22,110 Spesifikt, faktisk, skal vi bruke en alternativ versjon av denne kalt 393 00:23:22,110 --> 00:23:27,880 Finn eller Fail, som tillater oss å slutte ut av denne funksjonen, 394 00:23:27,880 --> 00:23:34,700 kaste et unntak hvis ID vi passere i ikke eksisterer. 395 00:23:34,700 --> 00:23:37,500 Og så skal vi gjøre noe i likhet med hva vi gjorde tidligere 396 00:23:37,500 --> 00:23:41,100 hvor vi setter innhold på denne siden for å være 397 00:23:41,100 --> 00:23:47,950 det gjengitte versjonen av denne nye utsikt som vi kommer til å skape, blog.view. 398 00:23:47,950 --> 00:23:51,030 >> Og vi kommer til å passere inn it akkurat som i CS50 gjengi 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 Nøklene til denne assosiativ array bli variabler i malen. 402 00:24:04,620 --> 00:24:06,830 Så vi kommer til å gjøre post innlegg. 403 00:24:06,830 --> 00:24:12,474 Så pass indirekte innlegget som vi har spørres fra databasen. . 404 00:24:12,474 --> 00:24:14,390 Nå hva vi skal gjøre er å lage dette synet 405 00:24:14,390 --> 00:24:17,560 slik at vi faktisk kan se blogginnlegg som vi har bygget. 406 00:24:17,560 --> 00:24:20,280 >> Så vi kommer til å skape 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å innsiden av denne malen, hva vi skal gjøre 409 00:24:29,640 --> 00:24:39,700 er satt sammen en enkel side som tillater oss å vise innholdet. 410 00:24:39,700 --> 00:24:44,280 Så vi gjør delen, er at før innhold. 411 00:24:44,280 --> 00:24:46,800 Stoppe. 412 00:24:46,800 --> 00:24:53,920 Og hva vi skal å gjøre innen her er 413 00:24:53,920 --> 00:24:56,930 skrive litt HTML for å vise denne siden. 414 00:24:56,930 --> 00:25:03,590 >> Så vi kommer til å bryte den med en fancy ny HTML5 element kalt artikkel. 415 00:25:03,590 --> 00:25:05,790 Og her skal vi å ha en overskrift der 416 00:25:05,790 --> 00:25:12,190 vi skal rett og slett ha en h1, som inkluderer innlegget tittelen. 417 00:25:12,190 --> 00:25:17,120 Så her, hvis vi ser på dette dobbel klammeparentes notasjon, 418 00:25:17,120 --> 00:25:21,690 dette vil gjøre hovedsak PHP ekko tittelen. 419 00:25:21,690 --> 00:25:25,630 Så det er en nyttig stenografi at Laravel gir oss. 420 00:25:25,630 --> 00:25:31,070 Så vi kommer til å bruke denne notasjonen i stedet. 421 00:25:31,070 --> 00:25:40,220 >> Og her, skal vi også skrive ut innholdet i den. 422 00:25:40,220 --> 00:25:43,480 Og her skal vi å gjøre innholdet i posten. 423 00:25:43,480 --> 00:25:46,514 424 00:25:46,514 --> 00:25:50,660 Og ned på bunnen hva vi er kommer til å gjøre er å lage en bunntekst. 425 00:25:50,660 --> 00:25:57,690 Og i bunnteksten, skal vi første skjermen når dette ble postet. 426 00:25:57,690 --> 00:26:01,320 Så dette ble postet på, opprettet på. 427 00:26:01,320 --> 00:26:07,996 >> Og Laravel bruker en virkelig fin dato bibliotek kalt Carbon. 428 00:26:07,996 --> 00:26:11,120 Slik at vi faktisk kan gjøre noe som kalles difforHumans, som du så tidligere. 429 00:26:11,120 --> 00:26:14,360 Når vi lagt ut. det vil si, lignende, fem sekunder siden. 430 00:26:14,360 --> 00:26:16,860 Så dette er en veldig fin funksjonaliteten Laravel. 431 00:26:16,860 --> 00:26:19,469 432 00:26:19,469 --> 00:26:21,385 Og til slutt, skal vi å lukke denne bunntekst. 433 00:26:21,385 --> 00:26:24,900 434 00:26:24,900 --> 00:26:31,450 >> Så nå hvis vi går tilbake til Hjemmeside vi kommer 435 00:26:31,450 --> 00:26:34,490 å se noe her ennå fordi vi har ikke kodet opp hjemmesiden. 436 00:26:34,490 --> 00:26:40,962 Men hvis vi går å poste slash ett, vi kommer til å se et unntak. 437 00:26:40,962 --> 00:26:42,670 Er det noen som vet hvorfor ser vi et unntak? 438 00:26:42,670 --> 00:26:44,516 Hva er det vi mangler? 439 00:26:44,516 --> 00:26:45,290 Noen ideer? 440 00:26:45,290 --> 00:26:48,050 441 00:26:48,050 --> 00:26:49,790 Så hva gjorde vi gjør tidligere for oss faktisk 442 00:26:49,790 --> 00:26:52,285 å definere hvordan vi får til spesielle kontrollere? 443 00:26:52,285 --> 00:26:54,895 444 00:26:54,895 --> 00:26:55,770 >> SPEAKER 1: Ruten? 445 00:26:55,770 --> 00:26:56,519 ERIC Ouyang: Yeah. 446 00:26:56,519 --> 00:26:58,070 Så vi har fortsatt å definere ruten. 447 00:26:58,070 --> 00:26:59,794 Så vi går tilbake hit for å routes.php. 448 00:26:59,794 --> 00:27:01,710 Du vil merke at vi har faktisk ikke definert 449 00:27:01,710 --> 00:27:05,010 hvordan vi kommer til å få til denne kontrolleren. 450 00:27:05,010 --> 00:27:06,780 Så nå skal vi definere denne ruten. 451 00:27:06,780 --> 00:27:09,280 Det er ganske grei, i likhet med hva vi gjorde tidligere. 452 00:27:09,280 --> 00:27:13,910 Men hva vi kommer til å legge merke til her er at vi kommer til å ha en plassholder. 453 00:27:13,910 --> 00:27:18,730 >> Så hvis vi gjør route.get slash post ID. 454 00:27:18,730 --> 00:27:24,290 Så ID nå er hva som kommer til føres inn i styringen. 455 00:27:24,290 --> 00:27:27,820 Dette kommer til å bruke den kontroller som vi bare 456 00:27:27,820 --> 00:27:33,560 opprettet, BlogController på viewPost. 457 00:27:33,560 --> 00:27:36,420 Og vi kommer til å alias dette 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å nå vi kommer til å skape denne ruten. 461 00:27:49,470 --> 00:27:52,100 >> Så nå går vi her og oppdatere denne siden, 462 00:27:52,100 --> 00:27:54,410 vi faktisk har vår nye blogginnlegg. 463 00:27:54,410 --> 00:27:57,710 Så dette er hva vi opprettet tidligere. 464 00:27:57,710 --> 00:28:01,320 Veldig enkel side, men viser blogginnlegg som vi nettopp opprettet. 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 Og hvis vi faktisk gå gjennom hele prosessen med å skape en ny bloggpost, 468 00:28:08,880 --> 00:28:11,700 vi vil legge merke til at alt omdirigeringer ordentlig. 469 00:28:11,700 --> 00:28:12,950 Hvis jeg sier, "Hei. 470 00:28:12,950 --> 00:28:15,710 Jeg er Jonathan Tan. " 471 00:28:15,710 --> 00:28:18,550 Si: "Dette er mitt blogginnlegg." 472 00:28:18,550 --> 00:28:22,830 Og Send det inn, vil dette skape denne bloggposten med ID 2, 473 00:28:22,830 --> 00:28:28,920 hvilke trinn fra hva vi hadde tidligere og viser den riktig. 474 00:28:28,920 --> 00:28:30,760 Awesome. 475 00:28:30,760 --> 00:28:32,930 >> Eventuelle spørsmål? 476 00:28:32,930 --> 00:28:33,430 Ja? 477 00:28:33,430 --> 00:28:36,537 >> SPEAKER 2: Har Laravel håndtak Opprydding og alt for deg? 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å tidligere når vi gjorde innspill kolon kolon få, 480 00:28:42,990 --> 00:28:47,720 som sanitates noen SQL injeksjoner og whatnot 481 00:28:47,720 --> 00:28:51,660 at vi kanskje ønsker å utføre hvis vi er en ondsinnet bruker av nettstedet. 482 00:28:51,660 --> 00:28:54,115 Så Laravel håndterer mye av at bak kulissene. 483 00:28:54,115 --> 00:28:57,030 Godt spørsmål. 484 00:28:57,030 --> 00:29:00,390 >> Så la oss ta en titt på hjemmesiden. 485 00:29:00,390 --> 00:29:03,220 486 00:29:03,220 --> 00:29:06,790 Så hvis vi først gå tilbake til kontrolleren for hjemmesiden, 487 00:29:06,790 --> 00:29:08,740 du vil legge merke til at det gjør ikke mye her. 488 00:29:08,740 --> 00:29:11,620 Du vil merke at vi ikke er passerer inn i denne kontrolleren 489 00:29:11,620 --> 00:29:13,830 noe spesielt nyttig. 490 00:29:13,830 --> 00:29:16,660 Det er bare denne indeksfilen. 491 00:29:16,660 --> 00:29:18,770 >> Så la oss gå over i dette noe nyttig. 492 00:29:18,770 --> 00:29:21,450 Og spesielt er vi kommer til å passere i innlegg. 493 00:29:21,450 --> 00:29:28,740 Og Laravel tillater oss for å gjøre innlegget tatt, som 494 00:29:28,740 --> 00:29:30,625 vil tillate oss å få alle innleggene. 495 00:29:30,625 --> 00:29:33,160 496 00:29:33,160 --> 00:29:35,730 Nå hvis vi går tilbake til index.php, vil du se, hei. 497 00:29:35,730 --> 00:29:37,060 Ingenting her ennå. 498 00:29:37,060 --> 00:29:41,290 Men hva vi ønsker å gjøre her er faktisk iterere gjennom, 499 00:29:41,290 --> 00:29:46,420 gjøre en foreach løkke over innleggene som tillater oss å skrive ut innleggene. 500 00:29:46,420 --> 00:29:53,180 >> Så foreach innlegg som post, hva vi ønsker å gjøre 501 00:29:53,180 --> 00:29:57,252 er skrive ut innholdet av blogginnlegget. 502 00:29:57,252 --> 00:30:00,210 Men en ting du vil legge merke til er at vi faktisk skrev det meste av den koden 503 00:30:00,210 --> 00:30:01,370 allerede, i view.blade.php. 504 00:30:01,370 --> 00:30:04,070 505 00:30:04,070 --> 00:30:08,640 Så hva skal vi egentlig gjøre er bruke en fin nyttig funksjon av Blade 506 00:30:08,640 --> 00:30:11,300 og faktor ut denne felles kode. 507 00:30:11,300 --> 00:30:12,570 Så vi går her. 508 00:30:12,570 --> 00:30:16,210 >> Vi kommer til å ta dette innholdet akkurat her, og hva vi skal gjøre 509 00:30:16,210 --> 00:30:18,170 er å opprette en ny mappe. 510 00:30:18,170 --> 00:30:20,364 La oss bare kalle det partials. 511 00:30:20,364 --> 00:30:22,530 Og her skal vi å skape en post.blade.php. 512 00:30:22,530 --> 00:30:26,570 513 00:30:26,570 --> 00:30:33,100 Så her, priset vi ut på veien i som vi ønsker å vise disse innleggene. 514 00:30:33,100 --> 00:30:38,690 Og her er hva vi skal gjøre i stedet for faktisk å ha som HTML direkte, 515 00:30:38,690 --> 00:30:41,530 vi kommer til å bruke dette direktivet kalt inkluderer blog.partials.post. 516 00:30:41,530 --> 00:30:45,210 517 00:30:45,210 --> 00:30:50,635 >> Og hva vi skal gjøre her er pass i posten på siden. 518 00:30:50,635 --> 00:30:57,076 519 00:30:57,076 --> 00:31:01,050 Så nå går vi tilbake her, vil vi legge merke til at funksjonaliteten er fortsatt 520 00:31:01,050 --> 00:31:01,550 den samme. 521 00:31:01,550 --> 00:31:05,140 Men nå har vi dette priset ut kode, denne HTML. 522 00:31:05,140 --> 00:31:07,070 Slik at vi kan bruke det i Index. 523 00:31:07,070 --> 00:31:09,090 Så her, dette er veldig grei. 524 00:31:09,090 --> 00:31:17,870 Alt vi gjør er å inkludere blog.partials.post og array. 525 00:31:17,870 --> 00:31:20,845 Og et sted å før, gjør vi etter post. 526 00:31:20,845 --> 00:31:23,830 527 00:31:23,830 --> 00:31:28,182 >> Så nå går vi tilbake til hjemmesiden, vil vi se at, hei. 528 00:31:28,182 --> 00:31:30,515 Vi har en liste over alle blogginnlegg som vi hadde før. 529 00:31:30,515 --> 00:31:34,640 530 00:31:34,640 --> 00:31:37,700 Vi ønsker kanskje å legge til noen "hvis" forhold og "ellers" betingelser 531 00:31:37,700 --> 00:31:39,979 slik at hvis vi ikke har noe på bloggen, 532 00:31:39,979 --> 00:31:41,520 vi ønsker å vise noe nyttig. 533 00:31:41,520 --> 00:31:42,570 Liker, hei. 534 00:31:42,570 --> 00:31:44,340 Det er ikke noe innhold ennå på bloggen. 535 00:31:44,340 --> 00:31:47,670 Og hvis dere faktisk se på fordelingen koden på GitHub, 536 00:31:47,670 --> 00:31:50,100 du vil se et eksempel på hvordan vi gjø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 Eventuelle spørsmål? 540 00:31:54,890 --> 00:31:55,510 Ja. 541 00:31:55,510 --> 00:31:57,468 >> SPEAKER 2: Jeg tror bare et grunnleggende spørsmål. 542 00:31:57,468 --> 00:31:59,480 Tilbake på ruten. 543 00:31:59,480 --> 00:32:00,230 ERIC Ouyang: Yeah. 544 00:32:00,230 --> 00:32:01,935 Hvis vi tar en titt på ruter. 545 00:32:01,935 --> 00:32:06,018 >> SPEAKER 2: Hvor kommer uses.blogcontroller på lage innlegg, 546 00:32:06,018 --> 00:32:07,560 hva betyr det å lede oss til? 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 >> SPEAKER 2: Eller hva er at-- 550 00:32:09,716 --> 00:32:12,620 ERIC Ouyang: Så, ta en titt, sier for eksempel denne ruten til høyre her. 551 00:32:12,620 --> 00:32:17,190 Den første delen er selve Nettadressen som brukeren vil gå til. 552 00:32:17,190 --> 00:32:19,930 Og denne matrisen her, assosiativ array, definerer 553 00:32:19,930 --> 00:32:24,520 hvordan vi ønsker å ha det søknad handling som svar på det. 554 00:32:24,520 --> 00:32:29,090 Så bruker er kontrolleren, den funksjon som vi 555 00:32:29,090 --> 00:32:31,610 ønsker å ringe når en brukeren går til denne nettadressen. 556 00:32:31,610 --> 00:32:35,190 Så viewPost akkurat her var en funksjon som vi definerte inne 557 00:32:35,190 --> 00:32:36,100 av BlogController-- 558 00:32:36,100 --> 00:32:37,160 >> SPEAKER 2: Jeg skjønner. 559 00:32:37,160 --> 00:32:39,368 >> ERIC Ouyang: --so at vi faktisk kan gjengi en visning, 560 00:32:39,368 --> 00:32:42,590 utføre noen beregninger, samhandle med SQL database. 561 00:32:42,590 --> 00:32:43,560 >> SPEAKER 2: OK. 562 00:32:43,560 --> 00:32:46,960 >> ERIC Ouyang: Og så den andre del, "som" er et alias som vi bruker. 563 00:32:46,960 --> 00:32:50,714 Så hvis vi legger merke til når vi laget skjemaet, 564 00:32:50,714 --> 00:32:52,380 du vil legge merke til at URL :: routecreatePost. 565 00:32:52,380 --> 00:32:55,000 566 00:32:55,000 --> 00:32:58,330 Så det erstatter i den faktiske URL, slik at vi er ikke vanskelig 567 00:32:58,330 --> 00:33:02,940 koding disse i så vi kan endre det gang, sier hvis vi ønsket å endre navn. 568 00:33:02,940 --> 00:33:06,055 I stedet for å etter slash ny, ønsker vi å gjøre som, p 569 00:33:06,055 --> 00:33:09,490 slash nytt bare for å rense opp våre webadresser litt. 570 00:33:09,490 --> 00:33:14,740 Vi vil endre det på ett sted heller enn på tvers av alle de forskjellige filer. 571 00:33:14,740 --> 00:33:15,451 >> Cool. 572 00:33:15,451 --> 00:33:15,950 Det er bra. 573 00:33:15,950 --> 00:33:20,070 Så nå har vi en veldig grunnleggende bloggplattform. 574 00:33:20,070 --> 00:33:24,260 Vi sannsynligvis vil legge i en knapp så at vi faktisk kan lage nye innlegg. 575 00:33:24,260 --> 00:33:27,850 Så hvis vi tar en titt på Layout Master, 576 00:33:27,850 --> 00:33:31,280 vi har en seksjon som heter Header Høyre at vi nettopp har definert opp på toppen. 577 00:33:31,280 --> 00:33:34,820 Slik at vi kan legge til knapper til toppen av spissen. 578 00:33:34,820 --> 00:33:43,950 >> Så hvis vi går til index.blade.php, faktisk gjøre er å definere hva som foregår på innsiden av her. 579 00:33:43,950 --> 00:33:46,970 Så dette Header Høyre delen, hva vi skal gjøre 580 00:33:46,970 --> 00:33:55,240 er å legge inn en knapp for å gå til URL definert av ruten nytt innlegg. 581 00:33:55,240 --> 00:33:58,270 582 00:33:58,270 --> 00:34:01,660 Bare for å rydde opp og gjøre det pen og alt Bootstrap, 583 00:34:01,660 --> 00:34:04,630 vi kommer til å gjøre dette en standardknapp. 584 00:34:04,630 --> 00:34:07,794 La oss bare gjøre det stort for moro skyld. 585 00:34:07,794 --> 00:34:09,969 >> Og inni den, kan vi sette noen tekst. 586 00:34:09,969 --> 00:34:14,030 Men hva Bootstrap gir er glyphicons. 587 00:34:14,030 --> 00:34:17,840 Så vi kan faktisk legge inn at fin blyant som vi så tidligere. 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-blyant. 591 00:34:22,489 --> 00:34:25,449 592 00:34:25,449 --> 00:34:35,340 Så dette vil gi oss mulighet til å sette i et ikon i stedet for tekst. 593 00:34:35,340 --> 00:34:38,960 Nå hvis vi stopper, dette vil definere denne delen. 594 00:34:38,960 --> 00:34:39,460 Og, hei. 595 00:34:39,460 --> 00:34:45,000 Vi har en fin knapp som linker oss direkte til legge til et blogginnlegg siden. 596 00:34:45,000 --> 00:34:46,659 >> Så vi har en ganske enkel blogg. 597 00:34:46,659 --> 00:34:49,710 Vi kan legge ting til det. 598 00:34:49,710 --> 00:34:53,650 Men hva vi vanligvis forventer fra blogger kommenterer. 599 00:34:53,650 --> 00:34:57,340 Så det er veldig viktig for oss å ha, si, hvis noen andre besøker et nettsted 600 00:34:57,340 --> 00:35:00,620 og virkelig liker innlegget som de kan engasjere seg i diskusjonen 601 00:35:00,620 --> 00:35:03,100 med andre mennesker som besøker siden. 602 00:35:03,100 --> 00:35:07,050 Så vi kommer til å gå og lage en ny databasetabell og en ny modell 603 00:35:07,050 --> 00:35:12,220 slik at vi kan knytte kommentarer med innlegg. 604 00:35:12,220 --> 00:35:17,370 >> Så det første trinnet, akkurat som før, er at vi trenger å kjøre en migrasjon. 605 00:35:17,370 --> 00:35:21,982 Slik som før, gjør vi php håndtverker migrere: gjøre. 606 00:35:21,982 --> 00:35:24,440 Og vi kommer til å skape en kalt create_comments_table. 607 00:35:24,440 --> 00:35:29,520 608 00:35:29,520 --> 00:35:36,080 Dette vil skape en fil som har vår nye migrasjon. 609 00:35:36,080 --> 00:35:40,170 Og vi kommer til, som før, definere en ny tabell. 610 00:35:40,170 --> 00:35:42,773 Så Schema :: skape en tabell kalt kommentarer. 611 00:35:42,773 --> 00:35:47,410 612 00:35:47,410 --> 00:35:48,430 Denne funksjonen her. 613 00:35:48,430 --> 00:35:51,620 Og inne i denne tabellen hva vi kommer til å gjøre er å først, 614 00:35:51,620 --> 00:35:54,260 som før, tildele en ID. 615 00:35:54,260 --> 00:35:56,552 Intervaller ID. 616 00:35:56,552 --> 00:36:05,440 >> Vi kommer til å tillate brukere å knytte sitt navn med en spesiell kommentar. 617 00:36:05,440 --> 00:36:10,080 Vi kommer til å ha noe innhold som går sammen med dette, tekstinnhold. 618 00:36:10,080 --> 00:36:13,580 619 00:36:13,580 --> 00:36:15,910 Og her er hva vi kommer til å gjøre er noe annerledes. 620 00:36:15,910 --> 00:36:23,620 Vi kommer til å skape et heltall Det kalles post_id som 621 00:36:23,620 --> 00:36:32,100 kommer til å betegne hva innlegget en spesiell kommentar går med. 622 00:36:32,100 --> 00:36:35,410 >> I tillegg er vi faktisk kommer til å satt en fremmednøkkelbegrensning på dette. 623 00:36:35,410 --> 00:36:37,750 Så MySQL vil håndheve det. 624 00:36:37,750 --> 00:36:39,840 Vi prøver ikke å tildele kommentar nummer 625 00:36:39,840 --> 00:36:44,440 5 å poste 5000 hvis vi ikke har hadde 5000 innlegg på det. 626 00:36:44,440 --> 00:36:50,240 Så det vi gjør her, vi gjør utenlandske post_id 627 00:36:50,240 --> 00:37:02,046 kommer til å være forbundet med ID-feltet fra tabell innlegg. 628 00:37:02,046 --> 00:37:05,900 Og vi vil faktisk gjøre noe annet nyttig, er onDelete. 629 00:37:05,900 --> 00:37:11,180 >> Så hvis vi slette noen poste fra databasen, 630 00:37:11,180 --> 00:37:15,507 at vi ønsker å cascade den sletter for kommentarer også. 631 00:37:15,507 --> 00:37:18,090 Fordi det er ikke veldig nyttig for oss å ha kommentarer på innlegg 632 00:37:18,090 --> 00:37:19,900 som ikke eksisterer. 633 00:37:19,900 --> 00:37:23,764 Og til slutt, som før, vi er kommer til å sette tidsstempler på dette. 634 00:37:23,764 --> 00:37:28,690 635 00:37:28,690 --> 00:37:33,510 Og som før, skal vi ha motsatt migrasjon være 636 00:37:33,510 --> 00:37:37,920 slippe kommentarer tabellen. 637 00:37:37,920 --> 00:37:40,070 >> Så nå går vi tilbake til her, vi skal 638 00:37:40,070 --> 00:37:43,110 å kjøre denne migrasjon, håndverker migrere. 639 00:37:43,110 --> 00:37:46,400 Og nå er det brukt dette migrasjon som vi nettopp opprettet. 640 00:37:46,400 --> 00:37:50,080 Så hvis vi en titt på phpMyAdmin, vi gjør, faktisk, nå 641 00:37:50,080 --> 00:37:53,210 har et kommentarer tabell som har den struktur som vi nettopp har angitt. 642 00:37:53,210 --> 00:37:56,900 643 00:37:56,900 --> 00:37:59,610 Slik som før, vi er kommer til å lage en ny modell 644 00:37:59,610 --> 00:38:04,450 til abstrakt SQL tabellen at vi nettopp opprettet. 645 00:38:04,450 --> 00:38:05,450 >> Så la oss Legg til en ny fil. 646 00:38:05,450 --> 00:38:06,908 Vi kommer til å kalle det comment.php. 647 00:38:06,908 --> 00:38:10,160 648 00:38:10,160 --> 00:38:15,490 Og dette er faktisk kommer til å være ganske greit med en liten endring 649 00:38:15,490 --> 00:38:17,520 fra hva vi hadde før. 650 00:38:17,520 --> 00:38:22,790 Så klasse Kommentar strekker Eloquent. 651 00:38:22,790 --> 00:38:25,930 Og hva vi skal å gjøre her er å definere 652 00:38:25,930 --> 00:38:31,360 en funksjon som er den forhold til andre modeller. 653 00:38:31,360 --> 00:38:39,250 Så vi kommer til å ha et innlegg funksjon her som returnerer dette forholdet. 654 00:38:39,250 --> 00:38:43,330 Så vi spesifisere at dette tilhører poste, 655 00:38:43,330 --> 00:38:49,200 sier at det er ett innlegg at denne kommentaren tilhører. 656 00:38:49,200 --> 00:38:53,917 >> Dette har faktisk å være kapital P for modellen. 657 00:38:53,917 --> 00:38:56,500 Og nå bare på den andre flip side, må vi si at, hei. 658 00:38:56,500 --> 00:38:58,160 Innlegg har kommentarer. 659 00:38:58,160 --> 00:39:03,030 Så hva vi skal gjøre er definere offentlige funksjons kommentarer. 660 00:39:03,030 --> 00:39:07,100 661 00:39:07,100 --> 00:39:13,620 Og her blir returnert dette har mange kommentar. 662 00:39:13,620 --> 00:39:16,630 663 00:39:16,630 --> 00:39:22,010 Så nå magisk når vi har et innlegg, vi kan få attributt kommentarer 664 00:39:22,010 --> 00:39:25,615 og det vil fylle den med informasjon fra databasen. 665 00:39:25,615 --> 00:39:32,950 666 00:39:32,950 --> 00:39:38,220 >> Så la oss faktisk gå gjennom og legge til en ny funksjon i vårt syn fil 667 00:39:38,220 --> 00:39:43,600 slik at vi kan både skjerm og lage kommentarer. 668 00:39:43,600 --> 00:39:54,010 669 00:39:54,010 --> 00:39:56,865 Så vi kommer til å definere en ny seksjon. 670 00:39:56,865 --> 00:39:59,890 La oss bare skille det med en horisontal linje. 671 00:39:59,890 --> 00:40:04,065 Seksjon id = "kommentarer". 672 00:40:04,065 --> 00:40:06,990 Hva vi kommer til å gjøre her er, som før, 673 00:40:06,990 --> 00:40:09,880 iterere gjennom alle kommentarene. 674 00:40:09,880 --> 00:40:12,960 Så egentlig hvordan vi gjør dette er, som jeg nevnte, ganske magisk. 675 00:40:12,960 --> 00:40:14,440 >> Vi gjør skrive kommentarer. 676 00:40:14,440 --> 00:40:17,410 677 00:40:17,410 --> 00:40:22,710 Og så kan vi gjøre dette for hver løkke over hver av kommentarene. 678 00:40:22,710 --> 00:40:25,740 Og hva vi kommer til å gjøre er div class kommentar, 679 00:40:25,740 --> 00:40:29,240 og vi kommer til å faktisk skrive ut denne kommentaren. 680 00:40:29,240 --> 00:40:34,150 Så vise at hei, kommentere name-- personen 681 00:40:34,150 --> 00:40:38,080 som postet denne comment-- sier dot dot dot. 682 00:40:38,080 --> 00:40:41,240 Vi kommer til å sette dette i en blokk sitat, bare for å gjøre det ser fint. 683 00:40:41,240 --> 00:40:46,470 Og deretter kommentere innhold blokksitat. 684 00:40:46,470 --> 00:40:49,790 685 00:40:49,790 --> 00:40:50,892 Og foreach. 686 00:40:50,892 --> 00:40:53,100 Så nå dette kommer til å sløyfe gjennom alle kommentarene 687 00:40:53,100 --> 00:40:56,500 som er forbundet med hver av innleggene 688 00:40:56,500 --> 00:41:00,960 og vise hver av disse kommentarene. 689 00:41:00,960 --> 00:41:05,120 Jeg kommer til å legge til en annen del ned her, som tillater oss å legge til en kommentar. 690 00:41:05,120 --> 00:41:07,400 Så h3 class. 691 00:41:07,400 --> 00:41:09,580 Sette en tittel her. 692 00:41:09,580 --> 00:41:10,934 Legge til en kommentar. 693 00:41:10,934 --> 00:41:13,886 694 00:41:13,886 --> 00:41:15,700 Og vi kommer til å definere en ny form. 695 00:41:15,700 --> 00:41:18,730 >> Slik som før, vi er kommer til å gjøre form action. 696 00:41:18,730 --> 00:41:22,740 Og her er den nye handlingen vi er kommer til å definere en ny kontroller som 697 00:41:22,740 --> 00:41:26,770 tillater oss å svare på innlegg forespørsler om å lage kommentarer. 698 00:41:26,770 --> 00:41:33,365 Så URL :: rute createComment. 699 00:41:33,365 --> 00:41:37,730 Jeg kommer til å passere i parameter her. 700 00:41:37,730 --> 00:41:40,380 IDen til innlegget som vi skaper kommentar på. 701 00:41:40,380 --> 00:41:45,340 702 00:41:45,340 --> 00:41:50,280 Og deretter ble fremgangsmåten ifølge denne skjemaet skal være innlegg. 703 00:41:50,280 --> 00:41:57,240 >> Nå kommer vi til å legge inn en to feltene, form gruppe. 704 00:41:57,240 --> 00:42:04,670 Dette kommer til å være en inngang med nevne "navn" og class = "form-kontroll", 705 00:42:04,670 --> 00:42:14,250 type = "text", og med den plassholder = "Ditt navn". 706 00:42:14,250 --> 00:42:19,380 Vi kommer også til å definere annen form feltet, som 707 00:42:19,380 --> 00:42:22,970 kommer til å være en tekst område som vi hadde før. 708 00:42:22,970 --> 00:42:25,480 Akkurat som før, kall det innhold. 709 00:42:25,480 --> 00:42:31,160 Class = "form-kontroll." 710 00:42:31,160 --> 00:42:41,660 Plassholder = "Skriv her." 711 00:42:41,660 --> 00:42:44,100 >> Og bare slik at vi faktisk kan sende den, 712 00:42:44,100 --> 00:42:55,740 sende inn type og class = "btn btn-primære." 713 00:42:55,740 --> 00:42:57,005 Lukke skjemaet. 714 00:42:57,005 --> 00:42:59,010 Lukke denne handlingen. 715 00:42:59,010 --> 00:43:06,580 Så nå hvis vi oppdatere denne siden hvor vi har, sier en bestemt stilling. 716 00:43:06,580 --> 00:43:10,310 Vi må starte serveren. 717 00:43:10,310 --> 00:43:12,340 PHP håndverker tjene. 718 00:43:12,340 --> 00:43:15,630 719 00:43:15,630 --> 00:43:18,334 Reboot dette. 720 00:43:18,334 --> 00:43:19,500 Vi må definere ruten. 721 00:43:19,500 --> 00:43:25,090 Men for nå, la oss bare ta dette ut, slik at vi faktisk kan vise deg 722 00:43:25,090 --> 00:43:28,750 hva siden ser ut, og deretter vi vil faktisk lage den ruten. 723 00:43:28,750 --> 00:43:29,250 Så, hei. 724 00:43:29,250 --> 00:43:37,080 Vi har denne nye formen ned her slik at vi kan lage kommentarer. 725 00:43:37,080 --> 00:43:39,950 Så la oss faktisk definere et funksjon innenfor styringen 726 00:43:39,950 --> 00:43:43,020 slik at vi kan legge til kommentarer. 727 00:43:43,020 --> 00:43:43,650 La oss gå tilbake. 728 00:43:43,650 --> 00:43:48,420 Og innen blogcontroller.php, hva vi skal gjøre 729 00:43:48,420 --> 00:43:51,620 er å lage en ny funksjon kalt skape kommentar. 730 00:43:51,620 --> 00:43:54,220 731 00:43:54,220 --> 00:43:57,040 >> Offentlig funksjon createComment. 732 00:43:57,040 --> 00:44:00,130 Dette kommer til å ha et enkelt parameter er ID av innleggene 733 00:44:00,130 --> 00:44:02,280 at vi kommenterer. 734 00:44:02,280 --> 00:44:04,790 Og som før, vi er kommer til å først få innlegg. 735 00:44:04,790 --> 00:44:10,790 Så poste, findOrfail id. 736 00:44:10,790 --> 00:44:15,020 Etterpå skal vi for å skape en ny kommentar. 737 00:44:15,020 --> 00:44:18,880 Så kommentere = ny kommentar. 738 00:44:18,880 --> 00:44:26,820 Kommentar name = Input :: få navn. 739 00:44:26,820 --> 00:44:39,420 Kommentar content = samme ny linje inn pauser på Input :: få innhold. 740 00:44:39,420 --> 00:44:43,460 >> Og til slutt, vi er nødt til å knytte denne kommentaren med innlegget. 741 00:44:43,460 --> 00:44:47,230 Så vi kommer til å bruke denne funksjonen, kommentarer, 742 00:44:47,230 --> 00:44:50,260 som tillater oss å spare dette forholdet. 743 00:44:50,260 --> 00:44:54,780 Så nå denne kommentaren vil ha automatisk etter ID. 744 00:44:54,780 --> 00:44:57,640 Vi kunne også sette den manuelt, er men dette 745 00:44:57,640 --> 00:45:02,490 mer lett å lese så langt som funksjon går. 746 00:45:02,490 --> 00:45:05,860 Og etter at vi utfører dette, hva vi ønsker å gjøre 747 00:45:05,860 --> 00:45:10,840 er omdirigere brukeren til rute spesifisert av viewPost 748 00:45:10,840 --> 00:45:16,010 med array med parameter av innlegget ID. 749 00:45:16,010 --> 00:45:20,360 750 00:45:20,360 --> 00:45:24,660 >> Og nå, slik at dette faktisk funksjoner, må vi definere denne ruten. 751 00:45:24,660 --> 00:45:27,126 Ruten :: innlegg. 752 00:45:27,126 --> 00:45:32,800 Og nå skal vi kalle dette post slash ID slash kommentar. 753 00:45:32,800 --> 00:45:36,725 Array bruker den nye funksjonen at vi nettopp opprettet. 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å nå forhåpentligvis hvis vi oppdatere denne siden og legge inn en kommentar, sier David Malan. 760 00:45:56,150 --> 00:46:00,630 761 00:46:00,630 --> 00:46:03,920 "Forhåpentligvis dette fungerer." 762 00:46:03,920 --> 00:46:05,216 Send. 763 00:46:05,216 --> 00:46:09,050 Vi gjør, faktisk, har en kommentere dette blogginnlegget. 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å nå har vi en nokså funksjonell blogginnlegg. 768 00:46:21,430 --> 00:46:23,180 Vi er bare nødt til å legge til et par tweaks så 769 00:46:23,180 --> 00:46:29,090 at vi har litt mer nyttig informasjon om disse innleggene. 770 00:46:29,090 --> 00:46:32,780 >> Så hvis vi går tilbake til den forside, har vi ingen mening 771 00:46:32,780 --> 00:46:38,790 hvor mange kommentarer er på hver av disse innleggene. 772 00:46:38,790 --> 00:46:41,340 Så det vi blir faktisk kommer å gjøre er, inne i vår modell, 773 00:46:41,340 --> 00:46:51,250 definere en hjelpefunksjon som gjør det mulig oss til å angi antall kommentarer 774 00:46:51,250 --> 00:46:53,020 som går med en bestemt stilling. 775 00:46:53,020 --> 00:46:56,050 Så vi kommer til å skape en hjelper funksjon. 776 00:46:56,050 --> 00:46:58,020 >> Offentlig funksjon. 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 streng som angir antall kommentarer som går langs med den. 780 00:47:07,180 --> 00:47:12,850 Og hva vi skal gjøre er å si at num = dette kommentarer telle. 781 00:47:12,850 --> 00:47:15,150 Så vi kommer til å telle antall kommentarer. 782 00:47:15,150 --> 00:47:22,900 Og dersom dette tallet er lik 1, er vi bare kommer til å returnere en kommentar. 783 00:47:22,900 --> 00:47:28,890 Og så ellers, ønsker vi å komme tilbake sammenkjedingen av num og kommentarer, 784 00:47:28,890 --> 00:47:31,890 så vi får pluralization riktig. 785 00:47:31,890 --> 00:47:33,380 Bare gjøre dette en enkelt tilbud. 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 >> Og nå kan vi bruke denne funksjonen direkte inne fra vårt syn. 789 00:47:41,140 --> 00:47:44,510 Så hvis vi går tilbake til den delvis innlegg som vi har opprettet, 790 00:47:44,510 --> 00:47:49,370 Nå ønsker vi å faktisk vise antall kommentarer. 791 00:47:49,370 --> 00:47:52,660 Så det vi kan gjøre er post, bruke denne funksjonen 792 00:47:52,660 --> 00:47:57,230 at vi nettopp opprettet for å vise antall kommentarer. 793 00:47:57,230 --> 00:48:00,440 Så hvis vi nå oppdatere, det gjør i virkeligheten skjerm 794 00:48:00,440 --> 00:48:02,240 tall kommentarer som går sammen med det. 795 00:48:02,240 --> 00:48:05,320 >> Hvis vi ønsket å være fancy hvis du faktisk se på fordelingen kode, 796 00:48:05,320 --> 00:48:07,800 vi kan faktisk koble dette til kommentarene. 797 00:48:07,800 --> 00:48:17,040 Hvis du husker, vi definert innenfor se at dette har seksjonen ID kommentarer. 798 00:48:17,040 --> 00:48:22,460 Så hvis vi faktisk ønsket å knytte direkte til kommentarfeltet, hva 799 00:48:22,460 --> 00:48:36,000 vi vil gjøre her er a href URL til ruten viewPost. 800 00:48:36,000 --> 00:48:40,550 Passere i matrisen ID av post-ID. 801 00:48:40,550 --> 00:48:46,140 Og da vi ønsker å gå til spesifikt kommentarfeltet. 802 00:48:46,140 --> 00:48:49,900 >> Her la oss lukke En kode. 803 00:48:49,900 --> 00:48:52,950 Så nå hvis vi oppdatere denne side, klikker vi på dette. 804 00:48:52,950 --> 00:48:54,700 Vi vil gå direkte til kommentarfeltet. 805 00:48:54,700 --> 00:48:57,580 Hvis vi hadde et lengre innlegg, kan du faktisk se dette sprett ned. 806 00:48:57,580 --> 00:49:02,668 Men du vil merke at det er ikke på toppen av siden. 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 er en ganske grei eksempel på noe enkelt 810 00:49:08,582 --> 00:49:09,790 at du kan gjøre med Laravel. 811 00:49:09,790 --> 00:49:13,230 >> Men du kan legge merke til her at Vi har gjort mange ting 812 00:49:13,230 --> 00:49:16,200 med relativt liten mengde med kode. 813 00:49:16,200 --> 00:49:19,420 Laravel tillater oss å gjøre det SQL-spørringer bak kulissene. 814 00:49:19,420 --> 00:49:21,960 Det gjør sanitær for oss bak kulissene. 815 00:49:21,960 --> 00:49:25,940 Tillater oss å gjøre disse relasjonene veldig lett uten oss måtte 816 00:49:25,940 --> 00:49:33,350 å gjøre noe SQL delta uttalelser til kombinere kommentarer med hva innleggene. 817 00:49:33,350 --> 00:49:36,480 Lar oss å gjøre dette arv av maler 818 00:49:36,480 --> 00:49:43,780 slik at vi kan definere disse hekke filer slik at vi ikke gjenta oss selv, 819 00:49:43,780 --> 00:49:47,020 akkurat som når vi hadde det visning av blogginnlegg 820 00:49:47,020 --> 00:49:50,770 at vi ikke trenger å kopiere og lime inn koden. 821 00:49:50,770 --> 00:49:55,450 >> Og herfra kan du bygge stadig mer kompliserte programmer. 822 00:49:55,450 --> 00:49:58,370 Du kan forestille deg hvis vi ønsket å gjennomføre logge inn, 823 00:49:58,370 --> 00:50:05,532 vi kunne si, få inn en tredjepart rammeverk som gjør det mulig for oss å gjøre det. 824 00:50:05,532 --> 00:50:07,490 Det er en haug av dem som er virkelig, virkelig 825 00:50:07,490 --> 00:50:09,970 flott at du liker, passordgjenoppretting. 826 00:50:09,970 --> 00:50:14,450 Og det vil sende deg en tilbakestille passordet epost. 827 00:50:14,450 --> 00:50:18,260 Vi kan implementere tillatelse slik at jeg kan lage et innlegg, 828 00:50:18,260 --> 00:50:20,350 men noen andre kan ikke redigere det. 829 00:50:20,350 --> 00:50:24,610 Vi kan implementere funksjonalitet for å slette innlegg. 830 00:50:24,610 --> 00:50:28,160 >> Men du kan se her at vi har ganske mye alle rudimentære komponenter 831 00:50:28,160 --> 00:50:31,640 å bygge noen virkelig, virkelig, dynamiske og spennende web apps. 832 00:50:31,640 --> 00:50:34,035 Så med det, tror jeg vi er bra. 833 00:50:34,035 --> 00:50:35,720 Har dere noen spørsmål? 834 00:50:35,720 --> 00:50:36,220 Ja? 835 00:50:36,220 --> 00:50:38,090 >> SPEAKER 3: Hvordan gjør du få statisk innhold? 836 00:50:38,090 --> 00:50:39,256 >> ERIC Ouyang: Statisk innhold. 837 00:50:39,256 --> 00:50:45,520 Så du har sett før at når vi hadde denne retten her, dette oppsettet innhold, 838 00:50:45,520 --> 00:50:49,625 Vis gjøre, vi hadde denne uten denne matrisen etterpå. 839 00:50:49,625 --> 00:50:56,440 840 00:50:56,440 --> 00:50:59,152 Blog.index, vi hadde denne som bare en statisk fil. 841 00:50:59,152 --> 00:51:00,860 Så hvis vi ikke passerer noe sammen til det, 842 00:51:00,860 --> 00:51:03,340 det vil bare gjengi HTML direkte. 843 00:51:03,340 --> 00:51:09,240 Men hvis vi passerer i denne assosiativ rekke innlegg, som er dynamisk 844 00:51:09,240 --> 00:51:12,950 trekkes fra databasen, vi kan gjøre siden dynamisk. 845 00:51:12,950 --> 00:51:13,450 Cool. 846 00:51:13,450 --> 00:51:14,830 Andre spørsmål? 847 00:51:14,830 --> 00:51:16,786 848 00:51:16,786 --> 00:51:19,720 SPEAKER 3: Hvordan vil du sammenligne Laravel til kanskje noen andre alternativer? 849 00:51:19,720 --> 00:51:20,525 ERIC Ouyang: Sure. 850 00:51:20,525 --> 00:51:21,025 Yeah. 851 00:51:21,025 --> 00:51:23,430 Så Laravel er-- det er en stor question-- 852 00:51:23,430 --> 00:51:26,190 ett av mange alternativer for web rammeverk. 853 00:51:26,190 --> 00:51:31,160 Så Ruby on Rails er en som er populært. 854 00:51:31,160 --> 00:51:34,590 Jeg tror Twitter pleide å være implementert med Ruby on Rails. 855 00:51:34,590 --> 00:51:37,600 Jeg tror de har siden byttet. 856 00:51:37,600 --> 00:51:40,780 Det er en annen en som heter FuelPHP. 857 00:51:40,780 --> 00:51:46,120 >> Så Ruby on Rails bruker Ruby språk og implementerer mye av MVC stuff 858 00:51:46,120 --> 00:51:48,200 som vi ser her. 859 00:51:48,200 --> 00:51:52,320 FuelPHP er en annen PHP rammeverk. 860 00:51:52,320 --> 00:51:54,490 Django er en av mine favoritter. 861 00:51:54,490 --> 00:51:57,010 Det er en web-rammeverk for Python. 862 00:51:57,010 --> 00:52:01,270 Så du kan skrive din web app i Python. 863 00:52:01,270 --> 00:52:03,760 Så det er massevis av disse alternativene. 864 00:52:03,760 --> 00:52:06,170 >> Laravel, tror jeg, av og stor er min favoritt rett 865 00:52:06,170 --> 00:52:08,232 nå for PHP bare fordi av komponentene 866 00:52:08,232 --> 00:52:09,440 som vi snakket om tidligere. 867 00:52:09,440 --> 00:52:11,910 Det er Komponist aktivert. 868 00:52:11,910 --> 00:52:15,750 Det inkluderer en virkelig, virkelig uttrykks ORM system. 869 00:52:15,750 --> 00:52:18,800 Har også en virkelig fantastisk templating språk som noen av de andre 870 00:52:18,800 --> 00:52:20,630 bare gir ikke. 871 00:52:20,630 --> 00:52:21,400 Og vandringer. 872 00:52:21,400 --> 00:52:23,432 Vandringer er awesome også. 873 00:52:23,432 --> 00:52:24,860 Cool? 874 00:52:24,860 --> 00:52:25,390 Awesome. 875 00:52:25,390 --> 00:52:27,560 Vel, takk så mye for ser dette seminaret, 876 00:52:27,560 --> 00:52:30,650 og lykke til på den endelige prosjekter. 877 00:52:30,650 --> 00:52:31,616