1 00:00:00,000 --> 00:00:02,538 >> [Musik spiller] 2 00:00:02,538 --> 00:00:10,800 3 00:00:10,800 --> 00:00:12,390 >> ERIC Ouyang: Hey, alle. 4 00:00:12,390 --> 00:00:13,580 Velkommen. 5 00:00:13,580 --> 00:00:16,860 Dette er Bygning Dynamic Web Apps med Laravel. 6 00:00:16,860 --> 00:00:18,290 Mit navn er Eric Ouyang. 7 00:00:18,290 --> 00:00:23,860 Jeg er en sophomore studerer samfundsfag med en sekundær i datalogi, 8 00:00:23,860 --> 00:00:27,290 og jeg bor i Adams Hus her på Harvard. 9 00:00:27,290 --> 00:00:33,340 >> Så Laravel på sit mest centrale, er en MVC web app rammer. 10 00:00:33,340 --> 00:00:38,265 Så kan lide hvad du fyre har gjort med CS50 Finance, 11 00:00:38,265 --> 00:00:42,480 Laravel er en ramme, der giver mulighed dig at opbygge dynamiske web apps. 12 00:00:42,480 --> 00:00:47,710 Så du kan tænke på det i nogle sanser som en udvidelse af den type ting 13 00:00:47,710 --> 00:00:50,470 du har gjort i CS50 Finance, men et system, der er 14 00:00:50,470 --> 00:00:55,890 meget mere robust, en masse mere elegant i nogle sanser, 15 00:00:55,890 --> 00:00:57,870 og giver en masse funktionalitet for dig 16 00:00:57,870 --> 00:01:03,060 at bygge temmelig kompliceret webapplikationer. 17 00:01:03,060 --> 00:01:05,010 Så lad os gå igennem nogle af de vigtigste funktioner, 18 00:01:05,010 --> 00:01:09,550 og så vil vi dykke ned i en eksempel på at bygge en blog 19 00:01:09,550 --> 00:01:12,500 ansøgning med Laravel. 20 00:01:12,500 --> 00:01:16,700 >> Så en af ​​de første ting, adskiller den fra MVC type arbejde 21 00:01:16,700 --> 00:01:22,100 at du har gjort med CS50 er det indeholder en ORM motor. 22 00:01:22,100 --> 00:01:27,410 Så ORM står for objekt relationel mapping. 23 00:01:27,410 --> 00:01:31,080 Så dette giver dig mulighed for at opbygge et lag af abstraktion 24 00:01:31,080 --> 00:01:35,230 mellem databasen og dine controllere. 25 00:01:35,230 --> 00:01:39,150 Så i modsætning til i CS50 Finance, hvor du direkte lave forespørgsler, 26 00:01:39,150 --> 00:01:44,790 ORM lag gør det muligt at abstrakt som væk og skabe 27 00:01:44,790 --> 00:01:48,085 modeller, der er mere magtfulde end Du kan direkte med SQL-forespørgsler. 28 00:01:48,085 --> 00:01:50,590 29 00:01:50,590 --> 00:01:53,510 >> En anden ting, der er virkelig nyttigt er arvelige skabeloner. 30 00:01:53,510 --> 00:01:58,990 Så du vil opdage i CS50 Finance, du ender omskrivning en masse ting, 31 00:01:58,990 --> 00:02:03,150 hvor placerer du kunne potentielt genbruge ting, du ikke er i stand til. 32 00:02:03,150 --> 00:02:08,539 Så her i Laravel, kan du bruge, hvad der er kendt som bladet skabelon motor 33 00:02:08,539 --> 00:02:10,530 at skabe en master layout. 34 00:02:10,530 --> 00:02:15,840 Og derfra kan du arve således at sub-skabeloner kan faktisk 35 00:02:15,840 --> 00:02:21,210 omfatte elementer inden at større basis skabelon. 36 00:02:21,210 --> 00:02:21,810 >> Migration. 37 00:02:21,810 --> 00:02:29,010 Så dette er en temmelig standard funktioner på de fleste moderne web-applikation rammer. 38 00:02:29,010 --> 00:02:32,710 Så dette giver dig mulighed for at repræsentere databaseskema ændringer i koden. 39 00:02:32,710 --> 00:02:39,200 Så uden at gå at sige, phpMyAdmin, du rent faktisk kan skabe disse vandringer 40 00:02:39,200 --> 00:02:44,660 hvor du repræsenterer databasen skemaændringer i kode direkte. 41 00:02:44,660 --> 00:02:48,070 Og det giver dig mulighed for at-- især hvis du har flere mennesker, der arbejder 42 00:02:48,070 --> 00:02:52,650 på samme web application-- spore disse ændringer, 43 00:02:52,650 --> 00:02:55,380 siger i GitHub, eller en anden repository. 44 00:02:55,380 --> 00:03:00,880 >> Så dette er virkelig nyttige og afbøder nødvendigheden 45 00:03:00,880 --> 00:03:04,580 til f.eks passerer omkring en masse SQL lossepladser. 46 00:03:04,580 --> 00:03:07,140 Og endelig, Composer noget virkelig, virkelig nyttige 47 00:03:07,140 --> 00:03:09,840 der giver dig mulighed for at bruge andre folks kode til at gøre fantastiske ting. 48 00:03:09,840 --> 00:03:14,020 Så Laravel er struktureret som flere komponist pakker. 49 00:03:14,020 --> 00:03:17,870 Så sige, hvis du ønskede at bringe i en autentificering pakke 50 00:03:17,870 --> 00:03:23,440 eller hvis du ønskede at bringe i nogle slags generator script eller en admin 51 00:03:23,440 --> 00:03:26,910 interface, kan du plug and play disse komponenter med komponist. 52 00:03:26,910 --> 00:03:30,470 53 00:03:30,470 --> 00:03:31,570 >> Så lad os komme i gang. 54 00:03:31,570 --> 00:03:35,185 Eventuelle spørgsmål fra dig fyre før vi komme i gang? 55 00:03:35,185 --> 00:03:36,500 Ingen spørgsmål? 56 00:03:36,500 --> 00:03:37,490 Cool. 57 00:03:37,490 --> 00:03:39,990 Så det første skridt er installation Komponist. 58 00:03:39,990 --> 00:03:43,590 Så Composer gør det muligt at håndtere disse afhængigheder, 59 00:03:43,590 --> 00:03:47,770 uanset om det er Laravel rammer eller en anden tredjepart forlængelse. 60 00:03:47,770 --> 00:03:50,400 Den første kommando tillader dig at downloade Komponist, 61 00:03:50,400 --> 00:03:55,890 og den anden kommandoen tillader dig at flytte den ind i din lokale bin mappe 62 00:03:55,890 --> 00:04:01,340 så du kan køre Komponist direkte gennem terminalen. 63 00:04:01,340 --> 00:04:05,405 >> Efter dette, gå videre og oprette et nyt Laravel projekt. 64 00:04:05,405 --> 00:04:07,280 Vi faktisk kommer til at bruge nogle eksempel kode 65 00:04:07,280 --> 00:04:10,760 at jeg har sat sammen at oprette denne blog. 66 00:04:10,760 --> 00:04:14,420 Men hvis du starter fra bunden, ville du bruge denne kommando 67 00:04:14,420 --> 00:04:18,160 heroppe, komponist skabe-projekt, laravel skråstreg laravel, og derefter 68 00:04:18,160 --> 00:04:19,940 navnet på dit projekt. 69 00:04:19,940 --> 00:04:22,275 Og der vil omfatte alle distribution kode 70 00:04:22,275 --> 00:04:23,733 for at starte et nyt Laravel projekt. 71 00:04:23,733 --> 00:04:28,870 Så for din CS50 afgangsprojekter, vil du sandsynligvis vil bruge denne kommando. 72 00:04:28,870 --> 00:04:31,210 >> Men vi kommer til at starte med dette. 73 00:04:31,210 --> 00:04:34,630 Så når du har gjort at, er du nødt til at få 74 00:04:34,630 --> 00:04:40,190 en temmelig omfattende antal af filer i blog50. 75 00:04:40,190 --> 00:04:43,840 Så lad os bare gå igennem nogle af disse komponenter. 76 00:04:43,840 --> 00:04:49,060 Du vil bemærke på denne rute bibliotek, der er en app mappe. 77 00:04:49,060 --> 00:04:52,960 Inde i app mappe, er der et par nyttige mapper. 78 00:04:52,960 --> 00:04:56,330 Af note at starte med er denne config mappe. 79 00:04:56,330 --> 00:04:59,210 Så dette opstiller hvordan Deres web-applikation er 80 00:04:59,210 --> 00:05:04,350 gå til, siger, autentificere mennesker eller kontante ting eller oprette forbindelse til databasen. 81 00:05:04,350 --> 00:05:06,400 >> Og hvad er egentlig nyttigt er at Laravel 82 00:05:06,400 --> 00:05:09,130 giver dig mulighed for at oprette forskellige udviklingsmiljøer. 83 00:05:09,130 --> 00:05:12,090 Så hvad vi har gjort her, er, hvis vi går under den lokale mappe, 84 00:05:12,090 --> 00:05:14,720 der er en database.php fil. 85 00:05:14,720 --> 00:05:18,320 Og du vil opdage her, vi oprette en MySQL forbindelse, 86 00:05:18,320 --> 00:05:22,230 tillader enkeltpersoner til at forbinde til MySQL-serveren, der 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 har forbindelse til en database at jeg oprettet kaldet Blog50. 89 00:05:26,980 --> 00:05:31,390 90 00:05:31,390 --> 00:05:37,085 >> Så lad os faktisk gå videre og køre arbejder version af denne, 91 00:05:37,085 --> 00:05:39,710 bare for at få en fornemmelse af, hvad det program, vi bygger 92 00:05:39,710 --> 00:05:41,390 ser ud. 93 00:05:41,390 --> 00:05:46,150 Så jeg har en kopi af denne Blog50 afsluttet. 94 00:05:46,150 --> 00:05:51,910 Så Laravel faktisk har indbygget en server 95 00:05:51,910 --> 00:05:53,910 at du kan køre direkte fra kommandolinjen. 96 00:05:53,910 --> 00:05:56,900 Så dette svarer til Pset før, når du rent faktisk 97 00:05:56,900 --> 00:06:00,580 bygge din egen server i C. Så de har en indbygget, så 98 00:06:00,580 --> 00:06:04,010 at du kan køre dine Laravel apps direkte fra kommandolinjen. 99 00:06:04,010 --> 00:06:11,650 >> Så hvis vi gør php håndværker tjener, dette vil lancere en udvikling server 100 00:06:11,650 --> 00:06:13,880 på port 8.000. 101 00:06:13,880 --> 00:06:18,250 Så hvis vi går til den lokale vært 8.000, vil du bemærke, at, hey. 102 00:06:18,250 --> 00:06:20,800 Vi har vores blog op at køre. 103 00:06:20,800 --> 00:06:25,090 Så Laravel her genererer forsiden af ​​vores blog. 104 00:06:25,090 --> 00:06:26,350 Meget enkel anvendelse. 105 00:06:26,350 --> 00:06:28,610 Men der er et par virkelig smarte funktioner 106 00:06:28,610 --> 00:06:31,346 at det giver under hætten. 107 00:06:31,346 --> 00:06:33,680 >> Så bloggen programmets ligetil. 108 00:06:33,680 --> 00:06:36,430 Hvis vi ønskede at oprette et indlæg, vi kan klikke på denne knap. 109 00:06:36,430 --> 00:06:40,470 Vi kan sige, "Hey, alle. 110 00:06:40,470 --> 00:06:44,530 Dette er en virkelig sjov seminar, "for eksempel. 111 00:06:44,530 --> 00:06:46,560 Og skrive noget hernede. 112 00:06:46,560 --> 00:06:48,180 Tekst her. 113 00:06:48,180 --> 00:06:51,327 Hvis vi klikker på Send, vil du bemærke, at vores nye blog 114 00:06:51,327 --> 00:06:53,410 indlæg er blevet tilføjet til forsiden af ​​bloggen. 115 00:06:53,410 --> 00:06:56,532 116 00:06:56,532 --> 00:06:59,970 Hvis vi går tilbage her, vil du bemærke, at der har været nogle bemærkninger, der allerede 117 00:06:59,970 --> 00:07:01,160 på bloggen. 118 00:07:01,160 --> 00:07:03,630 Så hvis vi rulle ned, vil du bemærke, at Jonathan Tan siger 119 00:07:03,630 --> 00:07:08,020 at han meget var fascineret af dette indlæg. 120 00:07:08,020 --> 00:07:11,570 >> Så vi vil gå ind i, hvordan objektet relationel mapping tillader 121 00:07:11,570 --> 00:07:16,668 dig at gøre disse relationer i en forholdsvis problemfri måde også. 122 00:07:16,668 --> 00:07:17,660 Cool. 123 00:07:17,660 --> 00:07:20,290 Eventuelle spørgsmål om funktionalitet af det, vi kommer til at 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å lad os starte ud med faktisk skabe databasetabeller. 127 00:07:28,170 --> 00:07:33,190 >> Så minde om, at i CS50 Finans, du sammensætte en tabel for brugerne 128 00:07:33,190 --> 00:07:37,100 samt for bestande i din portefølje. 129 00:07:37,100 --> 00:07:41,040 Så som vi nævnte tidligere, hvad vi bruger i Laravel 130 00:07:41,040 --> 00:07:43,090 er noget kendt som vandringer. 131 00:07:43,090 --> 00:07:48,570 Så hvis vi går tilbage til fordeling kode, 132 00:07:48,570 --> 00:07:51,790 den første kommando, der er nyttigt at Laravel giver dig 133 00:07:51,790 --> 00:07:54,240 er denne migrere kommando. 134 00:07:54,240 --> 00:07:59,220 Så vi kan gøre php håndværker migrere: gøre. 135 00:07:59,220 --> 00:08:01,760 Så dette giver os mulighed for at oprette en migration. 136 00:08:01,760 --> 00:08:03,710 >> Og så vil vi gerne at skabe en migration 137 00:08:03,710 --> 00:08:07,050 kaldet create_posts_table, som vil 138 00:08:07,050 --> 00:08:11,521 at være, hvor vi kommer til at være lagring af vores blogindlæg. 139 00:08:11,521 --> 00:08:14,690 Og du vil opdage her, at det kører gennem nogle kode, der 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år og se på Database, vi vil bemærke under Migrations 142 00:08:22,260 --> 00:08:24,830 at det er oprettet en tom fil for os, som 143 00:08:24,830 --> 00:08:30,100 har standardtekst kode med navnet at vi angivet, skaber stillinger bord. 144 00:08:30,100 --> 00:08:31,670 >> Og det har to funktioner i det. 145 00:08:31,670 --> 00:08:40,539 Up er det, vi ønsker at køre, når migration påføres databasen. 146 00:08:40,539 --> 00:08:46,380 Og ned er, hvad vi vil gøre når vi ønsker at vende en migration. 147 00:08:46,380 --> 00:08:49,890 Så her lad os starte ud med at skrive denne migration. 148 00:08:49,890 --> 00:08:55,480 Så der er en hjælpsom klasse i Laravel kaldet Schema. 149 00:08:55,480 --> 00:08:57,910 >> Så vi kommer til at køre Schema :: skabe. 150 00:08:57,910 --> 00:09:01,080 Og vi kommer til at skabe en tabel kaldet stillinger. 151 00:09:01,080 --> 00:09:05,980 Og her er vi anvende denne ved hjælp af en funktion. 152 00:09:05,980 --> 00:09:11,010 Og inden her, vi vil faktisk specificere indholdet af vores bord. 153 00:09:11,010 --> 00:09:14,860 Vi kommer til at skabe et id, der er auto-inkrementeringen. 154 00:09:14,860 --> 00:09:19,850 155 00:09:19,850 --> 00:09:24,350 >> Derudover vil vi at skabe et felt, 156 00:09:24,350 --> 00:09:27,060 repræsenterer titlen på vores blog-indlæg. 157 00:09:27,060 --> 00:09:29,880 158 00:09:29,880 --> 00:09:36,950 Vi vil også skabe et felt til lagring af teksten i vores blogindlæg. 159 00:09:36,950 --> 00:09:40,600 Og endelig vil vi at lagre nogle tidsstempler 160 00:09:40,600 --> 00:09:44,690 for når vores indlæg er blevet oprettet og når det blev opdateret. 161 00:09:44,690 --> 00:09:46,240 Og for ned, er det forholdsvis enkelt. 162 00:09:46,240 --> 00:09:53,974 Det eneste, vi ønsker, er at drop den tabel, vi har oprettet. 163 00:09:53,974 --> 00:09:54,930 >> Store. 164 00:09:54,930 --> 00:09:55,850 Eventuelle spørgsmål? 165 00:09:55,850 --> 00:09:59,730 166 00:09:59,730 --> 00:10:07,110 Så nu, hvis vi går videre og-- faktisk, lokal vært, 167 00:10:07,110 --> 00:10:09,640 lad mig slette det, vi havde 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 har tænkt mig at slette det, vi havde tidligere. 171 00:10:17,640 --> 00:10:22,870 Drop det og skabe en ny database Blog50. 172 00:10:22,870 --> 00:10:24,930 Så nu, hvad den magiske del er her, at vi 173 00:10:24,930 --> 00:10:28,760 kan anvende disse vandringer direkte til databasen ved hjælp af kommandolinjen 174 00:10:28,760 --> 00:10:29,290 værktøj. 175 00:10:29,290 --> 00:10:35,100 Så hvis vi gør php håndværker migrere, du vil opdage, at, hey. 176 00:10:35,100 --> 00:10:38,320 Det er skabt af migration bordet, som vi vil tage et kig på i en lidt, 177 00:10:38,320 --> 00:10:40,540 og det er anvendt denne første migration. 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 bemærke at det er skabt to tabeller for os. 180 00:10:48,920 --> 00:10:50,300 Først er det vandringer tabel. 181 00:10:50,300 --> 00:10:54,130 Så hvis vi gennemse dette, vil du bemærke, at denne tabel er forholdsvis ligetil. 182 00:10:54,130 --> 00:10:55,490 Det er bare sagt, hey. 183 00:10:55,490 --> 00:10:58,960 Vi har anvendt denne migration. 184 00:10:58,960 --> 00:11:01,470 Vi går tilbage og se på indlæg. 185 00:11:01,470 --> 00:11:05,720 Du vil opdage, at strukturen er præcis, hvad vi havde bedt den. 186 00:11:05,720 --> 00:11:07,350 Vi har en auto-forøgelsen ID. 187 00:11:07,350 --> 00:11:10,450 Vi har en streng til opbevaring titlen, og et tekstfelt 188 00:11:10,450 --> 00:11:11,450 til opbevaring af indholdet. 189 00:11:11,450 --> 00:11:14,040 190 00:11:14,040 --> 00:11:14,706 Store. 191 00:11:14,706 --> 00:11:15,560 Cool. 192 00:11:15,560 --> 00:11:21,626 Eventuelle spørgsmål om vandringer arbejde, hvordan vi kan anvende 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 vil vi gå videre og faktisk skabe modellen. 196 00:11:26,630 --> 00:11:33,100 Så vi ønsker at skabe et indlæg model, lagrer en abstraktion af databasen. 197 00:11:33,100 --> 00:11:41,040 Så snarere end at gøre MySQL forespørgsler direkte, vi kommer til at skabe. 198 00:11:41,040 --> 00:11:45,840 Så vi er nødt til at skabe en mappe i her kaldes modeller. 199 00:11:45,840 --> 00:11:48,905 Og inde her, vi vil oprette en fil kaldet post.php. 200 00:11:48,905 --> 00:11:52,280 201 00:11:52,280 --> 00:11:54,550 >> Inde i denne PHP-fil, vi kommer til at skabe 202 00:11:54,550 --> 00:12:00,590 en klasse indlæg, som strækker veltalende. 203 00:12:00,590 --> 00:12:08,950 Veltalende er navnet på ORM motor, Laravel giver. 204 00:12:08,950 --> 00:12:12,799 Og her kan vi forvente, at du rent faktisk har brug for at skrive noget kode. 205 00:12:12,799 --> 00:12:14,840 Vi kommer til at skrive nogle hjælperfunktioner senere. 206 00:12:14,840 --> 00:12:19,420 Men ud af kassen, vil det allerede erkende, hvad der er i databasen 207 00:12:19,420 --> 00:12:24,770 og vi kan få adgang til, siger, teksten af vores blogindlæg eller titlen, 208 00:12:24,770 --> 00:12:29,230 og skabe ting direkte med temmelig meget ingen som helst kode. 209 00:12:29,230 --> 00:12:31,110 >> Så det er en af ​​de magiske elementer. 210 00:12:31,110 --> 00:12:34,980 Og vind når denne klasse er mere fuldt udbygget, 211 00:12:34,980 --> 00:12:40,480 vi vil indeholde oplysninger om, hvad det er relateret til, så kommentarerne. 212 00:12:40,480 --> 00:12:42,310 Også oprette en funktion så vi kan faktisk 213 00:12:42,310 --> 00:12:46,340 direkte få URL'en af et blogindlæg side. 214 00:12:46,340 --> 00:12:46,840 Cool. 215 00:12:46,840 --> 00:12:47,881 Eventuelle spørgsmål om det? 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 vores model, vi ønsker at skabe en controller, der er 220 00:12:57,860 --> 00:13:02,340 i stand til at kommunikere med disse modeller, og efterfølgende databasen. 221 00:13:02,340 --> 00:13:05,540 Så hvis vi tager et kig på BlogController, vil du 222 00:13:05,540 --> 00:13:08,490 bemærke, at der ikke er meget her lige nu. 223 00:13:08,490 --> 00:13:13,220 Alt er der er et indeks funktion der genererer hjemmesiden, 224 00:13:13,220 --> 00:13:18,220 men uden noget der at vise endnu. 225 00:13:18,220 --> 00:13:20,560 >> Så den første funktion at vi kommer til at skabe 226 00:13:20,560 --> 00:13:25,790 er en, der giver os mulighed for at skabe et blogindlæg. 227 00:13:25,790 --> 00:13:30,540 Så vi kommer til at erklære en ny funktion kaldet newPost. 228 00:13:30,540 --> 00:13:36,430 Og inde her simpelthen, vi vil at indstille layoutet af denne side 229 00:13:36,430 --> 00:13:41,850 at være en render version hvis du husker fra CS50, 230 00:13:41,850 --> 00:13:48,020 af denne skabelon kaldet blog.new, som vi vil skabe i en lille smule. 231 00:13:48,020 --> 00:13:53,170 >> Du vil opdage her på linje seks, vi angivet denne variabel, layout. 232 00:13:53,170 --> 00:13:55,820 Og hvis vi tager et kig på mappevisninger, 233 00:13:55,820 --> 00:14:01,640 der er et layout mappe, som indeholder en meget grundlæggende HTML-fil. 234 00:14:01,640 --> 00:14:04,680 Og note, vil du bemærke at vi har denne beholder 235 00:14:04,680 --> 00:14:06,800 her der giver indhold. 236 00:14:06,800 --> 00:14:09,460 Så inde i vores skabelon hvad vi vil gøre 237 00:14:09,460 --> 00:14:16,180 er at skabe, hvad der kommer til at være substitueret direkte i dette layout. 238 00:14:16,180 --> 00:14:20,060 >> Så vi sagde, at vi ønsker at gøre en skabelon kaldet blog.new. 239 00:14:20,060 --> 00:14:23,790 Men inde i Blog, er der endnu ikke denne nye skabelon. 240 00:14:23,790 --> 00:14:26,910 Så vi kommer til at skabe en fil kaldet new.blade.php. 241 00:14:26,910 --> 00:14:29,860 Dette fortæller Laravel at denne PHP fil skal 242 00:14:29,860 --> 00:14:31,720 gøres med blad skabelon motor. 243 00:14:31,720 --> 00:14:39,510 244 00:14:39,510 --> 00:14:42,630 Så dette er en temmelig ligetil fil. 245 00:14:42,630 --> 00:14:46,690 Det kommer til at være den form, hvori vi faktisk tilføje i et blogindlæg. 246 00:14:46,690 --> 00:14:49,220 >> Så den magiske her fra arv er, at, hey. 247 00:14:49,220 --> 00:14:52,950 Vi ønsker at præcisere, at sektion, indholdet sektion 248 00:14:52,950 --> 00:14:56,640 her, som er afgrænset vedsection ogstop. 249 00:14:56,640 --> 00:15:02,260 Så hvad der er i mellem her kommer til at erstattes i master layout. 250 00:15:02,260 --> 00:15:07,000 Og her, hvad vi ønsker at gøre, er meget blot oprette en ny HTML-fil. 251 00:15:07,000 --> 00:15:08,690 Lad os blot tilføje en hurtig titel. 252 00:15:08,690 --> 00:15:09,600 Tilføj et blogindlæg. 253 00:15:09,600 --> 00:15:12,110 254 00:15:12,110 --> 00:15:15,390 Og i det, vi er kommer til at oprette en formular. 255 00:15:15,390 --> 00:15:19,197 >> Denne formular vil have en handling. 256 00:15:19,197 --> 00:15:21,780 Og det vil være noget at vi erstatte senere, 257 00:15:21,780 --> 00:15:24,200 og vi vil se hvordan routing passer ind her. 258 00:15:24,200 --> 00:15:33,600 Men vi bare kommer til at definere for nu 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 foregår at have metode stolpe. 262 00:15:40,320 --> 00:15:43,940 263 00:15:43,940 --> 00:15:47,590 Inden her, vi vil at have to felter. 264 00:15:47,590 --> 00:15:49,170 Div class = "formular-gruppen". 265 00:15:49,170 --> 00:15:55,806 >> Vi bruger bootstrap CSS biblioteket elskværdig leveres af Twitter. 266 00:15:55,806 --> 00:15:57,720 Så vi kommer til at skabe to af disse. 267 00:15:57,720 --> 00:16:01,700 268 00:16:01,700 --> 00:16:05,970 Så denne første indgang er kommer til at være titlen. 269 00:16:05,970 --> 00:16:08,437 Så input 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 har tænkt mig at tilføje en pladsholder = "Titel". 274 00:16:16,050 --> 00:16:21,570 275 00:16:21,570 --> 00:16:26,140 >> Og så den anden er vil være en tekst område. 276 00:16:26,140 --> 00:16:27,827 Name = "indhold". 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 pladsholder = "Skriv her". 280 00:16:34,610 --> 00:16:42,030 281 00:16:42,030 --> 00:16:43,480 Der vi går. 282 00:16:43,480 --> 00:16:46,760 Endelig vil vi tilføje en hurtig indsende knap. 283 00:16:46,760 --> 00:16:50,370 Type = "send" class = "btn btn-primære". 284 00:16:50,370 --> 00:16:53,370 285 00:16:53,370 --> 00:16:55,340 Så disse er alle funktioner i Bootstrap så 286 00:16:55,340 --> 00:16:58,510 at dette kan lægges på en måde, der er 287 00:16:58,510 --> 00:17:03,730 bytte til brugeren, snarere end nøgen HTML. 288 00:17:03,730 --> 00:17:06,250 >> Så vi har defineret controlleren her. 289 00:17:06,250 --> 00:17:08,930 Vi har defineret en meget enkel visning. 290 00:17:08,930 --> 00:17:12,339 Men hvad der mangler, er bindevævet. 291 00:17:12,339 --> 00:17:15,420 Så på dette punkt, Laravel har ingen idé om, hvordan 292 00:17:15,420 --> 00:17:18,312 vi vil faktisk adgang til denne controller. 293 00:17:18,312 --> 00:17:20,270 Så dette er defineret i en fil kaldet routes.php. 294 00:17:20,270 --> 00:17:22,780 295 00:17:22,780 --> 00:17:24,310 Og lige nu har vi en rute. 296 00:17:24,310 --> 00:17:29,060 Der er, når vi går til hjem sti for denne hjemmeside, 297 00:17:29,060 --> 00:17:33,140 det kommer til at gøre indekset controller. 298 00:17:33,140 --> 00:17:38,880 Så her hvad vi skal gøre, er at gennemføre en ny rute for os at oprette et indlæg. 299 00:17:38,880 --> 00:17:41,910 >> Så vi bruger denne metode få, som angiver 300 00:17:41,910 --> 00:17:48,650 at når en bruger forsøger at få dette page-- specifikt 301 00:17:48,650 --> 00:17:52,850 stillingen skråstreg nye page-- hvad vi vil gøre 302 00:17:52,850 --> 00:18:02,060 er bruge controlleren kaldet BlogController nyt indlæg. 303 00:18:02,060 --> 00:18:03,460 Den ene, som vi lige har oprettet. 304 00:18:03,460 --> 00:18:08,090 Og så vil 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 at skabe en anden funktion i en lille smule. 307 00:18:19,850 --> 00:18:23,520 Men hvad er her under nøglen "som" er det 308 00:18:23,520 --> 00:18:28,195 vi kan erstatte inden vores Blade skabeloner. 309 00:18:28,195 --> 00:18:32,390 310 00:18:32,390 --> 00:18:36,230 Så for nu, lad os faktisk også sige rute. 311 00:18:36,230 --> 00:18:38,380 Så vi vil også at skabe en styreenhed 312 00:18:38,380 --> 00:18:41,020 så vi kan skabe disse stillinger. 313 00:18:41,020 --> 00:18:46,940 Så hvis en bruger stillinger til side indlæg slash ny, hvad vi vil gøre 314 00:18:46,940 --> 00:18:51,350 er bruger en controller, vi kommer til at skabe kort 315 00:18:51,350 --> 00:18:56,160 kaldet BlogController på createPost. 316 00:18:56,160 --> 00:19:01,929 Og vi vil alias dette med som createPost. 317 00:19:01,929 --> 00:19:03,380 Cool. 318 00:19:03,380 --> 00:19:05,811 >> Eventuelle spørgsmål? 319 00:19:05,811 --> 00:19:06,310 Cool. 320 00:19:06,310 --> 00:19:09,790 Så lad os køre det vi har hidtil. 321 00:19:09,790 --> 00:19:16,930 Så hvis vi gør php håndværker tjener, vil vi se masser af fejl. 322 00:19:16,930 --> 00:19:20,385 Så det ser ud som vi har en syntaksfejl 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 8.000, vil du se noget her endnu. 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 for at skrive skråstreg ny, hey. 329 00:19:37,730 --> 00:19:40,425 Det vil være den form, vi lige har oprettet. 330 00:19:40,425 --> 00:19:42,550 Lige nu, ikke har vi gennemført funktionaliteten 331 00:19:42,550 --> 00:19:44,060 på, når vi trykker på knappen Send. 332 00:19:44,060 --> 00:19:47,110 Så hvis vi klikker på Indsend knap, det kommer til at køre en fejl. 333 00:19:47,110 --> 00:19:49,840 Men vi kommer til at kode, lige nu, netop, hvad vi 334 00:19:49,840 --> 00:19:54,840 ønsker at gøre, når en bruger anført denne formular. 335 00:19:54,840 --> 00:19:55,770 >> Så lad os gøre det. 336 00:19:55,770 --> 00:19:57,380 Gå tilbage til controllere filen. 337 00:19:57,380 --> 00:20:00,180 Hvad vi vil gøre, er at gennemføre denne nye funktion 338 00:20:00,180 --> 00:20:04,360 der giver os mulighed for at oprette et indlæg. 339 00:20:04,360 --> 00:20:07,370 340 00:20:07,370 --> 00:20:08,990 Erklær ny funktion. 341 00:20:08,990 --> 00:20:11,527 Offentlig funktion createPost. 342 00:20:11,527 --> 00:20:14,610 Og denne funktion vil være en lidt mere sofistikeret end hvad 343 00:20:14,610 --> 00:20:15,559 vi havde før. 344 00:20:15,559 --> 00:20:18,350 Men du vil se her, at vi ikke er vil faktisk skrive nogen SQL. 345 00:20:18,350 --> 00:20:20,980 ORM, veltalende ORM, vil tillade 346 00:20:20,980 --> 00:20:26,400 os at gøre dette i nogle måder en mere elegant måde. 347 00:20:26,400 --> 00:20:29,140 >> Så vi kommer til at lave et nyt indlæg. 348 00:20:29,140 --> 00:20:34,120 Og her er vi instantiere et nyt objekt 349 00:20:34,120 --> 00:20:38,080 fra den model, vi bare oprettet, stillingen model. 350 00:20:38,080 --> 00:20:44,450 Og hvad vi vil gøre, er at sætte title attribut af dette ved hjælp af noget 351 00:20:44,450 --> 00:20:47,380 at vi får fra serveren. 352 00:20:47,380 --> 00:20:52,060 Så det svarer til, hvad vi havde før i CS50 Finance 353 00:20:52,060 --> 00:20:57,750 hvor vi ville gøre, ved hjælp af Super Global Indlæg søger titel. 354 00:20:57,750 --> 00:21:01,600 >> Så Laravel giver nogle sanitet og whatnot bruger denne hjælpefunktion. 355 00:21:01,600 --> 00:21:07,610 Så vi foretrækker at bruge dette i stedet af dette meget grundlæggende rå form fra PHP. 356 00:21:07,610 --> 00:21:17,430 Og så det, vi vil gøre er indstillet indholdet af det til Input få indhold. 357 00:21:17,430 --> 00:21:20,429 358 00:21:20,429 --> 00:21:22,720 Vi faktisk kommer til at ombryde dette i en nyttig funktion 359 00:21:22,720 --> 00:21:31,820 at PHP giver kaldet nl2br, som slår nye linjer, NLS, ind br, pauser, 360 00:21:31,820 --> 00:21:35,822 således at vi rent faktisk kan have forskellige stykker i det. 361 00:21:35,822 --> 00:21:38,030 Og endelig, hvad vi vil at gøre, er at gemme dette indlæg. 362 00:21:38,030 --> 00:21:41,686 Så vi kalder funktionen spare på denne model. 363 00:21:41,686 --> 00:21:43,800 Vi kommer til at gemme posten. 364 00:21:43,800 --> 00:21:49,970 Og endelig, hvad vi vil gøre er omdirigere brugeren specifikt 365 00:21:49,970 --> 00:21:55,060 til ruten, som vi kommer til at oprette kort, alias ved viewPost. 366 00:21:55,060 --> 00:22:00,435 Og vi kommer til at passere i de argumenter id, er det id af denne nye stilling. 367 00:22:00,435 --> 00:22:04,280 368 00:22:04,280 --> 00:22:05,640 >> Store. 369 00:22:05,640 --> 00:22:09,090 Så nu, hvis vi faktisk gå og køre dette. 370 00:22:09,090 --> 00:22:11,370 Vi kommer til at tilføje et nyt indlæg. 371 00:22:11,370 --> 00:22:15,930 Lad os sige det er seminar 50. 372 00:22:15,930 --> 00:22:17,620 Og sige, sikker. 373 00:22:17,620 --> 00:22:18,240 ADSL. 374 00:22:18,240 --> 00:22:18,740 Uanset hvad. 375 00:22:18,740 --> 00:22:20,320 Nogle slags indhold. 376 00:22:20,320 --> 00:22:21,180 Og forelægger det. 377 00:22:21,180 --> 00:22:23,850 Og vi vil opdage, at, hey. ruter ikke defineret. 378 00:22:23,850 --> 00:22:32,340 Men hvis vi tager et kig på phpMyAdmin og se efter, om vores funktion 379 00:22:32,340 --> 00:22:34,370 gjorde noget. 380 00:22:34,370 --> 00:22:36,670 Kig på Blog50 indlæg. 381 00:22:36,670 --> 00:22:37,720 Vi vil opdage, at, hey. 382 00:22:37,720 --> 00:22:43,530 Faktisk, vi bare oprette denne blog skrive med tidsstempler som angivet. 383 00:22:43,530 --> 00:22:46,600 384 00:22:46,600 --> 00:22:51,630 >> Så lad os nu gå tilbage og faktisk skabe denne anden funktion i vores 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å her hvad vi vil gøre, i stedet for at have tomme parenteser, 388 00:23:04,070 --> 00:23:08,800 vi ønsker at videregive i ID stillingen, som vi er ved at oprette. 389 00:23:08,800 --> 00:23:12,800 Og herfra, hvad vi vil gøre er faktisk søge i databasen for det. 390 00:23:12,800 --> 00:23:15,140 >> Så hvis vi skrive, der er en funktion kaldet 391 00:23:15,140 --> 00:23:18,860 Find der giver os mulighed for at forespørge den med ID. 392 00:23:18,860 --> 00:23:22,110 Specifikt faktisk, vi kommer til at bruge en alternativ version af denne kaldes 393 00:23:22,110 --> 00:23:27,880 Find eller Fail, som giver os mulighed at holde op ud af denne funktion, 394 00:23:27,880 --> 00:23:34,700 smide en undtagelse, hvis ID vi passerer i findes ikke. 395 00:23:34,700 --> 00:23:37,500 Og så vil vi gøre noget svarer til, hvad vi gjorde tidligere 396 00:23:37,500 --> 00:23:41,100 hvor vi indstille indholdet af denne side til at være 397 00:23:41,100 --> 00:23:47,950 det afsmeltede version af denne nye visning som vi kommer til at oprette, blog.view. 398 00:23:47,950 --> 00:23:51,030 >> Og vi kommer til at passere ind det-- ligesom i CS50 gøre 399 00:23:51,030 --> 00:23:56,645 function-- en ordbog over variabler. 400 00:23:56,645 --> 00:23:59,860 401 00:23:59,860 --> 00:24:04,620 Nøglerne til dette associative array blive variabler i skabelonen. 402 00:24:04,620 --> 00:24:06,830 Så vi kommer til at gøre stillingen indlæg. 403 00:24:06,830 --> 00:24:12,474 Så passerer indirekte stillingen som vi har forespurgt fra databasen. . 404 00:24:12,474 --> 00:24:14,390 Nu, hvad vi vil gøre er at oprette denne opfattelse 405 00:24:14,390 --> 00:24:17,560 således at vi rent faktisk kan se blogindlæg, som vi har bygget. 406 00:24:17,560 --> 00:24:20,280 >> Så vi kommer til at skabe en fil kaldet view.blade.php. 407 00:24:20,280 --> 00:24:25,870 408 00:24:25,870 --> 00:24:29,640 Så inde i denne skabelon, hvad vi vil gøre 409 00:24:29,640 --> 00:24:39,700 er sat sammen en simpel side, giver os mulighed for at vise indholdet. 410 00:24:39,700 --> 00:24:44,280 Så vi gør sektion, det er før indhold. 411 00:24:44,280 --> 00:24:46,800 Stop. 412 00:24:46,800 --> 00:24:53,920 Og hvad vi vil at gøre inden her er 413 00:24:53,920 --> 00:24:56,930 skrive nogle HTML for at vise denne side. 414 00:24:56,930 --> 00:25:03,590 >> Så vi kommer til at pakke det med en fancy nye HTML5 element kaldet artikel. 415 00:25:03,590 --> 00:25:05,790 Og her, vil vi at have en header, hvor 416 00:25:05,790 --> 00:25:12,190 vi vil bare have en h1, som omfatter stolpen titel. 417 00:25:12,190 --> 00:25:17,120 Så her, hvis vi ser på dette dobbelt krøllet tandbøjle notation, 418 00:25:17,120 --> 00:25:21,690 dette vil gøre det væsentlige PHP echo indlæg titel. 419 00:25:21,690 --> 00:25:25,630 Så det er en hjælpsom stenografi at Laravel giver os. 420 00:25:25,630 --> 00:25:31,070 Så vi kommer til at bruge denne notation i stedet. 421 00:25:31,070 --> 00:25:40,220 >> Og her, vil vi også udskrive indholdet af den. 422 00:25:40,220 --> 00:25:43,480 Og her, vil vi at gøre stillingen indhold. 423 00:25:43,480 --> 00:25:46,514 424 00:25:46,514 --> 00:25:50,660 Og ned i bunden, hvad vi er kommer til at gøre, er at oprette en sidefod. 425 00:25:50,660 --> 00:25:57,690 Og i bunden, vil vi første display, når dette blev lagt ud. 426 00:25:57,690 --> 00:26:01,320 Så dette blev lagt på, oprettet på. 427 00:26:01,320 --> 00:26:07,996 >> Og Laravel bruger en virkelig rart dato bibliotek kaldet Carbon. 428 00:26:07,996 --> 00:26:11,120 Så vi kan faktisk gøre noget, der hedder difforHumans, som du så tidligere. 429 00:26:11,120 --> 00:26:14,360 Når vi udstationeret. det vil sige, ligesom fem sekunder siden. 430 00:26:14,360 --> 00:26:16,860 Så dette er en virkelig rart funktionalitet Laravel. 431 00:26:16,860 --> 00:26:19,469 432 00:26:19,469 --> 00:26:21,385 Og endelig vil vi at lukke dette footer. 433 00:26:21,385 --> 00:26:24,900 434 00:26:24,900 --> 00:26:31,450 >> Så nu, hvis vi går tilbage til Forside vi skal hen 435 00:26:31,450 --> 00:26:34,490 at se noget her endnu, fordi Vi har ikke kodet op hjemmesiden. 436 00:26:34,490 --> 00:26:40,962 Men hvis vi går for at skrive skråstreg én, vi kommer til at se en undtagelse. 437 00:26:40,962 --> 00:26:42,670 Er der nogen der ved hvorfor ser vi en undtagelse? 438 00:26:42,670 --> 00:26:44,516 Hvad mangler vi? 439 00:26:44,516 --> 00:26:45,290 Nogen idéer? 440 00:26:45,290 --> 00:26:48,050 441 00:26:48,050 --> 00:26:49,790 Så hvad gjorde vi tidligere for os faktisk 442 00:26:49,790 --> 00:26:52,285 at definere, hvordan vi kommer til særlige controllere? 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: Ja. 446 00:26:56,519 --> 00:26:58,070 Så vi stadig nødt til at definere ruten. 447 00:26:58,070 --> 00:26:59,794 Så vi gå tilbage her til routes.php. 448 00:26:59,794 --> 00:27:01,710 Du vil opdage, at vi har faktisk ikke defineret 449 00:27:01,710 --> 00:27:05,010 hvordan vi kommer til at få til denne styreenhed. 450 00:27:05,010 --> 00:27:06,780 Så nu vil vi definere denne rute. 451 00:27:06,780 --> 00:27:09,280 Det er forholdsvis ligetil, svarer til, hvad vi gjorde tidligere. 452 00:27:09,280 --> 00:27:13,910 Men det, vi kommer til at lægge mærke til her er at vi kommer til at have en pladsholder. 453 00:27:13,910 --> 00:27:18,730 >> Så hvis vi gør route.get skråstreg indlæg id. 454 00:27:18,730 --> 00:27:24,290 Så ID nu, hvad der kommer til at ledes ind i regulatoren. 455 00:27:24,290 --> 00:27:27,820 Dette kommer til at bruge controller, at vi bare 456 00:27:27,820 --> 00:27:33,560 oprettet, BlogController på viewPost. 457 00:27:33,560 --> 00:27:36,420 Og vi vil alias dette som viewPost. 458 00:27:36,420 --> 00:27:46,544 459 00:27:46,544 --> 00:27:47,490 Store. 460 00:27:47,490 --> 00:27:49,470 Så nu vil vi skabe denne rute. 461 00:27:49,470 --> 00:27:52,100 >> Så nu, hvis vi går her og opdatere denne side, 462 00:27:52,100 --> 00:27:54,410 vi faktisk har vores nye blog-indlæg. 463 00:27:54,410 --> 00:27:57,710 Så dette er, hvad vi oprettede tidligere. 464 00:27:57,710 --> 00:28:01,320 Meget enkel side, men viser den blogindlæg, som vi lige har oprettet. 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å gennem hele processen med at skabe en ny blog-indlæg, 468 00:28:08,880 --> 00:28:11,700 Vi vil opdage, at alt omdirigerer korrekt. 469 00:28:11,700 --> 00:28:12,950 Hvis jeg siger, "Hej. 470 00:28:12,950 --> 00:28:15,710 Jeg er Jonathan Tan. " 471 00:28:15,710 --> 00:28:18,550 Sig: "Dette er min blog indlæg." 472 00:28:18,550 --> 00:28:22,830 Og forelægger det, vil det skabe denne nye blog-indlæg med ID 2, 473 00:28:22,830 --> 00:28:28,920 hvilke trin fra det, vi havde tidligere og viser det ordentligt. 474 00:28:28,920 --> 00:28:30,760 Awesome. 475 00:28:30,760 --> 00:28:32,930 >> Eventuelle spørgsmål? 476 00:28:32,930 --> 00:28:33,430 Ja? 477 00:28:33,430 --> 00:28:36,537 >> SPEAKER 2: Er Laravel håndtag desinficering og alt for dig? 478 00:28:36,537 --> 00:28:37,245 ERIC Ouyang: Ja. 479 00:28:37,245 --> 00:28:42,990 Så da vi så tidligere, da vi input kolon kolon få, 480 00:28:42,990 --> 00:28:47,720 der sanitates enhver SQL injektioner og whatnot 481 00:28:47,720 --> 00:28:51,660 at vi måske ønsker at udføre, hvis vi er en ondsindet bruger af hjemmesiden. 482 00:28:51,660 --> 00:28:54,115 Så Laravel håndterer en masse af, at der bag kulisserne. 483 00:28:54,115 --> 00:28:57,030 Godt spørgsmål. 484 00:28:57,030 --> 00:29:00,390 >> Så lad os tage et kig 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å tilbage til controller til startsiden, 487 00:29:06,790 --> 00:29:08,740 du vil opdage, at det gør ikke meget her. 488 00:29:08,740 --> 00:29:11,620 Du vil opdage, at vi ikke er passerer ind i denne controller 489 00:29:11,620 --> 00:29:13,830 noget særligt nyttigt. 490 00:29:13,830 --> 00:29:16,660 Det er netop dette indeks fil. 491 00:29:16,660 --> 00:29:18,770 >> Så lad os gå ind i denne noget nyttigt. 492 00:29:18,770 --> 00:29:21,450 Og specielt er vi kommer til at passere i indlæg. 493 00:29:21,450 --> 00:29:28,740 Og Laravel giver os at gøre stillingen alle, hvilket 494 00:29:28,740 --> 00:29:30,625 vil give os mulighed for at få alle de stillinger. 495 00:29:30,625 --> 00:29:33,160 496 00:29:33,160 --> 00:29:35,730 Nu, hvis vi går tilbage til index.php, vil du se, hey. 497 00:29:35,730 --> 00:29:37,060 Intet her endnu. 498 00:29:37,060 --> 00:29:41,290 Men hvad vi ønsker at gøre her faktisk gennemløber, 499 00:29:41,290 --> 00:29:46,420 gøre en foreach løkke over stillinger, giver os mulighed for at udskrive stillingerne. 500 00:29:46,420 --> 00:29:53,180 >> Så foreach stillinger som indlæg, hvad vi ønsker at gøre 501 00:29:53,180 --> 00:29:57,252 er udskrive indholdet af blog-indlæg. 502 00:29:57,252 --> 00:30:00,210 Men én ting du vil bemærke, er, at vi faktisk skrev det meste af denne kode 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å det, vi kommer til at faktisk gøre, er bruge en dejlig nyttig funktion af Blade 506 00:30:08,640 --> 00:30:11,300 og faktor denne fælles 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 vil tage dette indhold lige her, og hvad vi vil gøre 509 00:30:16,210 --> 00:30:18,170 er at oprette en ny mappe. 510 00:30:18,170 --> 00:30:20,364 Lad os bare kalde det deltoner. 511 00:30:20,364 --> 00:30:22,530 Og her, vil vi at skabe en post.blade.php. 512 00:30:22,530 --> 00:30:26,570 513 00:30:26,570 --> 00:30:33,100 Så her har vi indregnet den måde som vi ønsker at vise disse stillinger. 514 00:30:33,100 --> 00:30:38,690 Og her, hvad vi vil gøre i stedet for faktisk at have direkte at HTML, 515 00:30:38,690 --> 00:30:41,530 vi kommer til at bruge dette direktiv kaldet omfatter blog.partials.post. 516 00:30:41,530 --> 00:30:45,210 517 00:30:45,210 --> 00:30:50,635 >> Og hvad vi vil gøre her er passere i stillingen på siden. 518 00:30:50,635 --> 00:30:57,076 519 00:30:57,076 --> 00:31:01,050 Så nu, hvis vi går tilbage her, vil vi bemærke, at funktionaliteten er stadig 520 00:31:01,050 --> 00:31:01,550 det samme. 521 00:31:01,550 --> 00:31:05,140 Men nu har vi dette indregnes ud kode denne HTML. 522 00:31:05,140 --> 00:31:07,070 Så vi kan bruge det i indekset. 523 00:31:07,070 --> 00:31:09,090 Så her, det er meget ligetil. 524 00:31:09,090 --> 00:31:17,870 Alt vi gør, er omfatte blog.partials.post og array. 525 00:31:17,870 --> 00:31:20,845 Og et eller andet sted til før, vi gør stillingen indlæg. 526 00:31:20,845 --> 00:31:23,830 527 00:31:23,830 --> 00:31:28,182 >> Så nu, hvis vi går tilbage til hjemmeside, vil vi se, at, hey. 528 00:31:28,182 --> 00:31:30,515 Vi har en liste over alle de blogindlæg, som vi havde før. 529 00:31:30,515 --> 00:31:34,640 530 00:31:34,640 --> 00:31:37,700 Vi vil måske tilføje nogle "hvis" betingelser og "andet" betingelser 531 00:31:37,700 --> 00:31:39,979 så hvis vi ikke har noget på bloggen, 532 00:31:39,979 --> 00:31:41,520 Vi ønsker at vise noget nyttigt. 533 00:31:41,520 --> 00:31:42,570 Ligesom, hey. 534 00:31:42,570 --> 00:31:44,340 Der er intet indhold endnu på bloggen. 535 00:31:44,340 --> 00:31:47,670 Og hvis du fyre faktisk se på fordelingen kode på GitHub, 536 00:31:47,670 --> 00:31:50,100 vil du se et eksempel på, hvordan 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 Eventuelle spørgsmål? 540 00:31:54,890 --> 00:31:55,510 Ja. 541 00:31:55,510 --> 00:31:57,468 >> SPEAKER 2: Jeg gætter bare et grundlæggende spørgsmål. 542 00:31:57,468 --> 00:31:59,480 Tilbage på ruten. 543 00:31:59,480 --> 00:32:00,230 ERIC Ouyang: Ja. 544 00:32:00,230 --> 00:32:01,935 Hvis vi tager et kig på ruter. 545 00:32:01,935 --> 00:32:06,018 >> SPEAKER 2: Hvor kommer uses.blogcontroller på oprette indlæg, 546 00:32:06,018 --> 00:32:07,560 hvad betyder det direkte os til? 547 00:32:07,560 --> 00:32:08,310 ERIC Ouyang: Ja. 548 00:32:08,310 --> 00:32:08,550 Ja. 549 00:32:08,550 --> 00:32:09,716 >> SPEAKER 2: Eller hvad er at-- 550 00:32:09,716 --> 00:32:12,620 ERIC Ouyang: Så tag et kig, siger for eksempel denne rute lige her. 551 00:32:12,620 --> 00:32:17,190 Den første del er den egentlige Webadresse, som brugeren vil gå til. 552 00:32:17,190 --> 00:32:19,930 Og dette array her, associative array, definerer 553 00:32:19,930 --> 00:32:24,520 hvordan vi ønsker at have den ansøgning reagere på det. 554 00:32:24,520 --> 00:32:29,090 Så bruger er controlleren, den funktion, vi 555 00:32:29,090 --> 00:32:31,610 vil ringe til, når en bruger går til denne webadresse. 556 00:32:31,610 --> 00:32:35,190 Så viewPost lige her var en funktion, definerede vi inde 557 00:32:35,190 --> 00:32:36,100 af BlogController-- 558 00:32:36,100 --> 00:32:37,160 >> SPEAKER 2: Jeg kan se. 559 00:32:37,160 --> 00:32:39,368 >> ERIC Ouyang: --so vi kan faktisk gøre en visning, 560 00:32:39,368 --> 00:32:42,590 udføre nogle beregninger, interagere 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 anden del, "som" er et alias, som vi bruger. 563 00:32:46,960 --> 00:32:50,714 Så hvis vi bemærker, når Vi skabte formen, 564 00:32:50,714 --> 00:32:52,380 du vil opdage, 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 selve URL, så vi er ikke svært 567 00:32:58,330 --> 00:33:02,940 kodning disse i så vi kan ændre det én gang, sige, hvis vi ønskede at omdøbe. 568 00:33:02,940 --> 00:33:06,055 I stedet for efter skråstreg nye, vi ønsker at gøre ud, p 569 00:33:06,055 --> 00:33:09,490 slash ny bare for at rense vore webadresser en smule. 570 00:33:09,490 --> 00:33:14,740 Vi vil ændre det i én stedet snarere end på tværs af alle de forskellige filer. 571 00:33:14,740 --> 00:33:15,451 >> Cool. 572 00:33:15,451 --> 00:33:15,950 Det er godt. 573 00:33:15,950 --> 00:33:20,070 Så nu har vi en meget grundlæggende blog platform. 574 00:33:20,070 --> 00:33:24,260 Vi sandsynligvis ønsker at tilføje i en knap så at vi faktisk kan skabe nye stillinger. 575 00:33:24,260 --> 00:33:27,850 Så hvis vi tager et kig på Layout Master, 576 00:33:27,850 --> 00:33:31,280 Vi har et afsnit kaldet Header Right at vi lige har defineret op i toppen. 577 00:33:31,280 --> 00:33:34,820 Så vi kan tilføje knapper til toppen af ​​header. 578 00:33:34,820 --> 00:33:43,950 >> Så hvis vi går til index.blade.php, faktisk gøre, er at definere, hvad der foregår inde i her. 579 00:33:43,950 --> 00:33:46,970 Så denne Header højre sektion, hvad vi vil gøre 580 00:33:46,970 --> 00:33:55,240 er tilføje en knap for at gå til URL defineret af ruten nyt indlæg. 581 00:33:55,240 --> 00:33:58,270 582 00:33:58,270 --> 00:34:01,660 Bare for at rense det op og gøre det temmelig og alle Bootstrap, 583 00:34:01,660 --> 00:34:04,630 vi kommer til at gøre dette en standard knap. 584 00:34:04,630 --> 00:34:07,794 Lad os bare gøre det store for sjov. 585 00:34:07,794 --> 00:34:09,969 >> Og inde i det, kunne vi sætte noget tekst. 586 00:34:09,969 --> 00:34:14,030 Hvad Men Bootstrap giver er glyphicons. 587 00:34:14,030 --> 00:34:17,840 Så vi kan faktisk tilføje, at dejligt 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 give os mulighed for at sætte i et ikon i stedet for tekst. 593 00:34:35,340 --> 00:34:38,960 Nu, hvis vi stopper, dette vil definere dette afsnit. 594 00:34:38,960 --> 00:34:39,460 Og, hey. 595 00:34:39,460 --> 00:34:45,000 Vi har en dejlig knap, der forbinder os direkte til tilføje et blogindlæg side. 596 00:34:45,000 --> 00:34:46,659 >> Så vi har en forholdsvis enkel blog. 597 00:34:46,659 --> 00:34:49,710 Vi kan tilføje ting til den. 598 00:34:49,710 --> 00:34:53,650 Men hvad vi forventer generelt fra blogs kommenterer. 599 00:34:53,650 --> 00:34:57,340 Så det er virkelig vigtigt for os at have, sige, hvis en anden besøger en hjemmeside 600 00:34:57,340 --> 00:35:00,620 og virkelig kan lide det indlæg, de kan engagere sig i diskussionen 601 00:35:00,620 --> 00:35:03,100 med andre mennesker, der besøger siden. 602 00:35:03,100 --> 00:35:07,050 Så vi kommer til at gå og skabe en ny database tabel og en ny model 603 00:35:07,050 --> 00:35:12,220 så vi kan knytte kommentarer med indlæg. 604 00:35:12,220 --> 00:35:17,370 >> Så det første skridt, ligesom før, er, at vi er nødt til at køre en migration. 605 00:35:17,370 --> 00:35:21,982 Så ligesom før, vi gør php håndværker migrere: gøre. 606 00:35:21,982 --> 00:35:24,440 Og vi kommer til at skabe en kaldet create_comments_table. 607 00:35:24,440 --> 00:35:29,520 608 00:35:29,520 --> 00:35:36,080 Dette vil skabe en fil som har vores nye migration. 609 00:35:36,080 --> 00:35:40,170 Og vi vil, ligesom før, definerer en ny tabel. 610 00:35:40,170 --> 00:35:42,773 Så Schema :: skabe en tabel kaldet kommentarer. 611 00:35:42,773 --> 00:35:47,410 612 00:35:47,410 --> 00:35:48,430 Denne funktion her. 613 00:35:48,430 --> 00:35:51,620 Og inde i denne tabel, hvad vi kommer til at gøre, er først, 614 00:35:51,620 --> 00:35:54,260 som før, tildele et ID. 615 00:35:54,260 --> 00:35:56,552 Forøger ID. 616 00:35:56,552 --> 00:36:05,440 >> Vi kommer til at give brugerne mulighed for at knytte deres navn med en bestemt kommentar. 617 00:36:05,440 --> 00:36:10,080 Vi kommer til at have noget indhold, som går sammen med dette, indhold tekst. 618 00:36:10,080 --> 00:36:13,580 619 00:36:13,580 --> 00:36:15,910 Og her, hvad vi kommer til at gøre, er noget andet. 620 00:36:15,910 --> 00:36:23,620 Vi kommer til at skabe et heltal der hedder post_id som 621 00:36:23,620 --> 00:36:32,100 kommer til at betegne hvilke indlæg en bestemt bemærkning går med. 622 00:36:32,100 --> 00:36:35,410 >> Derudover er vi faktisk kommer til at sætte en fremmed nøgle begrænsning på dette. 623 00:36:35,410 --> 00:36:37,750 Så MySQL vil håndhæve det. 624 00:36:37,750 --> 00:36:39,840 Vi prøver ikke at tildele kommentar nummer 625 00:36:39,840 --> 00:36:44,440 5 for at skrive 5.000, hvis vi ikke har havde 5.000 stillinger på det. 626 00:36:44,440 --> 00:36:50,240 Så det, vi gør her, vi gør udenlandsk post_id 627 00:36:50,240 --> 00:37:02,046 vil være forbundet med ID-felt fra tabellen stillinger. 628 00:37:02,046 --> 00:37:05,900 Og vi vil faktisk gøre noget ellers hjælpsomme, er onDelete. 629 00:37:05,900 --> 00:37:11,180 >> Så hvis vi slette nogle skrive fra databasen, 630 00:37:11,180 --> 00:37:15,507 at vi ønsker at kaskade af sletter for kommentarer også. 631 00:37:15,507 --> 00:37:18,090 Fordi det ikke er meget nyttigt for os at have kommentarer til indlæg 632 00:37:18,090 --> 00:37:19,900 der ikke eksisterer. 633 00:37:19,900 --> 00:37:23,764 Og endelig, ligesom før, men vi er vil sætte 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, vil vi have den omvendte migration være 636 00:37:33,510 --> 00:37:37,920 tabe kommentarer bordet. 637 00:37:37,920 --> 00:37:40,070 >> Så nu, hvis vi går tilbage til her, vi vil 638 00:37:40,070 --> 00:37:43,110 at køre denne migration, håndværker migrere. 639 00:37:43,110 --> 00:37:46,400 Og nu er det anvendt dette migration, som vi lige har oprettet. 640 00:37:46,400 --> 00:37:50,080 Så hvis vi et kig på phpMyAdmin, vi gør, i virkeligheden, nu 641 00:37:50,080 --> 00:37:53,210 har en kommentarer tabel, der har den struktur, vi lige har angivet. 642 00:37:53,210 --> 00:37:56,900 643 00:37:56,900 --> 00:37:59,610 Så ligesom før, vi er vil skabe en ny model 644 00:37:59,610 --> 00:38:04,450 at abstrahere SQL tabellen at vi lige har oprettet. 645 00:38:04,450 --> 00:38:05,450 >> Så lad os Tilføj en ny fil. 646 00:38:05,450 --> 00:38:06,908 Vi kommer til at kalde det comment.php. 647 00:38:06,908 --> 00:38:10,160 648 00:38:10,160 --> 00:38:15,490 Og det er faktisk kommer til at være temmelig ligetil med en lille ændring 649 00:38:15,490 --> 00:38:17,520 fra det, vi havde før. 650 00:38:17,520 --> 00:38:22,790 Så klasse Kommentar udvider Veltalende. 651 00:38:22,790 --> 00:38:25,930 Og hvad vi vil at gøre her er at definere 652 00:38:25,930 --> 00:38:31,360 en funktion, der er forhold til andre modeller. 653 00:38:31,360 --> 00:38:39,250 Så vi kommer til at have en post-funktion her der returnerer dette forhold. 654 00:38:39,250 --> 00:38:43,330 Så vi præcisere, at dette hører at skrive, 655 00:38:43,330 --> 00:38:49,200 siger, at der er en stilling at 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 nu lige på den anden flip side, må vi sige, at, hey. 658 00:38:56,500 --> 00:38:58,160 Stillinger har kommentarer. 659 00:38:58,160 --> 00:39:03,030 Så det, vi kommer til at gøre, er definere offentlig funktion kommentarer. 660 00:39:03,030 --> 00:39:07,100 661 00:39:07,100 --> 00:39:13,620 Og her er returneret Dette har mange kommentar. 662 00:39:13,620 --> 00:39:16,630 663 00:39:16,630 --> 00:39:22,010 Så nu magisk når vi har en stilling, vi kan få de attribut kommentarer 664 00:39:22,010 --> 00:39:25,615 og det vil befolke den med information fra databasen. 665 00:39:25,615 --> 00:39:32,950 666 00:39:32,950 --> 00:39:38,220 >> Så lad os faktisk gå igennem og tilføje en ny funktion til vores opfattelse fil 667 00:39:38,220 --> 00:39:43,600 så vi kan både skærm og oprette kommentarer. 668 00:39:43,600 --> 00:39:54,010 669 00:39:54,010 --> 00:39:56,865 Så vi kommer til at definere en ny sektion. 670 00:39:56,865 --> 00:39:59,890 Lad os bare adskille det med en vandret streg. 671 00:39:59,890 --> 00:40:04,065 Afsnit id = "bemærkninger". 672 00:40:04,065 --> 00:40:06,990 Hvad vi vil gøre her er, ligesom før, 673 00:40:06,990 --> 00:40:09,880 gentage gennem alle kommentarerne. 674 00:40:09,880 --> 00:40:12,960 Så faktisk, hvordan vi gør det er, som jeg nævnte, temmelig magisk. 675 00:40:12,960 --> 00:40:14,440 >> Vi gø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 gøre det for hver loop over hver af kommentarerne. 678 00:40:22,710 --> 00:40:25,740 Og hvad vi vil gøre, er at div class kommentar, 679 00:40:25,740 --> 00:40:29,240 og vi vil faktisk udskrive denne kommentar. 680 00:40:29,240 --> 00:40:34,150 Så viser det hey, kommentere name-- personen 681 00:40:34,150 --> 00:40:38,080 der bogført denne comment-- siger dot dot dot. 682 00:40:38,080 --> 00:40:41,240 Vi kommer til at sætte dette i en blok tilbud, bare for at gøre det ser nice. 683 00:40:41,240 --> 00:40:46,470 Og så kommentere indhold blok citat. 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å nu dette kommer til at sløjfe gennem alle kommentarer 687 00:40:53,100 --> 00:40:56,500 der er forbundet med hver af de stillinger 688 00:40:56,500 --> 00:41:00,960 og vise hver af disse bemærkninger. 689 00:41:00,960 --> 00:41:05,120 Jeg har tænkt mig at tilføje en anden sektion ned her, som giver os mulighed for at tilføje en kommentar. 690 00:41:05,120 --> 00:41:07,400 Så h3 klasse. 691 00:41:07,400 --> 00:41:09,580 Put en titel her. 692 00:41:09,580 --> 00:41:10,934 Tilføj en kommentar. 693 00:41:10,934 --> 00:41:13,886 694 00:41:13,886 --> 00:41:15,700 Og vi kommer til at definere en ny form. 695 00:41:15,700 --> 00:41:18,730 >> Så ligesom før, vi er vil gøre formular handling. 696 00:41:18,730 --> 00:41:22,740 Og her, den nye aktion er vi vil definere en ny controller, 697 00:41:22,740 --> 00:41:26,770 tillader os at reagere for at skrive anmodninger om at oprette kommentarer. 698 00:41:26,770 --> 00:41:33,365 Så URL :: rute createComment. 699 00:41:33,365 --> 00:41:37,730 Jeg har tænkt mig at passere i parameter her. 700 00:41:37,730 --> 00:41:40,380 ID af indlæg, Vi skaber kommentere. 701 00:41:40,380 --> 00:41:45,340 702 00:41:45,340 --> 00:41:50,280 Og derefter fremgangsmåden ifølge denne formular bliver indlæg. 703 00:41:50,280 --> 00:41:57,240 >> Nu skal vi til at tilføje i en to felter, formular gruppe. 704 00:41:57,240 --> 00:42:04,670 Dette vil være et input med name "navn" og class = "formular-kontrol", 705 00:42:04,670 --> 00:42:14,250 type = "text", og med den pladsholder = "Dit navn". 706 00:42:14,250 --> 00:42:19,380 Vi vil også definere en anden form felt, som 707 00:42:19,380 --> 00:42:22,970 kommer til at være en tekst området, som vi havde før. 708 00:42:22,970 --> 00:42:25,480 Ligesom før, kalder det indhold. 709 00:42:25,480 --> 00:42:31,160 Class = "formular-kontrol." 710 00:42:31,160 --> 00:42:41,660 Pladsholder = "Skriv her." 711 00:42:41,660 --> 00:42:44,100 >> Og bare så vi kan faktisk sende det, 712 00:42:44,100 --> 00:42:55,740 indsende type og class = "btn btn-primære." 713 00:42:55,740 --> 00:42:57,005 Luk formularen. 714 00:42:57,005 --> 00:42:59,010 Luk denne handling. 715 00:42:59,010 --> 00:43:06,580 Så nu, hvis vi opdatere denne side, hvor vi har, siger, en bestemt stilling. 716 00:43:06,580 --> 00:43:10,310 Vi er nødt til at genstarte serveren. 717 00:43:10,310 --> 00:43:12,340 PHP håndværker tjene. 718 00:43:12,340 --> 00:43:15,630 719 00:43:15,630 --> 00:43:18,334 Genstart dette. 720 00:43:18,334 --> 00:43:19,500 Vi er nødt til at definere ruten. 721 00:43:19,500 --> 00:43:25,090 Men for nu, lad os bare tage dette ud, så vi rent faktisk kan vise dig 722 00:43:25,090 --> 00:43:28,750 hvad siden ser ud, og derefter vi vil faktisk lave denne rute. 723 00:43:28,750 --> 00:43:29,250 Så, hey. 724 00:43:29,250 --> 00:43:37,080 Vi har denne nye form hernede så vi kan oprette kommentarer. 725 00:43:37,080 --> 00:43:39,950 Så lad os faktisk definere en funktion i regulatoren 726 00:43:39,950 --> 00:43:43,020 så vi kan tilføje kommentarer. 727 00:43:43,020 --> 00:43:43,650 Lad os gå tilbage. 728 00:43:43,650 --> 00:43:48,420 Og inden blogcontroller.php, hvad vi vil gøre 729 00:43:48,420 --> 00:43:51,620 er at oprette en ny funktion kaldet oprette kommentarer. 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 Dette vil have en enkelt parameter, ID af de stillinger 733 00:44:00,130 --> 00:44:02,280 at vi kommentere. 734 00:44:02,280 --> 00:44:04,790 Og som før, vi er vil først få stillingen. 735 00:44:04,790 --> 00:44:10,790 Så skrive, findOrfail id. 736 00:44:10,790 --> 00:44:15,020 Bagefter vil vi at oprette 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 = den samme nye linje i pauser af Input :: få indhold. 740 00:44:39,420 --> 00:44:43,460 >> Og endelig vil vi nødt til at knytte denne kommentar med posten. 741 00:44:43,460 --> 00:44:47,230 Så vi kommer til at bruge denne funktion, kommentarer, 742 00:44:47,230 --> 00:44:50,260 der giver os mulighed for at spare dette forhold. 743 00:44:50,260 --> 00:44:54,780 Så nu denne kommentar vil have automatisk stillingen id. 744 00:44:54,780 --> 00:44:57,640 Vi kunne også sætte det manuelt, men dette er 745 00:44:57,640 --> 00:45:02,490 mere let som langt at læse som funktionen går. 746 00:45:02,490 --> 00:45:05,860 Og efter vi udfører dette, hvad vi ønsker at gøre 747 00:45:05,860 --> 00:45:10,840 er omdirigere brugeren til rute angivet af viewPost 748 00:45:10,840 --> 00:45:16,010 med arrayet med parameter af post-id. 749 00:45:16,010 --> 00:45:20,360 750 00:45:20,360 --> 00:45:24,660 >> Og nu, så det rent faktisk funktioner, er vi nødt til at definere denne rute. 751 00:45:24,660 --> 00:45:27,126 Rute :: indlæg. 752 00:45:27,126 --> 00:45:32,800 Og nu vil vi kalde denne stolpe skråstreg ID skråstreg kommentar. 753 00:45:32,800 --> 00:45:36,725 Array anvender den nye funktion at vi lige har oprettet. 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 Store. 759 00:45:50,120 --> 00:45:56,150 >> Så nu forhåbentlig, hvis vi opdatere denne side og tilføje en kommentar, siger, David Malan. 760 00:45:56,150 --> 00:46:00,630 761 00:46:00,630 --> 00:46:03,920 "Forhåbentlig det virker." 762 00:46:03,920 --> 00:46:05,216 Send. 763 00:46:05,216 --> 00:46:09,050 Vi har i virkeligheden har en kommentere dette blog-indlæg. 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 temmelig funktionel blog-indlæg. 768 00:46:21,430 --> 00:46:23,180 Vi er lige at gå til tilføje et par tweaks, så 769 00:46:23,180 --> 00:46:29,090 at vi har nogle mere nyttige oplysninger om disse stillinger. 770 00:46:29,090 --> 00:46:32,780 >> Så hvis vi går tilbage til forside, har vi ingen mening 771 00:46:32,780 --> 00:46:38,790 af, hvor mange kommentarer er på hver af disse stillinger. 772 00:46:38,790 --> 00:46:41,340 Så det, vi er faktisk i gang at gøre er, inde i vores model, 773 00:46:41,340 --> 00:46:51,250 definere en hjælpefunktion, der tillader os til at angive antallet af kommentarer 774 00:46:51,250 --> 00:46:53,020 at gå med en bestemt stilling. 775 00:46:53,020 --> 00:46:56,050 Så vi kommer til at skabe en hjælpefunktion. 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 streng, der angiver antallet bemærkninger, der går langs med den. 780 00:47:07,180 --> 00:47:12,850 Og hvad vi vil gøre, er at sige at num = Dette kommentarer tælle. 781 00:47:12,850 --> 00:47:15,150 Så vi kommer til at tælle antallet af kommentarer. 782 00:47:15,150 --> 00:47:22,900 Og hvis dette tal er lig med 1, er vi bare at returnere 1 kommentar. 783 00:47:22,900 --> 00:47:28,890 Og så ellers ønsker vi at vende tilbage sammenkædningen af ​​num og kommentarer, 784 00:47:28,890 --> 00:47:31,890 så vi får pluralisering korrekte. 785 00:47:31,890 --> 00:47:33,380 Bare gøre dette ét 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 nu kan vi bruge denne funktion direkte inde i vores opfattelse. 789 00:47:41,140 --> 00:47:44,510 Så hvis vi går tilbage til delvise stillinger, vi skabte, 790 00:47:44,510 --> 00:47:49,370 nu vil vi faktisk vise antallet af kommentarer. 791 00:47:49,370 --> 00:47:52,660 Så det, vi kan gøre, er indlæg, bruge denne funktion 792 00:47:52,660 --> 00:47:57,230 at vi lige har oprettet til vise antallet af kommentarer. 793 00:47:57,230 --> 00:48:00,440 Så hvis vi nu opdatere, det gør i virkeligheden, display 794 00:48:00,440 --> 00:48:02,240 de numeriske kommentarer at gå med til det. 795 00:48:02,240 --> 00:48:05,320 >> Hvis vi ønskede at være smarte, hvis du faktisk ser på fordelingen kode, 796 00:48:05,320 --> 00:48:07,800 Vi kan faktisk forbinde dette til kommentarerne. 797 00:48:07,800 --> 00:48:17,040 Hvis du husker, vi defineret inden for se, at det har punkt ID kommentarer. 798 00:48:17,040 --> 00:48:22,460 Så hvis vi faktisk ønskede at linke direkte til bemærkningerne afsnit, hvad 799 00:48:22,460 --> 00:48:36,000 vi ville gøre her er en href URL af ruten viewPost. 800 00:48:36,000 --> 00:48:40,550 Pass i array-id af post-id. 801 00:48:40,550 --> 00:48:46,140 Og så vi ønsker at gå til specifikt kommentarfeltet. 802 00:48:46,140 --> 00:48:49,900 >> Her lad os lukke et mærke. 803 00:48:49,900 --> 00:48:52,950 Så nu, hvis vi opdatere 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 havde en længere post, kan du faktisk se denne bounce ned. 806 00:48:57,580 --> 00:49:02,668 Men du vil opdage, at det er ikke på toppen af ​​siden. 807 00:49:02,668 --> 00:49:04,090 Cool. 808 00:49:04,090 --> 00:49:04,600 Store. 809 00:49:04,600 --> 00:49:08,582 Så det er en forholdsvis ligetil eksempel på noget simpelt 810 00:49:08,582 --> 00:49:09,790 at du kan gøre med Laravel. 811 00:49:09,790 --> 00:49:13,230 >> Men du kan mærke her, at vi har gjort en masse ting 812 00:49:13,230 --> 00:49:16,200 med forholdsvis lille mængde kode. 813 00:49:16,200 --> 00:49:19,420 Laravel giver os mulighed for at gøre det SQL-forespørgsler bag kulisserne. 814 00:49:19,420 --> 00:49:21,960 Det gør det sanitet for os bag kulisserne. 815 00:49:21,960 --> 00:49:25,940 Giver os mulighed for at gøre disse relationer meget let uden at vi behøver 816 00:49:25,940 --> 00:49:33,350 at gøre enhver SQL slutte udtalelser til kombinere kommentarer med hvad stolperne. 817 00:49:33,350 --> 00:49:36,480 Giver os mulighed for at gøre dette arv af skabeloner 818 00:49:36,480 --> 00:49:43,780 så vi kan definere disse nesting filer, så vi ikke gentage os selv, 819 00:49:43,780 --> 00:49:47,020 ligesom når vi havde at visning af blogindlæg 820 00:49:47,020 --> 00:49:50,770 at vi ikke behøver at kopiere og indsætte koden. 821 00:49:50,770 --> 00:49:55,450 >> Og herfra kan du bygge stadig mere komplicerede applikationer. 822 00:49:55,450 --> 00:49:58,370 Du kan forestille dig, hvis vi ønskede at gennemføre log-in, 823 00:49:58,370 --> 00:50:05,532 vi kunne sige, bringe en tredjemand ramme, der giver os mulighed for at gøre det. 824 00:50:05,532 --> 00:50:07,490 Der er en masse af dem der er virkelig, virkelig 825 00:50:07,490 --> 00:50:09,970 stor, der kan gøre ligesom, password opsving. 826 00:50:09,970 --> 00:50:14,450 Og det sender dig en nulstille kodeord email. 827 00:50:14,450 --> 00:50:18,260 Vi kan implementere tilladelse så jeg kan oprette et indlæg, 828 00:50:18,260 --> 00:50:20,350 men en anden kan ikke redigere det. 829 00:50:20,350 --> 00:50:24,610 Vi kan gennemføre funktionalitet til at slette indlæg. 830 00:50:24,610 --> 00:50:28,160 >> Men du kan se her, at vi har temmelig set alle de rudimentære elementer 831 00:50:28,160 --> 00:50:31,640 at bygge nogle virkelig, virkelig, dynamiske og spændende web apps. 832 00:50:31,640 --> 00:50:34,035 Så med det, jeg tror, ​​vi er gode. 833 00:50:34,035 --> 00:50:35,720 Har du fyre har spørgsmål? 834 00:50:35,720 --> 00:50:36,220 Ja? 835 00:50:36,220 --> 00:50:38,090 >> SPEAKER 3: Hvad synes du få statisk indhold? 836 00:50:38,090 --> 00:50:39,256 >> ERIC Ouyang: Statisk indhold. 837 00:50:39,256 --> 00:50:45,520 Så du så før, at når vi havde Denne ret her, dette layout indhold, 838 00:50:45,520 --> 00:50:49,625 vis make, vi havde denne uden dette array bagefter. 839 00:50:49,625 --> 00:50:56,440 840 00:50:56,440 --> 00:50:59,152 Blog.index, vi havde denne som blot en statisk fil. 841 00:50:59,152 --> 00:51:00,860 Så hvis vi ikke kan passere noget sammen til det, 842 00:51:00,860 --> 00:51:03,340 det vil bare gøre HTML direkte. 843 00:51:03,340 --> 00:51:09,240 Men hvis vi går i denne associative vifte af stillinger, der er dynamisk 844 00:51:09,240 --> 00:51:12,950 trukket fra databasen, vi kan gøre siden dynamisk. 845 00:51:12,950 --> 00:51:13,450 Cool. 846 00:51:13,450 --> 00:51:14,830 Andre spørgsmå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 måske nogle andre muligheder? 849 00:51:19,720 --> 00:51:20,525 ERIC Ouyang: Sure. 850 00:51:20,525 --> 00:51:21,025 Ja. 851 00:51:21,025 --> 00:51:23,430 Så Laravel is-- det er en stor question-- 852 00:51:23,430 --> 00:51:26,190 en af ​​mange muligheder for web rammer. 853 00:51:26,190 --> 00:51:31,160 Så Ruby on Rails er en, der er populære. 854 00:51:31,160 --> 00:51:34,590 Jeg tror Twitter plejede at være implementeres med Ruby on Rails. 855 00:51:34,590 --> 00:51:37,600 Jeg tror, ​​de har siden skiftet. 856 00:51:37,600 --> 00:51:40,780 Der er en anden der hedder FuelPHP. 857 00:51:40,780 --> 00:51:46,120 >> Så Ruby on Rails bruger Ruby sprog og gennemfører en masse af MVC ting 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 anden PHP rammer. 860 00:51:52,320 --> 00:51:54,490 Django er en af ​​mine favoritter. 861 00:51:54,490 --> 00:51:57,010 Det er en web rammer 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å der er et ton af disse muligheder. 864 00:52:03,760 --> 00:52:06,170 >> Laravel, tror jeg, ved og stor er min favorit ret 865 00:52:06,170 --> 00:52:08,232 nu for PHP, bare fordi af komponenterne 866 00:52:08,232 --> 00:52:09,440 at vi talte om tidligere. 867 00:52:09,440 --> 00:52:11,910 Det s Komponist aktiveret. 868 00:52:11,910 --> 00:52:15,750 Det omfatter en virkelig, virkelig udtryksfulde ORM system. 869 00:52:15,750 --> 00:52:18,800 Har også en virkelig fantastisk templating sprog, nogle af de andre 870 00:52:18,800 --> 00:52:20,630 bare ikke give. 871 00:52:20,630 --> 00:52:21,400 Og migrationer. 872 00:52:21,400 --> 00:52:23,432 Migrations er awesome samt. 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 Nå, tak så meget for ser dette seminar, 876 00:52:27,560 --> 00:52:30,650 og held og lykke på din endelige projekter. 877 00:52:30,650 --> 00:52:31,616