1 00:00:00,000 --> 00:00:02,150 >> [Seminar] [Kohana: En Let PHP Framework] 2 00:00:02,150 --> 00:00:04,000 [Brandon Liu] [Harvard University] 3 00:00:04,000 --> 00:00:07,270 [Dette er CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Hej alle. Mit navn er Brandon. 5 00:00:09,130 --> 00:00:11,000 Jeg er en junior her på kollegiet gør datalogi, og i dag vil vi tale om 6 00:00:11,000 --> 00:00:14,460 Kohana, som er et PHP web udvikling rammer. 7 00:00:14,460 --> 00:00:17,260 I dag bliver en levende kodning seminar, 8 00:00:17,260 --> 00:00:21,000 så jeg dybest set kommer til at bruge 5-10 minutter forklarer, hvad Kohana er, 9 00:00:21,000 --> 00:00:25,000 og så vil jeg bogstaveligt talt kommer til at bygge en super simpel blog 10 00:00:25,000 --> 00:00:28,570 for dig lige her bogstaveligt fra bunden. 11 00:00:28,570 --> 00:00:32,229 Vi kommer til at hente koden fra Kohana hjemmeside, 12 00:00:32,229 --> 00:00:35,000 og vi kommer til at begynde at bygge en blog, og forhåbentlig vil det være meget lærerigt, 13 00:00:35,000 --> 00:00:37,000 fordi du vil se måske måske jeg vil lave nogle fejl, 14 00:00:37,000 --> 00:00:39,000 og du vil se mig komme fra dem, 15 00:00:39,000 --> 00:00:42,040 eller du vil se min tanke proces som jeg opbygge gennem denne blog, 16 00:00:42,040 --> 00:00:44,000 og i mellemtiden, vil du også blive fortrolig med ramme i sig selv. 17 00:00:44,000 --> 00:00:48,000 Forhåbentlig vil det være en meget lærerig øvelse. 18 00:00:48,000 --> 00:00:51,370 >> Først, hvad der præcist er en ramme? 19 00:00:51,370 --> 00:00:54,000 Hvis du har taget CS50 hidtil, har du ikke rigtig har arbejdet med nogen 20 00:00:54,000 --> 00:00:56,000 rammer endnu, og de ting er dette. 21 00:00:56,000 --> 00:01:00,000 Du har sikkert gjort 1 webudvikling PSET allerede 22 00:01:00,000 --> 00:01:03,000 og lad os sige, du fortsætter med at bygge websites og holde opbygning af hjemmesider. 23 00:01:03,000 --> 00:01:05,000 Du vil begynde at lægge mærke til et par ting. 24 00:01:05,000 --> 00:01:07,000 Den første ting du vil bemærke er, at du sandsynligvis laver de samme ting 25 00:01:07,000 --> 00:01:09,150 igen og igen hele tiden, 26 00:01:09,150 --> 00:01:13,000 ting som rengøring brugerdata input data, 27 00:01:13,000 --> 00:01:17,250 ting som at organisere dine filer på en bestemt måde. 28 00:01:17,250 --> 00:01:19,000 Den anden ting du vil sandsynligvis også bemærke er, at din kode 29 00:01:19,000 --> 00:01:21,000 kan begynde at blive meget, meget rodet, 30 00:01:21,000 --> 00:01:24,000 og du kan lade det rodet og bare have en meget hård tid på at vedligeholde det, 31 00:01:24,000 --> 00:01:26,000 eller du kan begynde at strukturere din kode og gøre det modulære 32 00:01:26,000 --> 00:01:28,510 på bestemte måder at gøre det lettere at vedligeholde. 33 00:01:28,510 --> 00:01:31,020 >> Det er her, web rammer stort set kom i. 34 00:01:31,020 --> 00:01:33,680 Disse mennesker, der havde bygget en masse hjemmesider, sagde de, 35 00:01:33,680 --> 00:01:35,820 "Vi behøver ikke at gentage det hver eneste gang vi opbygge en hjemmeside." 36 00:01:35,820 --> 00:01:39,050 "Hvorfor gør vi ikke bare lave en pakke, der gør alle disse ting for dig 37 00:01:39,050 --> 00:01:41,250 hver eneste gang, du ønsker at opbygge en hjemmeside? " 38 00:01:41,250 --> 00:01:43,030 Og så når du laver en ny hjemmeside, 39 00:01:43,030 --> 00:01:45,880 du bare fokusere på, hvad netop denne særlige hjemmeside handler om. 40 00:01:45,880 --> 00:01:48,630 Du behøver ikke at gentage alle de forskellige konfiguration 41 00:01:48,630 --> 00:01:53,070 og adskillelse af koder og omskrive kode 42 00:01:53,070 --> 00:01:56,180 at du ofte nødt til at gøre, når man laver hjemmesider. 43 00:01:56,180 --> 00:01:59,410 Ideen er, at en ramme tillader dig at skrive et højere niveau kode 44 00:01:59,410 --> 00:02:01,030 uden at skulle bekymre sig om detaljer på lavere niveau. 45 00:02:01,030 --> 00:02:03,670 Et lavere niveau detalje kunne være noget lignende 46 00:02:03,670 --> 00:02:07,250 beskæftiger sig med rengøring brugerens inddata. 47 00:02:07,250 --> 00:02:09,320 Det er noget, du burde egentlig ikke behøver at bekymre sig om. 48 00:02:09,320 --> 00:02:12,370 Du bør fokusere på, hvad din web-fordeling er faktisk om. 49 00:02:12,370 --> 00:02:14,790 Det eliminerer en masse standardteksten kode. 50 00:02:14,790 --> 00:02:16,640 Det er en arkitektur for dit projekt. 51 00:02:16,640 --> 00:02:18,680 >> Den mest populære ville være Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 som jeg har tænkt mig at tale om i en anden. 53 00:02:20,380 --> 00:02:22,790 Og en masse gange disse rammer legemliggøre et sæt procedurer, 54 00:02:22,790 --> 00:02:25,750 regler og bedste praksis for dig at bruge 55 00:02:25,750 --> 00:02:28,190 så når man vedtager web rammer 56 00:02:28,190 --> 00:02:30,050 du skal skrive din kode på en bestemt måde, 57 00:02:30,050 --> 00:02:32,430 og det er generelt en aftalt sæt principper 58 00:02:32,430 --> 00:02:34,290 af det samfund, der er almindeligt accepteret at være 59 00:02:34,290 --> 00:02:36,230 en god måde at skrive kode. 60 00:02:36,230 --> 00:02:38,260 Det gør din kode mere vedligeholdelsesvenlig, mere brugbart, 61 00:02:38,260 --> 00:02:40,030 så videre og så videre. 62 00:02:40,030 --> 00:02:42,740 Og endelig, de ting jeg ønsker at understrege om rammer 63 00:02:42,740 --> 00:02:45,980 versus bibliotekerne er denne idé om inversion af kontrol, og de ting er dette. 64 00:02:45,980 --> 00:02:48,430 Forskellen mellem et bibliotek og en ramme er, at med et bibliotek 65 00:02:48,430 --> 00:02:51,990 er du stadig skriver hovedprogrammet, 66 00:02:51,990 --> 00:02:54,460 og du slags påberåber biblioteket 67 00:02:54,460 --> 00:02:56,810 og som opfordrer biblioteket til at gøre noget for dig. 68 00:02:56,810 --> 00:02:58,180 Forskellen mellem et bibliotek og en ramme 69 00:02:58,180 --> 00:03:01,620 er, at de rammer starter ud med den kontrol, 70 00:03:01,620 --> 00:03:03,260 og det påberåber din kode, 71 00:03:03,260 --> 00:03:06,190 så du kan tænke på det som - det er derfor, det hedder en ramme - 72 00:03:06,190 --> 00:03:09,700 rammerne giver denne ramme og struktur for din kode, 73 00:03:09,700 --> 00:03:11,320 og du udfylde hullerne, 74 00:03:11,320 --> 00:03:13,990 og det vil fremgå mere tydeligt i en anden 75 00:03:13,990 --> 00:03:16,670 når du ser mig begynde at skrive kode i led. 76 00:03:16,670 --> 00:03:19,130 Du vil se, at jeg udfylde hullerne, 77 00:03:19,130 --> 00:03:22,450 og rammerne er slags kontrollere alle de bevægelige dele, 78 00:03:22,450 --> 00:03:27,420 og jeg er nødt til at sætte brikkerne på de rigtige steder. 79 00:03:27,420 --> 00:03:29,360 >> I dag vil vi tale om Kohana, 80 00:03:29,360 --> 00:03:31,610 som er en af ​​mange PHP rammer. 81 00:03:31,610 --> 00:03:34,550 Der er web rammer, og der er dem i stort set hver eneste sprog, 82 00:03:34,550 --> 00:03:38,330 og jeg plukke Kohana fordi Kohana er velsagtens 83 00:03:38,330 --> 00:03:43,250 og almindeligt anerkendt som den nemmeste PHP ramme til at samle op. 84 00:03:43,250 --> 00:03:45,940 Det er den mest letvægt. 85 00:03:45,940 --> 00:03:48,470 Der er andre derude, der kommer med mange, mange flere funktioner, 86 00:03:48,470 --> 00:03:51,590 men de har tendens til at være sværere at samle op. 87 00:03:51,590 --> 00:03:54,920 Og endelig bruger Kohana MVC arkitektur. 88 00:03:54,920 --> 00:03:57,780 Det er let nok, at vi bogstaveligt talt kan bygge et projekt 89 00:03:57,780 --> 00:03:59,620 lige her lige foran dine øjne, og du kan temmelig meget 90 00:03:59,620 --> 00:04:02,780 følge med temmelig nemt. 91 00:04:02,780 --> 00:04:04,420 >> Hvad er MVC arkitekturen? 92 00:04:04,420 --> 00:04:06,540 Det står for Model-View-Controller, 93 00:04:06,540 --> 00:04:09,560 og måske hvis du tænker over den kode, du har skrevet hidtil 94 00:04:09,560 --> 00:04:11,280 for nogle af dine web-udvikling psets 95 00:04:11,280 --> 00:04:14,710 du kan være i stand til at se nogle af dette, men som regel, når du begynder at skrive 96 00:04:14,710 --> 00:04:16,500 en mere kompleks webapplikation, 97 00:04:16,500 --> 00:04:21,209 opdelingen mellem disse 3 segmenter bliver mere og mere tydeligt. 98 00:04:21,209 --> 00:04:26,740 Jeg lagde ud MVC her slags som en stak, 99 00:04:26,740 --> 00:04:29,920 og ofte vil du høre folk tale om stakke i webudvikling, 100 00:04:29,920 --> 00:04:33,760 og det er at illustrere idéen om, at 101 00:04:33,760 --> 00:04:37,510 hvert lag, hver komponent virkelig forsøger at kun kommunikere 102 00:04:37,510 --> 00:04:40,750 mellem 2 andre komponenter. 103 00:04:40,750 --> 00:04:44,550 Nogen adgang til din hjemmeside som en klient eller en browser. 104 00:04:44,550 --> 00:04:48,870 De interagerer med dit program gennem visningen kode. 105 00:04:48,870 --> 00:04:50,500 Udsigten kode interagerer med controlleren. 106 00:04:50,500 --> 00:04:52,400 Styringen interagerer med den model, 107 00:04:52,400 --> 00:04:55,090 og modellen interagerer med SQL-database. 108 00:04:55,090 --> 00:04:59,670 Og der er ingen hopping i mellem, hvis du skriver din kode ordentligt. 109 00:04:59,670 --> 00:05:01,670 >> Hvad har disse ting at gøre? 110 00:05:01,670 --> 00:05:06,020 Modellen væsentlige er det stykke kode, der beskæftiger sig med dine data. 111 00:05:06,020 --> 00:05:09,100 Alt, hvad der beskæftiger sig med din database, med de objekter, som du gemmer, 112 00:05:09,100 --> 00:05:11,280 eller hente disse objekter i databasen, 113 00:05:11,280 --> 00:05:13,450 Det er alt håndteres af modellen. 114 00:05:13,450 --> 00:05:15,290 Måske har du objekter i databasen. 115 00:05:15,290 --> 00:05:17,700 Vi kommer til at skabe en model, der har at gøre med indlæg, 116 00:05:17,700 --> 00:05:19,760 så et indlæg kan have nogle attributter til det. 117 00:05:19,760 --> 00:05:23,900 Du har måske funktioner omkring opbevaring af disse stillinger eller hentning af poster 118 00:05:23,900 --> 00:05:26,270 eller filtrering af stillinger og så videre og så videre, 119 00:05:26,270 --> 00:05:28,880 og det er alt den kode, der er håndteret af modellen. 120 00:05:28,880 --> 00:05:31,780 Styringen er en slags af ansøgningen logik, 121 00:05:31,780 --> 00:05:37,910 og en masse forskellige ting kan gå i ansøgningen logik. 122 00:05:37,910 --> 00:05:39,790 Hvis du taler med en anden API, 123 00:05:39,790 --> 00:05:42,310 der kan være, hvor du beskæftiger sig med ansøgningen logik. 124 00:05:42,310 --> 00:05:47,990 Hvis du forsøger at få til at bringe i data fra flere forskellige modeller 125 00:05:47,990 --> 00:05:51,540 og er nødt til at kombinere dem på nogen måde, der ofte kan håndteres af controlleren. 126 00:05:51,540 --> 00:05:53,820 For eksempel, på Facebook, hvis du ven nogen, 127 00:05:53,820 --> 00:05:58,500 så måske denne retsakt godtgøre, at forholdet 128 00:05:58,500 --> 00:06:00,490 kan ske ved hjælp af kontrolleren. 129 00:06:00,490 --> 00:06:04,350 >> Og endelig, udsigten er den kode, der er at generere hvad du faktisk ser. 130 00:06:04,350 --> 00:06:07,410 En masse gange jeg tror i CS50 psets 131 00:06:07,410 --> 00:06:10,050 de ikke virkelig opfordre jer til at adskille disse 3 ting. 132 00:06:10,050 --> 00:06:12,430 Du vil sandsynligvis have denne store, lang fil, hvor i toppen 133 00:06:12,430 --> 00:06:15,130 du lave nogle SQL-forespørgsel, og måske gøre nogle behandling 134 00:06:15,130 --> 00:06:17,020 på de data, du har hentet fra databasen, 135 00:06:17,020 --> 00:06:19,370 og så har du alle dine HTML nederst. 136 00:06:19,370 --> 00:06:22,840 Og du kan opleve, at når du opretter flere og flere sider 137 00:06:22,840 --> 00:06:25,790 at du kommer til at have noget kode gentagelser, og også, 138 00:06:25,790 --> 00:06:29,600 de ting er din fil bliver rigtig stor og lang 139 00:06:29,600 --> 00:06:32,370 og bliver uhåndterligt at administrere. 140 00:06:32,370 --> 00:06:34,500 Grunden MVC er så godt betragtes 141 00:06:34,500 --> 00:06:36,120 er af en række årsager. 142 00:06:36,120 --> 00:06:38,110 Den første ting er noget, der hedder adskillelse af bekymringer 143 00:06:38,110 --> 00:06:40,370 hvilket er den idé, at når du har - 144 00:06:40,370 --> 00:06:43,520 ideelt set 1 stykke kode skal gøre 1 ting og gøre det rigtig godt, 145 00:06:43,520 --> 00:06:47,210 og du bør ikke kombinere stykker kode, der gør forskellige ting. 146 00:06:47,210 --> 00:06:49,230 For eksempel se koden og model kode, 147 00:06:49,230 --> 00:06:51,040 de behøver ikke virkelig nødt til at være relateret. 148 00:06:51,040 --> 00:06:53,290 De behøver ikke at være i de samme filer, så når du kan, skille dem ud 149 00:06:53,290 --> 00:06:55,300 så det er let at vedligeholde. 150 00:06:55,300 --> 00:06:57,130 >> Den anden ting er genbrug af kode. 151 00:06:57,130 --> 00:06:59,770 Du kan finde dig selv skrive den samme SQL-forespørgsel eller laver 152 00:06:59,770 --> 00:07:03,060 lignende forespørgsler, der kan indvindes i 1 funktion, 153 00:07:03,060 --> 00:07:05,440 og det er ideen bag modeller og controllere, 154 00:07:05,440 --> 00:07:09,690 have det i en særskilt funktion, som du kan genbruge i forskellige steder i dit projekt. 155 00:07:09,690 --> 00:07:12,420 Og endelig, der er bundet til tørring din kode, 156 00:07:12,420 --> 00:07:14,700 eller ikke gentage dig selv, ikke gentage dig selv. 157 00:07:14,700 --> 00:07:18,090 Dette er meget forståeligt i udvikling. 158 00:07:18,090 --> 00:07:20,110 Når du kan, så du ikke ønsker at gentage dig selv, fordi hvis du gentager dig selv, 159 00:07:20,760 --> 00:07:23,400  det er meget dyrere at vedligeholde. 160 00:07:23,400 --> 00:07:26,040 Hvis du ønsker at ændre 1 ting, du nødt til at ændre det overalt, 161 00:07:26,040 --> 00:07:30,230 og det fører til fejl, og det er forfærdeligt. 162 00:07:30,230 --> 00:07:32,010 >> Okay. 163 00:07:32,010 --> 00:07:37,270 Eventuelle spørgsmål, så langt om Kohana overhovedet? 164 00:07:37,270 --> 00:07:39,200 Store. 165 00:07:39,200 --> 00:07:42,300 Nu skal vi til at dykke ned i live kodning session 166 00:07:42,300 --> 00:07:48,050 og forhåbentlig alt går godt. 167 00:07:57,200 --> 00:08:00,050 Jeg vil stort set bygge denne hjemmeside 168 00:08:00,050 --> 00:08:03,910 på en af ​​mine fjerntliggende servere, og på den måde du fyre kan også 169 00:08:03,910 --> 00:08:06,310 se hjemmesiden og få adgang til hjemmesiden, 170 00:08:06,310 --> 00:08:10,990 og også miljøet er bedre konfigureret end min fjernbetjening maskine, 171 00:08:10,990 --> 00:08:14,580 fordi det kører Linux i stedet for OS X. 172 00:08:14,580 --> 00:08:16,260 Vi bogstaveligt talt kommer til at starte. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Jeg har tænkt mig at hente koden fra hjemmesiden. 175 00:08:21,350 --> 00:08:24,610 Jeg har tænkt mig at kopiere linket adresse, 176 00:08:24,610 --> 00:08:29,770 gå til min server, så download den, 177 00:08:29,770 --> 00:08:33,000 og jeg har tænkt mig at pakke den ud. 178 00:08:38,330 --> 00:08:45,710 >> [Studerende] Hvad er det største, du kan gøre teksten? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] Er det bedre? 180 00:08:47,330 --> 00:08:50,070 [Studerende] Er det doable? >> [Brandon Liu] Ja, det er fint. 181 00:08:50,070 --> 00:08:54,500 Jeg har hentet en ZIP-fil og lynede det i en mappe kaldet Kohana, 182 00:08:54,500 --> 00:08:58,820 og vi kommer til at omdøbe det CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 og lad os gå i. 184 00:09:01,140 --> 00:09:03,610 Awesome. 185 00:09:03,610 --> 00:09:06,870 Her kan du se en masse forskellige filer. 186 00:09:06,870 --> 00:09:10,140 De fleste af jer kan ignorere - vi er klar ikke kommer til at gå igennem hver enkelt fil, der er i her 187 00:09:10,140 --> 00:09:13,130 på grund af vores tidsbegrænsninger, 188 00:09:13,130 --> 00:09:16,310 men generelt, når du installerer Kohana, den første ting du gør 189 00:09:16,310 --> 00:09:23,210 er du gå til den mappe, 190 00:09:23,210 --> 00:09:26,050 og du vil stort set gøre nogle miljø tests og whatnot 191 00:09:26,050 --> 00:09:28,640 for at sikre dit miljø er korrekt indstillet til at køre Kohana 192 00:09:28,640 --> 00:09:31,450 og sørg for, at alt er i orden. 193 00:09:31,450 --> 00:09:35,510 Du kan se de fleste ting passerede, men generelt du altid løbe ind i dette problem 1 194 00:09:35,510 --> 00:09:38,180 hvor det klager over, at nogle mappe er ikke skrivbar, 195 00:09:38,180 --> 00:09:40,410 og det er på grund af nogle tilladelser. 196 00:09:40,410 --> 00:09:43,080 Jeg ved ikke, hvor meget du fyre har lært om filrettigheder i CS50, 197 00:09:43,080 --> 00:09:47,920 men hvis du gør webudvikling, er du nødt til at løbe ind i dette spørgsmål en masse. 198 00:09:47,920 --> 00:09:58,340 Jeg har tænkt mig at gøre det skrivbar 199 00:09:58,340 --> 00:10:03,390 og jeg tror jeg også nødt til - der vi går. 200 00:10:03,390 --> 00:10:07,040 >> Okay, så nu kan du se alt gik, 201 00:10:07,040 --> 00:10:10,000 og nu vil den fortælle dig at omdøbe install.php fil. 202 00:10:10,000 --> 00:10:15,630 Jeg har tænkt mig at flytte install.php fil til installed.php, 203 00:10:15,630 --> 00:10:19,610 og nu, hvis jeg opdatere, 204 00:10:19,610 --> 00:10:22,810 det giver mig nogle fejl, og det er her, debugging kommer i. 205 00:10:22,810 --> 00:10:25,610 Dette er, hvor du kan se, hvad der rent faktisk kommer til at ske. 206 00:10:25,610 --> 00:10:28,460 Sagen er, som standard, Kohana antager, at 207 00:10:28,460 --> 00:10:31,480 dit projekt er i rodmappen på dit domæne, 208 00:10:31,480 --> 00:10:35,920 så det forventer du at være på demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Vi er nødt til at fortælle det, at det faktisk i en undermappe. 210 00:10:37,540 --> 00:10:39,820 Det er i en undermappe kaldet CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 Sagen er den, det er fejlfortolke CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 som noget andet, som jeg vil forklare dig i en anden. 213 00:10:45,680 --> 00:10:49,910 Men jeg skal fortælle dig, det er noget, der kan forventes. 214 00:10:49,910 --> 00:10:53,700 Hvad vi vil gøre, er at vi kommer til at gå ind i denne mappe kaldet bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 der er konfigurationen mappe, hvor en masse forskellige ting er sat op. 216 00:10:59,260 --> 00:11:01,570 Jeg åbner det op. 217 00:11:01,570 --> 00:11:09,790 Så måske en af ​​de første ting, jeg vil gøre, er at ændre tidszonen. 218 00:11:09,790 --> 00:11:13,910 >> Og lad så se. 219 00:11:13,910 --> 00:11:15,180 Aha! Lige her. 220 00:11:15,180 --> 00:11:18,690 Der er en masse forskellige konfiguration ordsprog i her, 221 00:11:18,690 --> 00:11:21,700 men det jeg leder efter, er denne ting kaldet basis-URL, 222 00:11:21,700 --> 00:11:24,570 og som standard jeg får det sat til Kohana, 223 00:11:24,570 --> 00:11:29,020 men jeg har tænkt mig at ændre det til CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 og jeg tror, ​​at skulle ordne det. 225 00:11:32,880 --> 00:11:34,150 Ja, stor. 226 00:11:34,150 --> 00:11:39,530 Som standard, at se, at det virker, det siger, "Hello World". 227 00:11:39,530 --> 00:11:42,930 Hvor kom det fra? Hvordan kom vi til Hello World? 228 00:11:42,930 --> 00:11:47,640 Hvor præcis er den kode, der rent faktisk skrev, at? 229 00:11:47,640 --> 00:11:50,240 For at forstå det, vil jeg præsentere dette koncept kaldet routing. 230 00:11:50,240 --> 00:11:52,590 Stort set alle web rammer har begrebet kaldes routing, 231 00:11:52,590 --> 00:11:57,230 som er det stykke af software, der vil kortlægge en bestemt URL 232 00:11:57,230 --> 00:12:01,550 til et bestemt stykke kode i din ramme. 233 00:12:01,550 --> 00:12:07,510 For eksempel, hvis du har nogle URL, og du går til nogle URL ligesom foo.com / blog / all 234 00:12:07,510 --> 00:12:11,170 så hvad rammerne kommer til at gøre - eller i det mindste hvad Kohana kommer til at gøre - 235 00:12:11,170 --> 00:12:15,540 det kommer til at finde en klasse kaldet controller blog, 236 00:12:15,540 --> 00:12:18,720 og det kommer til at køre funktion med navnet handling alle. 237 00:12:18,720 --> 00:12:20,160 Jeg ved, jeg taler om klasse og funktioner, 238 00:12:20,160 --> 00:12:23,860 og jeg ved, du fyre har ikke dækket klasser og funktioner 239 00:12:23,860 --> 00:12:26,470 i CS50 endnu, men for nu, 240 00:12:26,470 --> 00:12:29,800 du kan tænke på klasser som bare en gruppe af funktioner, 241 00:12:29,800 --> 00:12:32,900 en måde at gruppere funktioner sammen. 242 00:12:32,900 --> 00:12:37,690 Det er virkelig alt hvad du behøver at vide. 243 00:12:37,690 --> 00:12:43,120 >> Nu, hvis vi ser på vores mappestruktur, 244 00:12:43,120 --> 00:12:47,110 inde i programmet mappe er der en anden mappe kaldet klasser, 245 00:12:47,110 --> 00:12:49,200 og de andre mapper kaldes Controller og model. 246 00:12:49,200 --> 00:12:52,530 Hvis du kigger i mappen Controller, 247 00:12:52,530 --> 00:12:56,330 vi se, at der er en fil kaldet Velkommen, 248 00:12:56,330 --> 00:13:00,370 og du kan se her er en klasse kaldet Controller Velkommen, 249 00:13:00,370 --> 00:13:02,340 og der er en funktion kaldet Action Index, 250 00:13:02,340 --> 00:13:06,360 og hvad det gør, er det sætter kroppen af ​​dit svar til Hello World. 251 00:13:06,360 --> 00:13:08,730 Det er, hvor koden bliver skrevet. 252 00:13:08,730 --> 00:13:11,610 Det andet spørgsmål er, godt, jeg ikke gå til 253 00:13:11,610 --> 00:13:13,680 blah, blah, blah, / welcome / indeks. 254 00:13:13,680 --> 00:13:16,250 Hvordan gjorde jeg ender her? 255 00:13:16,250 --> 00:13:20,410 Tja, det er simpelthen fordi 256 00:13:20,410 --> 00:13:22,410 her i bunden af ​​vores bootstrap fil 257 00:13:22,410 --> 00:13:24,550 hvor vi sætter vores ruter 258 00:13:24,550 --> 00:13:26,570 du kan se, at de sætter nogle standardindstillinger for dig. 259 00:13:26,570 --> 00:13:28,990 Standarden controller er Velkommen. Standardhandlingen er Index. 260 00:13:28,990 --> 00:13:31,600 Det er derfor, når vi sætter noget i der det automatisk gik til Welcome controller 261 00:13:31,600 --> 00:13:33,940 og indekset aktion. 262 00:13:33,940 --> 00:13:37,460 >> Alt mening hidtil? 263 00:13:37,460 --> 00:13:40,850 Nu kan du gøre mere end blot at gå til Controller 264 00:13:40,850 --> 00:13:43,670 og en bestemt handling. 265 00:13:43,670 --> 00:13:48,480 Du kan også passere i parametre til controlleren. 266 00:13:48,480 --> 00:13:56,390 Blot som eksempel, 267 00:13:56,390 --> 00:14:04,070 Jeg har tænkt mig at tilføje en anden handling til denne controller til at vise dig. 268 00:14:04,070 --> 00:14:09,130 Lad os kalde denne handling Echo, fordi det kommer til at fortælle dig, hvad du giver det, 269 00:14:09,130 --> 00:14:17,510 og så jeg dybest set kommer til at få fat i 270 00:14:17,510 --> 00:14:20,960 en parameter, der kommer til at blive sendt igennem mig til routing-program, 271 00:14:20,960 --> 00:14:24,440 og som du kan se her, 272 00:14:24,440 --> 00:14:28,440 denne linje lige her, kan du se, at 273 00:14:28,440 --> 00:14:31,270 dette dybest set betyder, at du har controller, og du har en /, 274 00:14:31,270 --> 00:14:33,480 og du har handling, og du har en anden /, 275 00:14:33,480 --> 00:14:39,140 og det kommer til at være parametre, og fordi vi har dette navn id 276 00:14:39,140 --> 00:14:42,450 inden vinkelbeslag, der betyder, at vi navngivning denne parameter-ID. 277 00:14:42,450 --> 00:14:45,490 Senere i min controller kode, hvis jeg ønsker at gribe fat i denne parameter, 278 00:14:45,490 --> 00:14:51,790 Jeg kan bruge den kode jeg skrev, finde parameteren hedder id. 279 00:14:51,790 --> 00:14:59,290 Det er, hvad jeg gjorde her, og jeg har tænkt mig at vende tilbage og sige, 280 00:14:59,290 --> 00:15:07,090 "Du sagde," at. 281 00:15:07,090 --> 00:15:10,760 Og så nu, hvis jeg går til vores hjemmeside, 282 00:15:10,760 --> 00:15:19,550 Jeg går til cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 Åh, det er rigtigt. 284 00:15:21,420 --> 00:15:23,930 Der er 1 skridt jeg udeladt. 285 00:15:23,930 --> 00:15:27,020 Dette er en del af den levende kodning idé. 286 00:15:27,020 --> 00:15:36,100 >> Her er 1 ting. Lad os se. 287 00:15:36,100 --> 00:15:38,870 Så normalt som standard med en masse af disse web-applikationer 288 00:15:38,870 --> 00:15:42,820 du er nødt til at medtage denne index.php ting i din webadresse, 289 00:15:42,820 --> 00:15:46,410 fordi ideen er index.php er en slags indgang 290 00:15:46,410 --> 00:15:48,250 af din ansøgning, men selvfølgelig, 291 00:15:48,250 --> 00:15:50,110 det er lidt irriterende at have. 292 00:15:50,110 --> 00:15:53,790 Du ønsker ikke at have index.php vises i din webadresse, 293 00:15:53,790 --> 00:15:56,080 og stort set alle web rammer ud af kassen 294 00:15:56,080 --> 00:15:58,440 har dette index.php problem, 295 00:15:58,440 --> 00:16:03,370 og så er du nødt til at træffe nogle foranstaltninger for at være i stand til at fjerne det. 296 00:16:03,370 --> 00:16:07,540 Og så i dette tilfælde, 297 00:16:07,540 --> 00:16:11,450 hvad vi vil gøre, er at vi kommer til at bruge en fil kaldet. htaccess, 298 00:16:11,450 --> 00:16:13,900 og det er noget, der er specifikke for Apache webserver, 299 00:16:13,900 --> 00:16:16,290 og det kan gøre ting som omskrivning URL'er 300 00:16:16,290 --> 00:16:19,350 og omdirigeringswebadresser og så videre og så videre, 301 00:16:19,350 --> 00:16:24,280 og Kohana er rart nok til at give en skabelon. htaccess fil, som vi kan bruge. 302 00:16:24,280 --> 00:16:28,300 >> Som du kan se, er der en fil der hedder example.htaccess, 303 00:16:28,300 --> 00:16:33,410 og vi kommer til at kopiere det til. htaccess. 304 00:16:33,410 --> 00:16:36,950 Jeg har tænkt mig at åbne denne og redigere den, 305 00:16:36,950 --> 00:16:40,840 og dybest set det gør en masse forskellige ting. 306 00:16:40,840 --> 00:16:45,320 Nøglen linje, du måske ønsker at se på, er lige her. 307 00:16:45,320 --> 00:16:49,840 Ideen er, at dette opstiller en regel, der siger, 308 00:16:49,840 --> 00:16:56,400 "Okay, hvad du skriver i, prepend index.php til det." 309 00:16:56,400 --> 00:16:58,710 Du kan se, at. 310 00:16:58,710 --> 00:17:00,370 Den. * Står for noget, der passer til noget, 311 00:17:00,370 --> 00:17:03,300 og derefter den anden del er index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 og $ 0 indebærer uanset blev matchet tidligere. 313 00:17:07,410 --> 00:17:09,500 Giver det mening? 314 00:17:09,500 --> 00:17:12,190 Men de virkelig centrale ting jeg ønsker at ændre, er at ændre denne omskrivning base, 315 00:17:12,190 --> 00:17:14,300 som er URL base. 316 00:17:14,300 --> 00:17:17,780 Den slags antager hvor du arbejder fra. 317 00:17:17,780 --> 00:17:22,560 Jeg har tænkt mig at tilføje CS50 Kohana til det, 318 00:17:22,560 --> 00:17:26,530 og på den måde nu, hvis jeg fjerner index.php, 319 00:17:26,530 --> 00:17:32,110 det bør arbejde, og jeg har tænkt mig at tilføje nogle tal 320 00:17:32,110 --> 00:17:36,380 at vise, at det rent faktisk virkede. 321 00:17:36,380 --> 00:17:38,130 Lyder godt. 322 00:17:38,130 --> 00:17:40,260 >> Eventuelle spørgsmål indtil videre? 323 00:17:40,260 --> 00:17:42,300 [Studerende] Hvordan gik det vide for at gøre de 123? 324 00:17:42,300 --> 00:17:44,120 Er det et argument? 325 00:17:44,120 --> 00:17:46,560 Præcis. Du kan tænke på det ligesom et argument. 326 00:17:46,560 --> 00:17:52,410 Men den underlige ting er dog, at den måde Kohana gør det 327 00:17:52,410 --> 00:17:54,910 er, at de ikke gør det præcis som et argument. 328 00:17:54,910 --> 00:17:56,930 Du er nødt til at få fat i det på denne måde. 329 00:17:56,930 --> 00:18:01,030 Du er nødt til at få fat i objektet anmodning og bede om den parameter, er opkaldt id, 330 00:18:01,030 --> 00:18:03,240 og det navn id stammer fra at bootstrap fil 331 00:18:03,240 --> 00:18:06,990 at jeg viste tidligere, og navnet id var i disse vinkelbeslag, 332 00:18:06,990 --> 00:18:11,580 og det er hvordan du fat i disse parametre. 333 00:18:11,580 --> 00:18:14,010 Awesome. 334 00:18:14,010 --> 00:18:17,550 Andre spørgsmål? 335 00:18:17,550 --> 00:18:20,500 Som jeg sagde, controllere, de håndterer ansøgning logik, 336 00:18:20,500 --> 00:18:22,980 så det er 1 tilfælde, hvor du kan se that - 337 00:18:22,980 --> 00:18:24,830 Det er meget grundlæggende, men det er stadig ansøgning logik, 338 00:18:24,830 --> 00:18:27,980 tanken om at snuppe den parameter, og skabe en ny streng 339 00:18:27,980 --> 00:18:31,920 der siger: "Du sagde bla," og derefter spytte det tilbage til dig. 340 00:18:31,920 --> 00:18:34,030 Og generelt, hvad du gør, er du oprette forskellige controllere. 341 00:18:34,030 --> 00:18:36,450 Du opretter separate controllere til forskellige dele af din hjemmeside. 342 00:18:36,450 --> 00:18:38,160 >> I dag vil vi lave en meget simpel hjemmeside, 343 00:18:38,160 --> 00:18:40,420 og det kommer til at være en meget grundlæggende blog. 344 00:18:40,420 --> 00:18:43,780 Vi kommer til at lave en ny controller bare for stillingerne i en blog. 345 00:18:43,780 --> 00:18:47,060 Men så hvis jeg skulle også tilføje kommentarer til blog-indlæg, 346 00:18:47,060 --> 00:18:50,140 så ville jeg sikkert gerne lave en ny controller til disse bemærkninger. 347 00:18:50,140 --> 00:18:53,380 Hvis jeg ønskede at tilføje brugere, ville jeg nok tilføje en ny controller til disse brugere, 348 00:18:53,380 --> 00:18:57,000 og i almindelighed, er ideen, at når du har en ny model, 349 00:18:57,000 --> 00:18:59,630 en ny data objekt, som du har med at gøre, 350 00:18:59,630 --> 00:19:02,970 du har en enkelt controller til at data objekt. 351 00:19:02,970 --> 00:19:04,370 I dag er vi kun kommer til at arbejde med 1 data objekt, 352 00:19:04,370 --> 00:19:06,250 og det kommer til at være indlæg, 353 00:19:06,250 --> 00:19:08,710 og også du kan tænke på dataobjekter som svarende til tabeller. 354 00:19:08,710 --> 00:19:12,160 Generelt hver tabel svarer til 1 type data objekt, 355 00:19:12,160 --> 00:19:15,160 så stillingen bordet vil have 1 indlæg model, 356 00:19:15,160 --> 00:19:18,230 som vil have en postkontrollør der svarer til den, 357 00:19:18,230 --> 00:19:22,190 og det samme for kommentarer, det samme for brugerne, og så videre og så videre. 358 00:19:22,190 --> 00:19:24,070 Og det er en generel tommelfingerregel. 359 00:19:24,070 --> 00:19:27,460 Der vil være særlige tilfælde, hvor du kan afvige fra det, 360 00:19:27,460 --> 00:19:29,300 men 90% af den tid, der er, hvad du vil gøre, 361 00:19:29,300 --> 00:19:32,810 og jeg vil vise dig det er, hvad vi vil gøre i dag. 362 00:19:32,810 --> 00:19:35,490 1 mere begreb før vi dykker tilbage i koden, 363 00:19:35,490 --> 00:19:37,710 denne idé om objekt relationelle kortlægning. 364 00:19:37,710 --> 00:19:41,200 >> Gutter har allerede gjort en web-udvikling PSET, 365 00:19:41,200 --> 00:19:43,820 og du har set, at du laver en SQL-forespørgsel, 366 00:19:43,820 --> 00:19:46,510 og hvad det vender tilbage til dig er rækker. 367 00:19:46,510 --> 00:19:50,040 Du får disse rækker, og du indeksere dem af nogle navn, 368 00:19:50,040 --> 00:19:55,480 navnet på søjlen og bordet, 369 00:19:55,480 --> 00:19:57,630 og det er, hvordan du arbejder med det, 370 00:19:57,630 --> 00:19:59,290 og det kan være lidt besværlig. 371 00:19:59,290 --> 00:20:01,810 Men desuden, hvis du har relationer i databasen, 372 00:20:01,810 --> 00:20:05,280 som for eksempel hvis jeg har kommentarer og indlæg, 373 00:20:05,280 --> 00:20:11,240 så måske jeg ønsker at få fat moderselskabet stillingen en kommentar. 374 00:20:11,240 --> 00:20:14,350 Hvis jeg bruger bare rækker i SQL, så kan jeg kun få er ID- 375 00:20:14,350 --> 00:20:19,310 af moderselskabet post og ikke den faktiske stilling selv. 376 00:20:19,310 --> 00:20:21,680 Men når vi kodning, hvad vi egentlig ønsker, er rent faktisk at få fat i 377 00:20:21,680 --> 00:20:23,550  moderselskabet bogføre selv nogle gange. 378 00:20:23,550 --> 00:20:25,730 Hvad objekt relationelle kortlægning gør, er 379 00:20:25,730 --> 00:20:29,480 det tager resultaterne af databaseforespørgslen 380 00:20:29,480 --> 00:20:32,420 og sætter det ind i objekter for dig, som er meget pænere at arbejde med 381 00:20:32,420 --> 00:20:34,770 end almindeligt arrays og rækker. 382 00:20:34,770 --> 00:20:37,550 >> For eksempel nu hvor jeg har en kommentar måske, 383 00:20:37,550 --> 00:20:40,900 og jeg ønsker at få fat sit moderselskab indlæg, 384 00:20:40,900 --> 00:20:43,440 og jeg kan måske kommentere pil indlæg, 385 00:20:43,440 --> 00:20:45,230 så vil det faktisk give mig stillingen objekt 386 00:20:45,230 --> 00:20:47,940 svarer til de faktiske forælder posten ikke blot nogle id, 387 00:20:47,940 --> 00:20:52,210 som jeg ellers ville have til at bruge og gøre en anden SQL-forespørgsel til at få fat i stillingen, 388 00:20:52,210 --> 00:20:57,430 som er besværlig og unødvendig. 389 00:20:57,430 --> 00:21:01,840 Og desuden, ved at kortlægge alle disse datarækker i genstande, 390 00:21:01,840 --> 00:21:03,760 Du kan også vedhæfte flere funktioner til objekter, 391 00:21:03,760 --> 00:21:09,700 så for eksempel, jeg talte om, hvordan klasser er hovedsagelig grupperinger af funktioner. 392 00:21:09,700 --> 00:21:11,620 Du kan tænke på det på den måde. 393 00:21:11,620 --> 00:21:15,290 For eksempel, måske har jeg dette indlæg objekt, 394 00:21:15,290 --> 00:21:17,830 og måske vil jeg gerne have en form for funktion knyttet til det 395 00:21:17,830 --> 00:21:20,300 der dybest set fortæller mig blev det for nylig sendt? 396 00:21:20,300 --> 00:21:23,570 Var det bogført inden for den sidste uge, sandt eller falsk? 397 00:21:23,570 --> 00:21:27,320 Og det er en funktion, jeg kan vedhæfte på dette formål, 398 00:21:27,320 --> 00:21:31,300 og det er virkelig praktisk at have det på samme sted, 399 00:21:31,300 --> 00:21:33,820 og der er et væld af forskellige funktioner, du kan oprette 400 00:21:33,820 --> 00:21:37,990 for disse objekter, og det er virkelig rart at være i stand til at knytte det til en klasse, 401 00:21:37,990 --> 00:21:41,700 til et objekt, hvorimod hvis du lige har haft rækker, der kommer fra din database, 402 00:21:41,700 --> 00:21:43,790 så kan du ikke rigtig vedhæfte noget funktionalitet til det. 403 00:21:43,790 --> 00:21:47,850 Det er bogstavelig talt lige data. 404 00:21:47,850 --> 00:21:50,550 Eventuelle spørgsmål om det overhovedet? 405 00:21:50,550 --> 00:21:52,710 ORMs er meget almindelige web-udvikling, 406 00:21:52,710 --> 00:21:56,330 og der er en masse forskellige typer af ORMs, 407 00:21:56,330 --> 00:21:58,450 og Kohana har sin egen ORM. 408 00:21:58,450 --> 00:22:05,050 Det er meget grundlæggende, men du får en forsmag på, hvad det ligner. 409 00:22:05,050 --> 00:22:08,780 >> Lad os skabe en model for vores blogindlæg, 410 00:22:08,780 --> 00:22:12,350 og den første ting, vi selvfølgelig nødt til at gøre, er at skabe en egentlig tabel 411 00:22:12,350 --> 00:22:16,680 inden for vores database til rent faktisk at gemme vores data for disse stillinger. 412 00:22:16,680 --> 00:22:19,260 Den første ting, jeg har tænkt mig at gøre, er at gå til phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Har du fyre brugte phpMyAdmin før? 414 00:22:21,410 --> 00:22:23,400 Okay, awesome, så du fyre allerede ved, hvad det er, 415 00:22:23,400 --> 00:22:32,200 og jeg har tænkt mig at oprette en ny tabel kaldet Kohana Indlæg, 416 00:22:32,200 --> 00:22:37,820 og det kommer til at være meget simpelt. 417 00:22:37,820 --> 00:22:40,190 Jeg bliver nødt til at logge ind igen 418 00:23:02,620 --> 00:23:04,640 Alt, hvad vi kommer til at gøre i dag er at have en forfatter og en krop, 419 00:23:04,640 --> 00:23:11,930 bare holde det simpelt. 420 00:23:11,930 --> 00:23:15,620 Jeg har tænkt mig at oprette denne tabel, 421 00:23:15,620 --> 00:23:19,620 og nu skal vi bare have en tabel, der repræsenterer vores indlæg 422 00:23:19,620 --> 00:23:23,370 med 2 felter for vores forfatter og vores krop. 423 00:23:23,370 --> 00:23:26,290 Den anden ting, jeg vil gøre nu, er 424 00:23:26,290 --> 00:23:29,820 konfigurere min web-applikation, så den ved, hvordan man opretter forbindelse til databasen, 425 00:23:29,820 --> 00:23:31,950 og dette igen, er noget, du bliver nødt til at gøre med alle web-applikationer. 426 00:23:31,950 --> 00:23:34,790 Du er nødt til at fortælle det brugernavn og password 427 00:23:34,790 --> 00:23:36,990 og navnet på databasen, og så videre og så videre 428 00:23:36,990 --> 00:23:40,000 at regne ud, hvordan man rent faktisk forbindelse til din database. 429 00:23:40,000 --> 00:23:58,710 >> I Kohana, vi har noget, der hedder en database modul, 430 00:23:58,710 --> 00:24:02,690 og i mappen konfiguration, vi har denne mappe kaldet Database, 431 00:24:02,690 --> 00:24:07,330 og som du kan se, er der en masse indstillinger, du nødt til at indstille her 432 00:24:07,330 --> 00:24:09,860 at fortælle det, hvad er brugernavn og password 433 00:24:09,860 --> 00:24:13,110 for databasen, så jeg kan faktisk forbindelse til det. 434 00:24:13,110 --> 00:24:15,010 Og da jeg ikke vil have jer til rent faktisk at vide 435 00:24:15,010 --> 00:24:17,190 brugernavn og adgangskode på min database, 436 00:24:17,190 --> 00:24:23,840 Jeg har en fil, hvor jeg allerede sætte det hele op, og jeg har tænkt mig at kopiere og indsætte det over. 437 00:24:33,080 --> 00:24:36,870 Awesome. 438 00:24:36,870 --> 00:24:39,880 Okay. Jeg tror, ​​det er al den konfiguration jeg har brug for at gøre, 439 00:24:39,880 --> 00:24:41,070 men lad os se. 440 00:24:41,070 --> 00:24:43,720 Vi arbejder på det, og hvis noget går ned, 441 00:24:43,720 --> 00:24:47,490 så vil vi ordne det. 442 00:24:47,490 --> 00:24:51,830 Nu, hvad jeg har tænkt mig at gøre, er at jeg har tænkt mig at oprette en ny controller. 443 00:24:51,830 --> 00:24:53,190 Eller faktisk, undskyld. 444 00:24:53,190 --> 00:24:55,080 Først vil jeg nødt til at oprette en ny model. 445 00:24:55,080 --> 00:25:01,620 Jeg vil oprette en ny model kaldet Post.php, 446 00:25:01,620 --> 00:25:12,440 og hvad vi vil gøre, er at vi vil kalde det klasse Model_Post. 447 00:25:12,440 --> 00:25:15,390 Få nogle syntaks fremhæve på, 448 00:25:15,390 --> 00:25:19,750 og så når jeg siger, "udvider ORM," det er dybest set 449 00:25:19,750 --> 00:25:21,210 nogle mere objektorienteret programmering, 450 00:25:21,210 --> 00:25:23,340 som desværre gutter har ikke lært i CS50 endnu, 451 00:25:23,340 --> 00:25:25,290 men det er ret nemt at samle op. 452 00:25:25,290 --> 00:25:27,950 Det giver mig alt dette ekstra funktionalitet, der kommer i denne ORM pakke, 453 00:25:27,950 --> 00:25:31,120 og så får jeg en masse ekstra funktioner og whatnot gratis, 454 00:25:31,120 --> 00:25:34,810 som du vil se lidt af i en anden. 455 00:25:34,810 --> 00:25:37,670 >> Lige nu faktisk alt hvad jeg behøver at gøre er at oprette denne klasse. 456 00:25:37,670 --> 00:25:39,160 Jeg behøver ikke engang at gøre nogen funktion eller noget, 457 00:25:39,160 --> 00:25:41,770 men jeg har oprettet en klasse, der repræsenterer tabellen, 458 00:25:41,770 --> 00:25:44,140 og fordi jeg har udvidet denne ORM klasse, 459 00:25:44,140 --> 00:25:51,080 Jeg får en masse ting gratis, så for nu du ikke behøver at sætte noget mere op. 460 00:25:51,080 --> 00:25:53,530 Og nu, hvad jeg har tænkt mig at gøre, er at jeg har tænkt mig at oprette en ny controller, 461 00:25:53,530 --> 00:25:58,480 som jeg har tænkt mig at nævne blog.php, 462 00:25:58,480 --> 00:26:04,350 og jeg har tænkt mig at kopiere over Welcome controller 463 00:26:04,350 --> 00:26:11,950 så jeg ikke behøver at genindtaste nogle ting, 464 00:26:11,950 --> 00:26:20,720 og nu er jeg nødt til at omdøbe dette. 465 00:26:20,720 --> 00:26:24,710 Nu, hvad jeg har tænkt mig at gøre for at teste for at sikre, at alt fungerer ud, 466 00:26:24,710 --> 00:26:27,820 Jeg har tænkt mig at få fat i det første indlæg fra min database 467 00:26:27,820 --> 00:26:32,680 og udskrive kroppen af ​​stillingen på skærmen. 468 00:26:32,680 --> 00:26:37,920 For at gøre dette, hvad jeg har tænkt mig at gøre først er jeg har tænkt mig at spare de stillinger 469 00:26:37,920 --> 00:26:48,770 til en variabel, så hvad vi vil gøre, er - 470 00:26:48,770 --> 00:26:52,090 i Kohana hvad du skal gøre er at få fat i stillingen objekt 471 00:26:52,090 --> 00:26:55,380 Det er lidt besværligt, men du er nødt til at gøre dette kaldes ORM :: fabrik, 472 00:26:55,380 --> 00:26:57,750 og så skal du passere i navnet på den model, du ønsker, 473 00:26:57,750 --> 00:27:00,490 og den returnerer ORM objekt, der repræsenterer den model. 474 00:27:00,490 --> 00:27:04,860 Og så, som jeg sagde, da vi udvider ORM objekt, 475 00:27:04,860 --> 00:27:07,320 vi får alle disse metoder for gratis, så for eksempel, 476 00:27:07,320 --> 00:27:09,200 vi får denne nye funktion kaldet "find all" 477 00:27:09,200 --> 00:27:12,160 der automatisk tilbage hver eneste indlæg i databasen, 478 00:27:12,160 --> 00:27:14,850 der er temmelig praktisk. 479 00:27:14,850 --> 00:27:17,480 >> Og nu i kroppen, jeg har tænkt mig at vende tilbage 480 00:27:17,480 --> 00:27:24,860 det første indlæg og returnere sin krop. 481 00:27:24,860 --> 00:27:27,930 Og selvfølgelig, jeg har brug for at oprette et indlæg, 482 00:27:27,930 --> 00:27:31,880 så lad os indsætte et nyt indlæg. 483 00:27:31,880 --> 00:27:37,870 Jeg vil sige, "Brandon, min allerførste indlæg." 484 00:27:37,870 --> 00:27:40,010 Awesome. 485 00:27:40,010 --> 00:27:45,910 Og nu vil vi gå til blogs 486 00:27:45,910 --> 00:27:50,960 og hvis alt fungerer godt - Åh, det er nogle andre dumme fil tilladelse ting igen. 487 00:27:50,960 --> 00:27:56,090 Hold på 1 sekund. Det er lidt absurd. 488 00:28:06,700 --> 00:28:08,490 Der vi går. Okay. 489 00:28:08,490 --> 00:28:10,040 Jeg fast, at tilladelse problem. 490 00:28:10,040 --> 00:28:12,040 Det forsøgte at skabe nogle filer og nogle log, 491 00:28:12,040 --> 00:28:15,400 og tilladelserne, igen, var ikke indstillet korrekt, så jeg gjorde det 492 00:28:15,400 --> 00:28:18,320 så disse filer var skrivbar og eksekverbare 493 00:28:18,320 --> 00:28:21,090 så det kunne faktisk logge på ting. 494 00:28:21,090 --> 00:28:24,220 Nu er det at give mig en anden undtagelse siger, "klasse ORM ikke fundet" 495 00:28:24,220 --> 00:28:26,960 og det er fordi jeg har glemt endnu et skridt. 496 00:28:26,960 --> 00:28:37,010 Det er for dårligt. 497 00:28:37,010 --> 00:28:40,270 I bootstrap mappe fil, der er disse moduler her, 498 00:28:40,270 --> 00:28:42,480 som du kan vælge at aktivere eller deaktivere. 499 00:28:42,480 --> 00:28:44,340 Disse er en masse forskellige funktioner, som du kan vælge at bruge 500 00:28:44,340 --> 00:28:46,180 inden Kohana, som er en slags rart. 501 00:28:46,180 --> 00:28:49,090 >> For eksempel har de en autentificeringsmodul 502 00:28:49,090 --> 00:28:51,170 som du kan bruge til at godkende brugere. 503 00:28:51,170 --> 00:28:53,390 De har en caching modulet, hvis du ønsker at gennemføre 504 00:28:53,390 --> 00:28:57,870 en slags caching tilbage ende at gøre anvendelsen arbejde hurtigere og whatnot. 505 00:28:57,870 --> 00:29:02,140 Vi er nødt til at aktivere databasen og ORM-modulet, 506 00:29:02,140 --> 00:29:04,280 fordi som jeg sagde, bruger vi databasen, naturligvis, 507 00:29:04,280 --> 00:29:08,200 og vi er også nødt til at aktivere ORM-modul, 508 00:29:08,200 --> 00:29:12,220 fordi vi gerne vil have den ekstra funktionalitet, som er rart at have. 509 00:29:12,220 --> 00:29:14,240 Alt, hvad jeg skal gøre er at udkommentere disse 2 linjer 510 00:29:14,240 --> 00:29:18,760 og nu, hvis jeg opdaterer, det gav mig en anden fejl. 511 00:29:18,760 --> 00:29:22,100 Den siger, "Class Model_Post ikke fundet." 512 00:29:22,100 --> 00:29:30,210 Nu er det en god problem at have. 513 00:29:30,210 --> 00:29:37,660 Lad os se. 514 00:29:37,660 --> 00:29:42,200 Gør det offentlige. 515 00:29:42,200 --> 00:29:46,450 Nej Hold ud. 516 00:30:11,610 --> 00:30:13,160 Åh, kære. 517 00:30:13,160 --> 00:30:18,590 Jeg ved ikke, hvorfor det ikke er i stand til at finde det. 518 00:30:18,590 --> 00:30:21,030 Det er virkelig mærkeligt. 519 00:30:21,030 --> 00:30:23,820 Jeg har denne klasse lige her. 520 00:30:23,820 --> 00:30:28,650 Jeg tror, ​​jeg måske nødt til - oh. 521 00:30:28,650 --> 00:30:32,010 Jeg er så dum. Jeg glemte at tilføje en PHP tag. 522 00:30:32,010 --> 00:30:34,670 Det er derfor. 523 00:30:34,670 --> 00:30:41,260 Nu er jeg nødt til at fortryde, at 1 ændring, jeg lige gjorde. 524 00:30:41,260 --> 00:30:44,270 >> Okay. Der vi går. 525 00:30:44,270 --> 00:30:47,500 Det var virkelig dumt. Jeg havde ikke en åbning PHP tag. 526 00:30:47,500 --> 00:30:49,900 Men som du kan se, nu er det fungerer korrekt, ikke? 527 00:30:49,900 --> 00:30:51,240 Vi har 1 indlæg. 528 00:30:51,240 --> 00:30:54,730 Vi greb det første indlæg, og nu har vi udskrives sin krop. 529 00:30:54,730 --> 00:30:58,010 Store. Fantastic. 530 00:30:58,010 --> 00:31:01,470 Eventuelle spørgsmål, så vidt? 531 00:31:01,470 --> 00:31:04,100 Nope? Eventuelle spørgsmål? 532 00:31:04,100 --> 00:31:08,340 Okay, så vi lige har oprettet stillingen model, meget grundlæggende, 533 00:31:08,340 --> 00:31:10,930 og vi kommer til at tilføje nogle funktioner senere. 534 00:31:10,930 --> 00:31:13,600 Vi kan tilføje valideringer og filtrering. 535 00:31:13,600 --> 00:31:15,650 Valideringer er en af ​​de ting, 536 00:31:15,650 --> 00:31:18,150 at rammer løse for dig virkelig, virkelig godt, 537 00:31:18,150 --> 00:31:21,310 og jeg tror ikke, du fyre havde at gøre dette til din CS50 PSET, 538 00:31:21,310 --> 00:31:24,000 men hvis du gør webudvikling for dit afgangsprojekt, 539 00:31:24,000 --> 00:31:26,280 du sandsynligvis vil ønsker at gøre en form for validering, 540 00:31:26,280 --> 00:31:28,290 som ikke at have tomme brugernavne, 541 00:31:28,290 --> 00:31:31,950 måske have en adgangskode med mindst nogle længde, ting som. 542 00:31:31,950 --> 00:31:34,750 Og det er virkelig besværligt at gennemføre disse ting ved os selv, 543 00:31:34,750 --> 00:31:37,390 og stort set hver eneste web-rammer gør det for dig 544 00:31:37,390 --> 00:31:41,140 og tillader dig at gøre det i en meget ren måde. 545 00:31:41,140 --> 00:31:44,340 Og modellen er, hvor du generelt udtrykke disse valideringsregler, 546 00:31:44,340 --> 00:31:48,790 fordi det er validering, hvorvidt en model er gyldig eller ej. 547 00:31:48,790 --> 00:31:51,350 >> Men for nu, vi kommer til at sætte det til senere, 548 00:31:51,350 --> 00:31:53,520 og for nu vil vi til at arbejde på en anden del, 549 00:31:53,520 --> 00:31:55,400 og vi vil forsøge at gøre et nyt syn 550 00:31:55,400 --> 00:31:59,580 der viser alle de stillinger. 551 00:31:59,580 --> 00:32:02,490 De involverede i at gøre en ny indsats for en liste over alle de stillinger trin 552 00:32:02,490 --> 00:32:04,810 er at få fat i en liste over alle de stillinger 553 00:32:04,810 --> 00:32:11,990 og derefter gøre liste over alle de stillinger gennem en visning. 554 00:32:11,990 --> 00:32:16,420 Lige her, heldigvis nok, vi allerede grebet alle de stillinger, 555 00:32:16,420 --> 00:32:20,310 ved brug af denne linje, finde alle funktion, 556 00:32:20,310 --> 00:32:22,520 og nu, hvad vi vil gøre, er så langt 557 00:32:22,520 --> 00:32:25,350 Jeg har været direkte indstille kroppen af ​​svar 558 00:32:25,350 --> 00:32:29,090 ved at føre streng, men nu vil jeg bruge en visning, 559 00:32:29,090 --> 00:32:31,870 og forskellen mellem en visning og bare gør det 560 00:32:31,870 --> 00:32:35,330 er med henblik på, jeg kan få en dejlig, stor HTML skabelon 561 00:32:35,330 --> 00:32:37,710 og hvad jeg kan gøre, er at give det bestemte variabler 562 00:32:37,710 --> 00:32:42,200 og så har det synspunkt automatisk udfylde sin skabelon 563 00:32:42,200 --> 00:32:44,690 bruge disse variabler. 564 00:32:44,690 --> 00:32:50,780 Hvad jeg vil gøre, er at jeg vil oprette en ny visning, 565 00:32:50,780 --> 00:32:55,940 og jeg vil nævne visningen noget lignende "blog / index" 566 00:32:55,940 --> 00:33:08,480 og jeg har tænkt mig at stort set binde det - åh, hvad jeg skriver? 567 00:33:08,480 --> 00:33:12,910 Min hjerne er et andet sted. 568 00:33:12,910 --> 00:33:16,600 Jeg har tænkt mig at binde de stillinger variabel til visning, 569 00:33:16,600 --> 00:33:19,950 så på den måde visningen har adgang til dette indlæg variabel. 570 00:33:19,950 --> 00:33:26,140 >> Og så nu har jeg brug for at skabe denne opfattelse, 571 00:33:26,140 --> 00:33:28,500 så her har vi denne mappe kaldet "synspunkter", 572 00:33:28,500 --> 00:33:32,150 og først, jeg har tænkt mig at oprette en ny mappe under det såkaldte "blog". 573 00:33:32,150 --> 00:33:35,810 Det er rart. På den måde kan vi få en dejlig hierarki for vores synspunkter. 574 00:33:35,810 --> 00:33:43,910 Og så har jeg tænkt mig at oprette en anden fil i der hedder "index.php". 575 00:33:43,910 --> 00:33:45,780 Awesome. 576 00:33:45,780 --> 00:33:52,930 Faktisk, lad os få dem begge her. 577 00:33:52,930 --> 00:33:56,760 Realiseringen af ​​et view fil er formentlig den enkleste del af alt dette, 578 00:33:56,760 --> 00:33:59,090 og disse er sikkert ting, du allerede er bekendt med. 579 00:33:59,090 --> 00:34:01,240 Vi kommer til at gøre noget virkelig simpelt, 580 00:34:01,240 --> 00:34:05,360 begynde at sige, "Min liste over blogindlæg." 581 00:34:05,360 --> 00:34:14,860 Så kan vi gå igennem, 582 00:34:14,860 --> 00:34:17,920 og vi kan gentage gennem indlæg array, 583 00:34:17,920 --> 00:34:21,760 Grib hver enkelt post og sige noget lignende - 584 00:34:21,760 --> 00:34:25,290 måske tilføje en linje 585 00:34:25,290 --> 00:34:42,460 og derefter udskrive forfatteren og kroppen. 586 00:34:42,460 --> 00:34:44,480 Det giver mening hidtil? 587 00:34:44,480 --> 00:34:50,870 Og lad os se om det virker. 588 00:34:50,870 --> 00:34:53,489 Intet skete. 589 00:34:53,489 --> 00:34:55,090 Jeg spekulerer på, hvorfor. 590 00:34:55,090 --> 00:34:58,760 Åh, jeg savnede 1 trin. Meget dumt af mig. 591 00:34:58,760 --> 00:35:01,640 Jeg har oprettet en visning, men jeg havde ikke indstille visningen som svar, 592 00:35:01,640 --> 00:35:03,190 så du er nødt til at gøre 1 ting mere. 593 00:35:03,190 --> 00:35:12,610 Du er nødt til at gøre "dette svar krop" og sæt den til at være visningen. 594 00:35:12,610 --> 00:35:14,760 Der vi går. 595 00:35:14,760 --> 00:35:17,200 Vi har vores overskrift, og så har vi en stilling, 596 00:35:17,200 --> 00:35:20,500 og bare for sjov, lad os indsætte en anden stilling 597 00:35:20,500 --> 00:35:23,390 så vi kan se en liste. 598 00:35:31,800 --> 00:35:36,650 Og indsætte disse 2 stillinger, 599 00:35:36,650 --> 00:35:39,500 og nu, hvis jeg opdatere siden, 600 00:35:39,500 --> 00:35:42,060 vi se alle disse indlæg her. 601 00:35:42,060 --> 00:35:44,250 >> Betyder det mening hidtil? 602 00:35:44,250 --> 00:35:46,400 Ja, et spørgsmål? Åh, okay. 603 00:35:46,400 --> 00:35:51,440 Som du kan se, har vi været i stand til at adskille alle disse koder ud 604 00:35:51,440 --> 00:35:53,920 i forskellige sektioner, og derefter kan du se, det er mest tydeligt med visningen kode. 605 00:35:53,920 --> 00:35:57,810 Denne fil her, der repræsenterer den opfattelse, 606 00:35:57,810 --> 00:36:01,220 det kun bekymrer sig om repræsentere data, visning af data. 607 00:36:01,220 --> 00:36:04,310 Det bliver bestået en form for data, og alt det gør, er bare vise det til dig. 608 00:36:04,310 --> 00:36:07,660 I alle andre dele af din kode, vil du ikke behøver at bekymre sig om noget af det, 609 00:36:07,660 --> 00:36:10,480 og på samme måde, din mening koden ikke behøver at bekymre dig noget om 610 00:36:10,480 --> 00:36:13,390 hvordan du får adgang til databasen og så videre og så videre, 611 00:36:13,390 --> 00:36:19,950 som er virkelig god og gør din kode meget mere vedligeholdelsesvenlig. 612 00:36:19,950 --> 00:36:23,390 Som jeg sagde, synspunkter, de er dynamisk i, at 613 00:36:23,390 --> 00:36:27,080 det er 1 fil, men det ville generere forskellige synspunkter 614 00:36:27,080 --> 00:36:29,940 baseret på de variabler, du faktisk passere i, 615 00:36:29,940 --> 00:36:32,370 og desuden er der en masse forskellige hjælpefunktioner 616 00:36:32,370 --> 00:36:34,230 som du kan bruge til at hjælpe dig med at skrive din kode hurtigere, 617 00:36:34,230 --> 00:36:36,320 som jeg vil vise dig på bare et sekund. 618 00:36:36,320 --> 00:36:38,050 Ja. 619 00:36:38,050 --> 00:36:42,490 >> [Studerende] Så $ 0 er en controller, right? 620 00:36:42,490 --> 00:36:44,000 Denne anden ting. 621 00:36:44,000 --> 00:36:46,090 Spørgsmålet er er $ 0 a controller? 622 00:36:46,090 --> 00:36:48,610 0 $ er en variabel jeg oprettet lige her. 623 00:36:48,610 --> 00:36:51,320 Jeg har oprettet en visning først. Jeg er tildelt det til nogle variabel. 624 00:36:51,320 --> 00:36:54,960 Så jeg gik den ind i denne funktion, skal du indstille den som selve svaret. 625 00:36:54,960 --> 00:36:57,260 Giver det mening? 626 00:36:57,260 --> 00:37:02,200 [Studerende] Så er udsigt :: fabrik, er visning som en klasse 627 00:37:02,200 --> 00:37:06,610 eller et bibliotek [uhørligt] fabrikken funktion? 628 00:37:06,610 --> 00:37:10,640 Spørgsmålet er, om visningen :: fabrik funktion, 629 00:37:10,640 --> 00:37:14,020 og dybest set er det nogle mere objektorienteret programmering væsentlige. 630 00:37:14,020 --> 00:37:18,000 View er udsigten klasse, og det har en metode kaldet "Factory" 631 00:37:18,000 --> 00:37:24,170 og det er en måde at få fat i det objekt, der er navnet "blog / index". 632 00:37:24,170 --> 00:37:27,140 Og det er noget mere objektorienteret programmering stuff 633 00:37:27,140 --> 00:37:33,010 at jeg ikke har tænkt mig at gå ind i her for meget. 634 00:37:33,010 --> 00:37:36,400 Nu selvfølgelig ønsker vi at skabe nye stillinger 635 00:37:36,400 --> 00:37:38,790 men vi ønsker ikke at have at gøre det via en database, 636 00:37:38,790 --> 00:37:41,280 så vi kommer til at oprette en ny handling for at skabe et nyt indlæg, 637 00:37:41,280 --> 00:37:43,050 og der er en masse ting, vi er nødt til at gøre. 638 00:37:43,050 --> 00:37:45,910 >> Den første ting, vi vil gøre - så lad os tackle disse ting én efter én. 639 00:37:45,910 --> 00:37:48,320 Det første, vi vil gøre, er vi nødt til at oprette en formular 640 00:37:48,320 --> 00:37:54,460 til at indsætte et nyt indlæg, 641 00:37:54,460 --> 00:37:57,360 men jeg vil også tilføje en ny aktion først, 642 00:37:57,360 --> 00:38:01,050 så tilføje en ny handling er lige så let som 643 00:38:01,050 --> 00:38:03,490 tilføje en ny funktion med din controller, 644 00:38:03,490 --> 00:38:13,710 og nu vil jeg til at gøre noget meget grundlæggende, 645 00:38:13,710 --> 00:38:20,850 bare snuppe denne opfattelse, og sende det, bare vise det for dig. 646 00:38:20,850 --> 00:38:26,220 Og så nu jeg har tænkt mig at oprette en ny visning fil, 647 00:38:26,220 --> 00:38:33,690 og jeg har tænkt mig at begynde at skrive nogle ting. 648 00:38:33,690 --> 00:38:36,540 Hvad er rart om Kohana er, at de giver en masse forskellige hjælpefunktioner 649 00:38:36,540 --> 00:38:38,790 for dig at skrive view kode lettere 650 00:38:38,790 --> 00:38:41,970 og 1 af disse hjælpefunktioner eller hjælperceller moduler 651 00:38:41,970 --> 00:38:45,860 er omkring at skrive formularer. 652 00:38:45,860 --> 00:38:49,460 For at skrive formularer, jeg ikke virkelig nødt til direkte at skrive noget HTML selv. 653 00:38:49,460 --> 00:38:51,100 I gutter har skrevet HTML-formularer. 654 00:38:51,100 --> 00:38:54,850 Du ved, hvordan det kan være virkelig, virkelig smertefuldt og besværligt at skrive formularer. 655 00:38:54,850 --> 00:38:59,970 Det er ikke sjovt, så heldigvis 656 00:38:59,970 --> 00:39:04,860 Vi kan stort set skrive en formular ved hjælp Kohana s 657 00:39:04,860 --> 00:39:11,190 danne hjælperfunktioner at gøre det for os. 658 00:39:11,190 --> 00:39:17,340 Vi kommer til at dybest set har felter for hver enkelt ting, vi har, 659 00:39:17,340 --> 00:39:23,160 så man for forfattere og én for de organer. 660 00:39:23,160 --> 00:39:27,090 Vi kommer til at have en etiket, og vi kommer til at have en indgang. 661 00:39:37,450 --> 00:39:41,360 >> Og så endelig, vi kommer til at have et manuskript. 662 00:39:49,350 --> 00:39:52,230 Og som du kan se, det er meget renere at skrive 663 00:39:52,230 --> 00:39:58,150 end alt det rodet HTML, som er form for nice. 664 00:39:58,150 --> 00:40:00,930 Givet, er der andre web-rammer, der har det endnu renere end det, 665 00:40:00,930 --> 00:40:04,440 men i det mindste er det bedre end at skrive HTML selv. 666 00:40:09,400 --> 00:40:11,130 Awesome, så dette er hvad du ser. 667 00:40:11,130 --> 00:40:13,530 Det er lidt rodet, 668 00:40:13,530 --> 00:40:19,720 så jeg har tænkt mig at tilføje et linjeskift der 669 00:40:19,720 --> 00:40:21,180 for at gøre det ser lidt pænere. 670 00:40:21,180 --> 00:40:23,330 Nå, selvfølgelig, det stadig ser virkelig, virkelig dårlig, men vi kun fokuseret 671 00:40:23,330 --> 00:40:26,050 på funktionaliteten for nu og ikke på æstetik. 672 00:40:26,050 --> 00:40:28,010 Ingen tid til at gøre alt. 673 00:40:28,010 --> 00:40:30,600 Og som du kan se, nu har vi en super grundform, 674 00:40:30,600 --> 00:40:32,080 som er form for nice. 675 00:40:32,080 --> 00:40:36,730 Denne kode vil jeg sige er renere end at forsøge at skrive en HTML-formular selv, 676 00:40:36,730 --> 00:40:40,290 så det er rart. 677 00:40:40,290 --> 00:40:42,030 Hvad er det næste? 678 00:40:42,030 --> 00:40:49,260 Nu er vi nødt til at gøre ting med handlingen. 679 00:40:49,260 --> 00:40:51,240 Normalt når du skriver HTML-formularer, 680 00:40:51,240 --> 00:40:54,070 du nødt til at fortælle det, når det kommer til at sende formularen til. 681 00:40:54,070 --> 00:40:56,050 Som standard i de fleste web rammer, 682 00:40:56,050 --> 00:40:58,200 den forelægger nøjagtig samme webadresse, så de ting er, 683 00:40:58,200 --> 00:41:01,310 hvis du sender en get anmodning til / blog / nyt, 684 00:41:01,310 --> 00:41:03,240 det skal vise dig den form 685 00:41:03,240 --> 00:41:06,810 men hvis du sender et indlæg anmodning til / blog / nyt med data, 686 00:41:06,810 --> 00:41:10,000 Det burde faktisk prøve at redde denne post 687 00:41:10,000 --> 00:41:13,300 og gøre noget med det. 688 00:41:20,630 --> 00:41:22,180 >> Hvad vi skal gøre, er 689 00:41:22,180 --> 00:41:25,320 dybest set alt, hvad vi skal gøre for at kontrollere, om det er en post anmodning eller en get anmodning 690 00:41:25,320 --> 00:41:29,350 er at kontrollere, hvad der er de indlæg variabler, du kan indstille. 691 00:41:29,350 --> 00:41:34,560 Og hvis stillingen variabel er sat, så vi kommer til at forsøge at skabe et nyt indlæg. 692 00:41:34,560 --> 00:41:38,440 Igen, vi bare gør det, 693 00:41:38,440 --> 00:41:41,090 og det skaber et nyt indlæg, og vi bogstaveligt kommer til at 694 00:41:41,090 --> 00:41:51,150 fastsætte sine områder som dette, 695 00:41:51,150 --> 00:41:55,640 og så vi kommer til at gemme det. 696 00:41:55,640 --> 00:41:59,200 Og så har jeg tænkt mig at omdirigere 697 00:41:59,200 --> 00:42:07,660 til indeks side, så de kan se vores liste over stillinger igen. 698 00:42:07,660 --> 00:42:09,620 Lad os prøve det. 699 00:42:09,620 --> 00:42:15,160 Jeg vil sige, "Brandon" 700 00:42:15,160 --> 00:42:18,140 og derefter sende post, og hvis alt går godt, 701 00:42:18,140 --> 00:42:21,390 som du kan se, er det omdirigeret mig til indekset siden, 702 00:42:21,390 --> 00:42:24,140 og hvis jeg rulle til bunden, har vi en nyindsatte indlæg. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Ja, spørgsmål. 705 00:42:28,430 --> 00:42:31,760 >> [Studerende] Hvad hvis du havde indtastet præcis det samme 706 00:42:31,760 --> 00:42:33,380 du indtastede før? 707 00:42:33,380 --> 00:42:36,950 Er det tjek for at sikre, at du ikke har kopieret 708 00:42:36,950 --> 00:42:38,810 samme indsendelse? 709 00:42:38,810 --> 00:42:41,660 Være standard, nej, fordi som standard - 710 00:42:41,660 --> 00:42:46,470 undskyld, er spørgsmålet, hvis du indtaster i nøjagtig samme data i form 711 00:42:46,470 --> 00:42:50,180 og indsende det, vil det give dig mulighed for at indsætte en kopi objekt, 712 00:42:50,180 --> 00:42:52,550 en kopi af posten væsentlige? 713 00:42:52,550 --> 00:42:54,070 Lige nu, ja, det vil tillade dig at gøre det, 714 00:42:54,070 --> 00:42:58,860 fordi i databaser, det er helt i orden at have helt dublerede rækker, 715 00:42:58,860 --> 00:43:02,260 men hvis det er en bekymring, så kan du tilføje valideringer, for eksempel, 716 00:43:02,260 --> 00:43:06,430 at sørge for, at hvis det er præcis det samme som noget, der allerede eksisterer, 717 00:43:06,430 --> 00:43:08,720 så sige, at det er et ugyldigt objekt, 718 00:43:08,720 --> 00:43:11,200 og så kan du endda angive din fejlmeddelelse 719 00:43:11,200 --> 00:43:14,390 og sige, "Ugyldig fordi det eksisterer allerede" eller noget lignende. 720 00:43:14,390 --> 00:43:22,420 Men i dette tilfælde kunne jeg bare skabe noget eksemplarer. 721 00:43:22,420 --> 00:43:26,010 Lad os nu prøve at tilføje nogle valideringer. 722 00:43:26,010 --> 00:43:30,400 Problemet med dette lige nu, er, at 723 00:43:30,400 --> 00:43:34,220 Jeg kunne bogstaveligt indsende en helt blank indlæg. 724 00:43:34,220 --> 00:43:37,500 Jeg kan klikke på denne knap lige nu, og der går vi. 725 00:43:37,500 --> 00:43:40,290 Du kan ikke rigtig se det, men denne ekstra linje her 726 00:43:40,290 --> 00:43:43,830 angiver, at jeg bogstaveligt talt har et nyt indlæg. 727 00:43:43,830 --> 00:43:46,050 Det bare har en tom forfatter og en blank krop, 728 00:43:46,050 --> 00:43:48,630 og vi ønsker ikke at tillade folk at gøre det. 729 00:43:48,630 --> 00:43:52,550 Det er her, validering kommer ind 730 00:43:52,550 --> 00:43:57,540 >> Jeg kan gå til min model objekt, 731 00:43:57,540 --> 00:43:59,530 og nu kan jeg tilføje en ny funktion, der angiver 732 00:43:59,530 --> 00:44:02,000 hvad validering regler jeg bør tilføje til denne model 733 00:44:02,000 --> 00:44:06,840 at sørge for at det er gyldigt, eller at specificere, hvad betyder det at være en gyldig indlæg? 734 00:44:06,840 --> 00:44:10,210 Og jeg vil gerne sige, det er kun et gyldigt indlæg, hvis både forfatteren og krop 735 00:44:10,210 --> 00:44:15,150 ikke er tom, og det er hvordan du gør det i Kohana. 736 00:44:15,150 --> 00:44:18,750 Du opretter en ny funktion kaldet "Regler", 737 00:44:18,750 --> 00:44:20,210 og så du dybest set returnere et associativt array 738 00:44:20,210 --> 00:44:24,230 der definerer valideringsregler for dette objekt. 739 00:44:24,230 --> 00:44:27,530 Vi kommer til at returnere array, og så hvad vi vil gøre, er 740 00:44:27,530 --> 00:44:32,820 sige "forfatter", det går til et array, 741 00:44:32,820 --> 00:44:37,720 der går til andet array kaldet "ikke tom". 742 00:44:37,720 --> 00:44:41,480 Og så har jeg tænkt mig at sige "krop". 743 00:44:50,980 --> 00:44:54,120 Okay, og syntaksen for dette og struktur for denne 744 00:44:54,120 --> 00:44:56,530 ser lidt tung og lidt kompliceret. 745 00:44:56,530 --> 00:44:59,330 Hvis du læser dokumentationen, er det temmelig ligetil at finde ud af, 746 00:44:59,330 --> 00:45:02,500 Men det væsentlige er, hvad du skal gøre for at specificere 747 00:45:02,500 --> 00:45:04,130 nogle valideringsregler, og der er en masse forskellige regler 748 00:45:04,130 --> 00:45:06,810 at Kohana vil give dig gratis, ligesom du kan føje regler til at sige 749 00:45:06,810 --> 00:45:08,410 Det skal være mindst denne længde. 750 00:45:08,410 --> 00:45:11,800 Måske det skal være numerisk. Måske det skal være alfanumerisk. 751 00:45:11,800 --> 00:45:14,410 Måske har det at være på de fleste denne længde, så videre og så videre. 752 00:45:14,410 --> 00:45:17,730 Der er en masse forskellige regler, Kohana giver dig, 753 00:45:17,730 --> 00:45:19,610 og du kan gå på deres hjemmeside, se på dokumentation, 754 00:45:19,610 --> 00:45:23,150 og du kan se alle de forskellige ting, du kan gøre. 755 00:45:23,150 --> 00:45:25,650 >> Men det er alt jeg har at gøre, 756 00:45:25,650 --> 00:45:30,490 og lad os nu se hvad der sker 757 00:45:30,490 --> 00:45:34,060 hvis jeg indsende et tomt indlæg. 758 00:45:34,060 --> 00:45:36,960 Hvad kommer til at ske? Åh, nej, jeg får en fejl. 759 00:45:36,960 --> 00:45:39,440 Jeg får en validering undtagelse. 760 00:45:39,440 --> 00:45:41,070 Tja, det er godt. 761 00:45:41,070 --> 00:45:43,200 Det fortalte mig, at min model er ugyldig, 762 00:45:43,200 --> 00:45:45,780 men jeg ønsker ikke at vise en undtagelse 763 00:45:45,780 --> 00:45:48,720 til mine brugere, når de forsøger at indsende noget ugyldig, right? 764 00:45:48,720 --> 00:45:51,560 Jeg ønsker at give dem en form for venligere fejlmeddelelse 765 00:45:51,560 --> 00:45:53,610 når noget går galt. 766 00:45:53,610 --> 00:46:01,830 Hvad vi vil gøre, er at vi kommer til at 767 00:46:01,830 --> 00:46:04,490 wrap alt i en try catch løkke. 768 00:46:04,490 --> 00:46:06,750 Faktisk, jeg tror, ​​det er også noget, du ikke har lært endnu 769 00:46:06,750 --> 00:46:10,820 i CS50, fordi C programmeringssproget C, 770 00:46:10,820 --> 00:46:14,000 ikke har undtagelser, men næsten hver eneste andet sprog 771 00:46:14,000 --> 00:46:16,700 har undtagelser, så virkelig, virkelig kortvarigt, 772 00:46:16,700 --> 00:46:19,430 en undtagelse er noget, som et stykke kode kan 773 00:46:19,430 --> 00:46:21,430 smide en undtagelse, når noget går galt, 774 00:46:21,430 --> 00:46:23,410 men så måske nogle andre stykke kode højere op 775 00:46:23,410 --> 00:46:25,810 kan fange denne undtagelse og gøre noget med det. 776 00:46:25,810 --> 00:46:27,710 >> For eksempel, i dette tilfælde, 777 00:46:27,710 --> 00:46:29,940 det stykke kode, der forsøger at gemme en model, 778 00:46:29,940 --> 00:46:33,170 det validerer modellen, og hvis den siger, "Okay, denne model er ugyldig," 779 00:46:33,170 --> 00:46:36,150 det kommer til at smide en undtagelse, og det er lidt svarende til 780 00:46:36,150 --> 00:46:39,870 i C kan du returnere en -1 eller noget lignende. 781 00:46:39,870 --> 00:46:42,320 Og så for mig, denne funktion, min kode 782 00:46:42,320 --> 00:46:46,310 på et højere niveau, kan jeg forsøge at fange denne undtagelse 783 00:46:46,310 --> 00:46:49,330 og dybest set siger, "Okay, hvis jeg fange undtagelsen, hvad skal jeg gøre?" 784 00:46:49,330 --> 00:46:51,570 Eller jeg kunne vælge ikke at fange denne undtagelse og lade en højere op 785 00:46:51,570 --> 00:46:54,400 fange undtagelsen, eller hvis ingen fanger den, 786 00:46:54,400 --> 00:46:56,820 så hele programmet går ned og siger, 787 00:46:56,820 --> 00:46:59,170 "Noget gik galt, og jeg kunne ikke klare det." 788 00:46:59,170 --> 00:47:04,490 >> Men hvad vi gør, er du sætte et stykke kode i en try-blok, 789 00:47:04,490 --> 00:47:09,030 og så skal du også tilføje noget, der hedder en catch-blok, 790 00:47:09,030 --> 00:47:17,300 der er den slags kode, der vil forsøge at fange undtagelser, der kan opstå. 791 00:47:17,300 --> 00:47:20,430 Og så hvis jeg fange denne særlige undtagelse 792 00:47:20,430 --> 00:47:23,110 eller ugyldiggørelse undtagelse, så hvad jeg har tænkt mig at gøre, er 793 00:47:23,110 --> 00:47:31,210 Jeg har tænkt mig at sætte de fejl - jeg tror, ​​det er hvordan jeg gør det - 794 00:47:31,210 --> 00:47:35,370 og jeg har tænkt mig at sætte de fejl til nogle objekt. 795 00:47:35,370 --> 00:47:40,920 Og hvad så jeg har tænkt mig at gøre, er, hvis den rammer denne undtagelse, 796 00:47:40,920 --> 00:47:43,090 det kommer ikke til at omdirigere, og hvis det ikke omdirigere 797 00:47:43,090 --> 00:47:46,160 det kommer til at komme ud af, hvis blog 798 00:47:46,160 --> 00:47:49,920 og ramte denne blog / nyt, hvilket vil have jeg ønsker at gøre. 799 00:47:49,920 --> 00:47:53,190 Hvis der er en fejl, så jeg ønsker at gå tilbage til formularen 800 00:47:53,190 --> 00:47:55,100 og vise disse fejl. 801 00:47:55,100 --> 00:48:00,780 Nu, hvad jeg ønsker at gøre, er at jeg ønsker at passere i disse fejl 802 00:48:00,780 --> 00:48:07,010 til visningen. 803 00:48:07,010 --> 00:48:10,360 Okay, jeg tror jeg har den opfattelse lige her, 804 00:48:10,360 --> 00:48:14,660 og dybest set vil jeg vise disse fejl, hvis de findes. 805 00:48:14,660 --> 00:48:19,740 Før jeg skriver HTML for det, vil jeg virkelig hurtigt 806 00:48:19,740 --> 00:48:21,720 vise dig, hvad strukturen af ​​denne fejl variable ser ud, 807 00:48:21,720 --> 00:48:23,080 og det er en god praksis i almindelighed. 808 00:48:23,080 --> 00:48:25,070 En masse gange, du får noget tilbage fra nogle metode, 809 00:48:25,070 --> 00:48:27,250 en funktion i web rammer 810 00:48:27,250 --> 00:48:29,410 og du ved ikke, hvad den variable ser ud, 811 00:48:29,410 --> 00:48:31,210 så du ikke ved, hvordan man arbejder med det. 812 00:48:31,210 --> 00:48:37,790 Jeg har tænkt mig at bruge en print r metode til stort set printe det ud. 813 00:48:37,790 --> 00:48:41,100 >> Og som du kan se, det fortæller mig, at det er et associeret array, 814 00:48:41,100 --> 00:48:44,880 og du har en nøgle, forfatter point til denne streng, 815 00:48:44,880 --> 00:48:47,050 Forfatteren må ikke være tomme, og en anden nøgle, krop, 816 00:48:47,050 --> 00:48:49,680 peger på en anden streng, krop må ikke være tomme. 817 00:48:49,680 --> 00:48:52,130 Jeg er ligesom, okay, cool. 818 00:48:52,130 --> 00:48:56,230 Så kan jeg gentage gennem array og udskrive hver enkelt besked. 819 00:48:56,230 --> 00:49:02,150 Det er dybest set som et associativt array med en masse beskeder. 820 00:49:02,150 --> 00:49:13,500 Hvad jeg har tænkt mig at gøre, er at "hvis fejl" 821 00:49:13,500 --> 00:49:17,140 og jeg har tænkt mig at oprette en uordnet liste, 822 00:49:17,140 --> 00:49:20,860 og jeg har tænkt mig at gentage gennem alle de fejl. 823 00:49:33,730 --> 00:49:38,710 Og dette, og nu er jeg har tænkt mig at forsøge at sende det igen, 824 00:49:38,710 --> 00:49:41,200 og lad os se, hvad vi får. 825 00:49:41,200 --> 00:49:45,370 Nu får vi denne nice liste af fejl, 826 00:49:45,370 --> 00:49:48,630 og det er stadig temmelig grim, men det kan naturligvis være formateret til at se pæn, 827 00:49:48,630 --> 00:49:51,620 men den grundlæggende idé er bare i et par linjer kode, 828 00:49:51,620 --> 00:49:53,720 vi var i stand til at validere vores model, 829 00:49:53,720 --> 00:49:56,510 sørg for, at visse områder ikke var tomme 830 00:49:56,510 --> 00:49:59,740 og hvis noget gik galt, og derefter returnere en slags fejlmeddelelse 831 00:49:59,740 --> 00:50:01,760 Jeg kunne så præsentere tilbage til brugeren. 832 00:50:01,760 --> 00:50:03,910 Du kan også tilpasse din validering 833 00:50:03,910 --> 00:50:07,590 så du rent faktisk kan få en fejlmeddelelse 834 00:50:07,590 --> 00:50:09,620 der er mere specifik for dit program eller noget lignende. 835 00:50:09,620 --> 00:50:14,600 Alt, hvad der er generelt tilpasses. 836 00:50:14,600 --> 00:50:17,150 >> Desværre, vi løber tør for tid, 837 00:50:17,150 --> 00:50:20,040 så jeg har tænkt mig at skulle afskære live kodning session her. 838 00:50:20,040 --> 00:50:22,980 Der er en masse andre funktioner, som jeg ønsker at demonstrere for dig 839 00:50:22,980 --> 00:50:25,650 i dette eksempel. 840 00:50:25,650 --> 00:50:27,620 For eksempel kan du tilføje skabeloner til dit websted, 841 00:50:27,620 --> 00:50:31,110 så måske er der en vis form for HTML-kode, som du ønsker at anvende 842 00:50:31,110 --> 00:50:35,190 til hver enkelt side på dit websted, og i stedet for at indsætte som 843 00:50:35,190 --> 00:50:40,630 i hver enkelt visning fil, du har, hvilket naturligvis ville være en dårlig praksis, 844 00:50:40,630 --> 00:50:43,020 du kan stort set definere disse skabeloner, 845 00:50:43,020 --> 00:50:46,660 og derefter i din controller sige, "Okay, jeg bruger denne skabelon." 846 00:50:46,660 --> 00:50:50,130 "Er alle mine synspunkter bruge denne skabelon." 847 00:50:50,130 --> 00:50:52,470 Og en sidste ting, jeg vil gerne vise dig så godt 848 00:50:52,470 --> 00:50:57,800 at vi ikke har tid til er cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 og dybest set tror jeg jer har sikkert set i CS50 - 850 00:51:01,430 --> 00:51:03,770 Jeg tror, ​​David Malan formentlig talte om, hvordan du kan som regel indsprøjte 851 00:51:03,770 --> 00:51:08,040 JavaScript-kode ind i - har du talt om det her? 852 00:51:08,040 --> 00:51:10,220 Måske? Måske ikke? 853 00:51:10,220 --> 00:51:12,670 >> Men en masse gange kan du injicere skadelig JavaScript-kode 854 00:51:12,670 --> 00:51:15,630 ind i en database, og hvis de ikke undslippe det ordentligt, 855 00:51:15,630 --> 00:51:18,280 så når de præsenterer disse data tilbage til brugeren, 856 00:51:18,280 --> 00:51:21,310 så kan det køre en slags tilfældig JavaScript-kode, du ikke ønsker skal ske, 857 00:51:21,310 --> 00:51:23,050 og jeg skulle til at demonstrere, hvordan du ville gøre det inden Kohana. 858 00:51:23,050 --> 00:51:25,380 Det er faktisk virkelig, virkelig nemt. 859 00:51:25,380 --> 00:51:31,920 Jeg kunne gøre det lige nu om 2 sekunder bogstaveligt. 860 00:51:31,920 --> 00:51:34,560 Alt du skal gøre, er dybest set wrap disse ting 861 00:51:34,560 --> 00:51:46,920 i denne ting kaldet HTML-entiteter. 862 00:51:46,920 --> 00:51:51,180 Og det vil automatisk slippe alle tegn korrekt 863 00:51:51,180 --> 00:51:54,730 og sørg for at du ikke får dette problem. 864 00:51:54,730 --> 00:51:57,220 [Studerende] Du stavet den første test forkert. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Åh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Okay, det er alt hvad jeg havde at dele med dig i dag. 867 00:52:06,420 --> 00:52:09,930 Disse slides vil blive bogført, men disse er generelt 868 00:52:09,930 --> 00:52:13,900 de eneste ressourcer, du skal virkelig brug for at komme i gang med Kohana. 869 00:52:13,900 --> 00:52:16,770 Du kan gå til hjemmesiden. De har en brugervejledning, og de har også en API Explorer. 870 00:52:16,770 --> 00:52:20,630 Vi kan udforske alle de forskellige funktioner og hjælpefunktioner de har for dig. 871 00:52:20,630 --> 00:52:22,070 De har generelt nok oplysninger på hjemmesiden 872 00:52:22,070 --> 00:52:25,310 som du kan bruge til at komme i gang og komme i gang med Kohana. 873 00:52:25,310 --> 00:52:30,840 Der er ikke så mange tutorials, tror jeg, for Kohana, uden for 874 00:52:30,840 --> 00:52:33,880 hvad de har på hjemmesiden her, så det er nok din bedste satsning. 875 00:52:33,880 --> 00:52:35,600 Men hvis du ønsker at gå med web rammer 876 00:52:35,600 --> 00:52:37,120 og du ikke ønsker at skulle hente et nyt sprog, 877 00:52:37,120 --> 00:52:39,780 og du vil have noget, der er relativt let og har en let indlæringskurve, 878 00:52:39,780 --> 00:52:41,570 Endeligt vil jeg foreslå Kohana. 879 00:52:41,570 --> 00:52:44,040 Det er nok det bedste udbud til det. 880 00:52:44,040 --> 00:52:46,830 Den sjove ting er dog, hvis vi bruger Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 vi kunne have gentaget, hvad vi lige gjorde 882 00:52:48,550 --> 00:52:51,430 og sandsynligvis mere i under 3 minutter. 883 00:52:51,430 --> 00:52:54,710 Ingen joke, men at lære Ruby on Rails tager meget længere tid 884 00:52:54,710 --> 00:52:56,780 end det ville tage at lære Kohana. 885 00:52:56,780 --> 00:52:58,840 Det er dybest set dit valg på, hvad du ønsker at vælge at lære, 886 00:52:58,840 --> 00:53:01,260 men hvis du ønsker at komme op og køre hurtigt, 887 00:53:01,260 --> 00:53:03,870 Kohana er helt sikkert et meget godt valg. 888 00:53:03,870 --> 00:53:06,730 >> Nogle sidste spørgsmål, før vi ender? Ja. 889 00:53:06,730 --> 00:53:08,020 [Studerende] Hvordan ville vi integrerer at 890 00:53:08,020 --> 00:53:13,120 i en CSS ramme som du brugte, da du blev instruere? 891 00:53:13,120 --> 00:53:16,700 Spørgsmålet er, hvordan ville vi integrerer det med en CSS ramme? 892 00:53:16,700 --> 00:53:18,740 Hvad ville vi sandsynligvis gøre, er at vi ville sandsynligvis omfatte 893 00:53:18,740 --> 00:53:21,090 en ny mappe, hvor vi ville dumpe alle vores CSS-filer, 894 00:53:21,090 --> 00:53:23,010 og så ville vi også tilføje en ny skabelon. 895 00:53:23,010 --> 00:53:26,090 I skabelonen ville vi medtage disse CSS-filer 896 00:53:26,090 --> 00:53:28,410 at sikre, at de er refereres på hver enkelt side, 897 00:53:28,410 --> 00:53:32,220 og så når du rent faktisk skriver HTML, 898 00:53:32,220 --> 00:53:34,010 du blot tilføje relevante klasser og whatnot, 899 00:53:34,010 --> 00:53:36,100 og for eksempel, når du bruger noget som formularen 900 00:53:36,100 --> 00:53:40,710 hjælpefunktion, kan du tilføje flere parametre bagefter 901 00:53:40,710 --> 00:53:42,830 at angive, hvilke klasser du ønsker at være knyttet til forskellige ting 902 00:53:42,830 --> 00:53:47,820 så de kunne style det ordentligt, og det er dybest set, hvordan du ville gå. 903 00:53:47,820 --> 00:53:50,100 >> Andre spørgsmål? 904 00:53:50,100 --> 00:53:52,090 Awesome. 905 00:53:52,090 --> 00:53:58,540 Tak for din tid, og tak fordi du kom. 906 00:53:58,540 --> 00:54:05,170 Jeg var ikke til at tilføje meget andet, 907 00:54:05,170 --> 00:54:08,560 men 1 virkelig hurtig ting er, at vi ikke har et link 908 00:54:08,560 --> 00:54:12,590 til formularen. 909 00:54:12,590 --> 00:54:14,310 Virkelig dum. 910 00:54:14,310 --> 00:54:20,110 Lad os tilføje et - faktisk i visningen, blog, indeks, 911 00:54:20,110 --> 00:54:23,890 lad os virkelig hurtigt tilføje et link, der går til den nye side, 912 00:54:23,890 --> 00:54:26,770 den side, hvor vi kan indsætte et nyt indlæg. 913 00:54:26,770 --> 00:54:29,950 Vi kommer til at gøre dette. 914 00:54:29,950 --> 00:54:34,020 Hvad er rart er at der er hele denne gruppe af HTML hjælperfunktioner 915 00:54:34,020 --> 00:54:37,090 der gør forskellige ting for dig, så du allerede har set de enheder 916 00:54:37,090 --> 00:54:41,980 fungere her, men de har også en funktion kaldet "anker" 917 00:54:41,980 --> 00:54:45,400 som du kan skrive i blog / nyt 918 00:54:45,400 --> 00:54:49,550 og sige, "Send en ny blog." 919 00:54:49,550 --> 00:54:51,850 Og det ville skabe dette link for dig, 920 00:54:51,850 --> 00:54:54,120 og dette synes virkelig trivielt at gøre, men det er rart, 921 00:54:54,120 --> 00:54:58,720 fordi antage, at du bevæger din hjemmeside fra 1. domæne til et andet. 922 00:54:58,720 --> 00:55:01,390 Og hvis du bare skrev de webadresser selv, 923 00:55:01,390 --> 00:55:04,350 så ville du nødt til at ændre alle de webadresser. 924 00:55:04,350 --> 00:55:06,850 Eller måske har du flyttet den fra 1. undermappe til en anden undermappe. 925 00:55:06,850 --> 00:55:08,790 Du ville have til at ændre alle disse webadresser selv, 926 00:55:08,790 --> 00:55:12,180 og det er ikke sjovt. 927 00:55:12,180 --> 00:55:14,510 Du kan bruge denne anker lige her, 928 00:55:14,510 --> 00:55:18,950 og du kan ændre det domæne eller den undermappe præfiks 929 00:55:18,950 --> 00:55:20,640 i konfigurationsfilen én gang, 930 00:55:20,640 --> 00:55:22,980 og så vil det gælde, at overalt, og det er, igen, 931 00:55:22,980 --> 00:55:26,930 et godt eksempel på ikke gentage dig selv, Tørring din kode ud. 932 00:55:26,930 --> 00:55:30,370 Uanset hvor du gentage dig selv, så prøv og ekstrakt i en slags konfigurationsfil 933 00:55:30,370 --> 00:55:34,160 eller til en anden funktion, og har det klare det for dig. 934 00:55:34,160 --> 00:55:42,930 >> Og den allersidste ting, som jeg ville vise dig, var 935 00:55:42,930 --> 00:55:50,250 formoder, at vi er tilbage på dette indlæg, og jeg havde komponeret nogle virkelig lang essay, 936 00:55:50,250 --> 00:55:52,670 men jeg glemte at medtage min forfatter. 937 00:55:52,670 --> 00:55:55,210 Nu når jeg klikker på "Send Post" 938 00:55:55,210 --> 00:55:57,270 Jeg har lige mistet alt. 939 00:55:57,270 --> 00:56:00,000 Nej! Virkelig trist. 940 00:56:00,000 --> 00:56:03,870 Så hvordan kan du håndtere det? 941 00:56:03,870 --> 00:56:06,070 Dette er, hvad vi gør. 942 00:56:06,070 --> 00:56:09,340 Hvad vi gør, er her for disse input og tekst områdets funktioner 943 00:56:09,340 --> 00:56:12,700 hvis vi medtager en anden parameter, så værdien af ​​denne anden parameter 944 00:56:12,700 --> 00:56:16,620 kommer til at være, hvad området vil indledningsvis befolket med. 945 00:56:16,620 --> 00:56:23,570 Hvad vi kan gøre, er i vores blog-controller, 946 00:56:23,570 --> 00:56:25,360 vi kunne binde en anden variabel. 947 00:56:25,360 --> 00:56:27,050 Kald det "værdier" måske. 948 00:56:27,050 --> 00:56:30,620 Og passere i stillingen array, bogstaveligt. 949 00:56:30,620 --> 00:56:32,620 Det betyder, at hvis valideringen mislykkedes, 950 00:56:32,620 --> 00:56:36,570 passere mig stillingen array, jeg forelagde den sidste anmodning, 951 00:56:36,570 --> 00:56:38,420 og på den måde kan jeg bruge værdierne fra min sidste fremlæggelse 952 00:56:38,420 --> 00:56:44,540 at genbefolke felterne. 953 00:56:44,540 --> 00:56:49,600 Nu kan jeg gøre noget lignende værdier forfatter 954 00:56:49,600 --> 00:56:55,180 og værdier krop, og på den måde nu, hvis jeg gør nogle tilfældige ting 955 00:56:55,180 --> 00:57:01,490 og klik på "Send indlæg", så det bliver der. 956 00:57:01,490 --> 00:57:03,830 Men vi kommer til at løbe ind i et andet problem. 957 00:57:03,830 --> 00:57:07,670 Det virker, men hvis jeg går til den side, den allerførste gang, 958 00:57:07,670 --> 00:57:09,720 det kommer til at gå ned, og det er fordi den allerførste gang 959 00:57:09,720 --> 00:57:13,730 vi gå til den side, har dette indlæg variabel ikke defineret endnu. 960 00:57:13,730 --> 00:57:18,170 Det er null. Det findes ikke. 961 00:57:18,170 --> 00:57:21,630 >> Og hvad vi ønsker at sige, er, hvis denne nøgle findes, 962 00:57:21,630 --> 00:57:27,750 derefter returnere værdien af ​​denne opstilling, 963 00:57:27,750 --> 00:57:30,450 men hvis nøglen ikke eksisterer, derefter en tom streng. 964 00:57:30,450 --> 00:57:32,150 Det er den funktionalitet, vi ønsker her. 965 00:57:32,150 --> 00:57:34,690 Vi ønsker at kontrollere, om nøgle findes, før du prøver at få adgang til array, 966 00:57:34,690 --> 00:57:36,580 og heldigvis nok, 967 00:57:36,580 --> 00:57:38,570 Kohana giver os også en hjælper funktion for det. 968 00:57:38,570 --> 00:57:41,040 De har hele denne pakke af funktioner 969 00:57:41,040 --> 00:57:43,660 under navnet ARR, kort for array, 970 00:57:43,660 --> 00:57:45,800 og de har 1 funktion kaldet "få" 971 00:57:45,800 --> 00:57:48,690 og du kan passere i array, 972 00:57:48,690 --> 00:57:50,740 og du kan passere i navnet på nøglen. 973 00:57:50,740 --> 00:57:54,330 Så dybest set, hvad det vil gøre, er at det vil forsøge at få den nøgle, 974 00:57:54,330 --> 00:57:56,470 men hvis nøglen ikke eksisterer i arrayet, 975 00:57:56,470 --> 00:58:00,900 så det vil vende tilbage blank, eller vi kan også angive en standard, tror jeg, 976 00:58:00,900 --> 00:58:03,500 hvilket er rart. 977 00:58:09,740 --> 00:58:13,150 Nu, hvis vi gør det samme igen, 978 00:58:13,150 --> 00:58:15,970 så se dig nu virker det første gang omkring, 979 00:58:15,970 --> 00:58:18,080 og igen, hvis vi skriver i nogle tilfældige ting 980 00:58:18,080 --> 00:58:23,210 og prøv og indsende, så det bliver der. 981 00:58:23,210 --> 00:58:31,640 >> Og jeg tror, ​​jeg kan også vise dig, hvordan du tilføjer en skabelon virkelig hurtigt. 982 00:58:31,640 --> 00:58:36,140 Hvad vi kan gøre første er kan vi tilføje en ny visning kaldet "template.php" 983 00:58:36,140 --> 00:58:38,890 inden for mappevisninger, 984 00:58:38,890 --> 00:58:44,730 og hvad jeg har tænkt mig at gøre, er at jeg har tænkt mig at udskrive noget, der hedder "indhold" 985 00:58:44,730 --> 00:58:49,130 der kommer til at være min hovedindhold. 986 00:58:49,130 --> 00:58:51,380 Og måske i selve bunden Jeg har tænkt mig at tilføje, siger, 987 00:58:51,380 --> 00:58:53,340 ophavsret. 988 00:58:53,340 --> 00:58:56,150 [Uhørligt student spørgsmål] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Måske er det en super grundlæggende skabelon jeg vil bruge. 990 00:58:58,050 --> 00:59:02,840 Jeg ønsker at have en mappe med min ophavsret på hver enkelt side, 991 00:59:02,840 --> 00:59:05,560 og nu, hvad jeg har tænkt mig at gøre inden min controller 992 00:59:05,560 --> 00:59:07,740 er nu i stedet for at sige, "udvider Controller" 993 00:59:07,740 --> 00:59:11,870 Jeg har tænkt mig at sige, "udvider Controller_Template" 994 00:59:11,870 --> 00:59:15,890 og nu i stedet for at sige, "svar krop er lig med denne opfattelse" 995 00:59:15,890 --> 00:59:24,110 Jeg har tænkt mig at sige, "denne skabelon indhold er -" 996 00:59:24,110 --> 00:59:27,690 og jeg tror - sætter jeg et lighedstegn? 997 00:59:27,690 --> 00:59:32,710 Jeg glemmer. Ja, det tænkte jeg nok. 998 00:59:32,710 --> 00:59:37,710 Og nu har jeg sat, at indhold variabel lig med den opfattelse. 999 00:59:37,710 --> 00:59:40,960 Jeg kan gøre det samme her. 1000 00:59:49,620 --> 00:59:57,170 Og nu, hvis jeg opdatere, kan du nu se denne copyright tilføjes der, 1001 00:59:57,170 --> 01:00:00,350 og bare gøre nogle tilfældige indlæg, 1002 01:00:00,350 --> 01:00:06,760 og så igen, bør du se, at ophavsretten er selve bunden af ​​siden. 1003 01:00:06,760 --> 01:00:10,730 >> Great. Det er alt, jeg ville vise jer. 1004 01:00:10,730 --> 01:00:14,970 [Bifald] 1005 01:00:14,970 --> 01:00:18,950 Eventuelle spørgsmål? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]