1 00:00:00,000 --> 00:00:02,150 >> [Seminar] [Kohana: En lett 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 >> Hei alle sammen. Mitt navn er Brandon. 5 00:00:09,130 --> 00:00:11,000 Jeg er en junior her på høgskolen gjør informatikk, og i dag skal vi snakke om 6 00:00:11,000 --> 00:00:14,460 Kohana, som er en PHP web utviklingsmiljø. 7 00:00:14,460 --> 00:00:17,260 I dag kommer til å bli en live koding seminar, 8 00:00:17,260 --> 00:00:21,000 så jeg er i utgangspunktet tenkt å bruke 5-10 minutter på å forklare hva Kohana er, 9 00:00:21,000 --> 00:00:25,000 og da er jeg bokstavelig talt kommer til å bygge en super enkel blogg 10 00:00:25,000 --> 00:00:28,570 for deg akkurat her bokstavelig talt fra bunnen av. 11 00:00:28,570 --> 00:00:32,229 Vi kommer til å laste ned koden fra Kohana nettside, 12 00:00:32,229 --> 00:00:35,000 og vi kommer til å begynne å bygge en blogg, og forhåpentligvis vil det være veldig lærerikt, 13 00:00:35,000 --> 00:00:37,000 fordi du vil se kanskje kanskje jeg skal gjøre noen feil, 14 00:00:37,000 --> 00:00:39,000 og du vil se meg komme seg fra dem, 15 00:00:39,000 --> 00:00:42,040 eller vil du se min tankeprosess som jeg bygger gjennom denne bloggen, 16 00:00:42,040 --> 00:00:44,000 og i mellomtiden, vil du også bli kjent med de rammer seg selv. 17 00:00:44,000 --> 00:00:48,000 Forhåpentligvis vil det være en svært lærerik øvelse. 18 00:00:48,000 --> 00:00:51,370 >> Først, hva er egentlig et rammeverk? 19 00:00:51,370 --> 00:00:54,000 Hvis du har tatt CS50 så langt, har du egentlig ikke jobbet med noen 20 00:00:54,000 --> 00:00:56,000 rammeverk ennå, og ting er dette. 21 00:00:56,000 --> 00:01:00,000 Du har sikkert gjort en webutvikling PSett allerede, 22 00:01:00,000 --> 00:01:03,000 og la oss si at du fortsetter å bygge nettsteder og holde bygge nettsteder. 23 00:01:03,000 --> 00:01:05,000 Du vil begynne å legge merke til et par ting. 24 00:01:05,000 --> 00:01:07,000 Det første du vil legge merke til er at du sannsynligvis gjør de samme tingene 25 00:01:07,000 --> 00:01:09,150 om og om igjen hele tiden, 26 00:01:09,150 --> 00:01:13,000 ting som rengjøring brukerinngangsdata, 27 00:01:13,000 --> 00:01:17,250 ting som å organisere filene dine på en bestemt måte. 28 00:01:17,250 --> 00:01:19,000 Den andre tingen du vil også trolig legge merke til er at koden 29 00:01:19,000 --> 00:01:21,000 kan begynne å bli veldig, veldig rotete, 30 00:01:21,000 --> 00:01:24,000 og du kan la det være rotete og bare ha en svært vanskelig tid å opprettholde det, 31 00:01:24,000 --> 00:01:26,000 eller du kan begynne å strukturere koden din og gjør den modulære 32 00:01:26,000 --> 00:01:28,510 på bestemte måter for å gjøre det mer vedlikeholdsvennlig. 33 00:01:28,510 --> 00:01:31,020 >> Det er der web rammeverk utgangspunktet kom i. 34 00:01:31,020 --> 00:01:33,680 Disse menneskene som hadde bygget en rekke nettsteder, sa de, 35 00:01:33,680 --> 00:01:35,820 "Vi trenger ikke å gjøre om dette hver eneste gang vi bygge et nettsted." 36 00:01:35,820 --> 00:01:39,050 "Kan vi ikke bare lage en pakke som gjør alle disse tingene for deg 37 00:01:39,050 --> 00:01:41,250 hver eneste gang du ønsker å bygge et nettsted? " 38 00:01:41,250 --> 00:01:43,030 Og slik at når du gjør et nytt nettsted, 39 00:01:43,030 --> 00:01:45,880 du bare fokusere på hva denne nettsiden er ca. 40 00:01:45,880 --> 00:01:48,630 Du trenger ikke å gjenta alle de forskjellige konfigurasjon 41 00:01:48,630 --> 00:01:53,070 og separering av koder og skrive kode 42 00:01:53,070 --> 00:01:56,180 at du ofte må gjøre når du skal lage websider. 43 00:01:56,180 --> 00:01:59,410 Tanken er at et rammeverk gjør at du kan skrive et høyere nivå kode 44 00:01:59,410 --> 00:02:01,030 uten å måtte bekymre seg for lavere nivå detaljer. 45 00:02:01,030 --> 00:02:03,670 En lavere nivå detalj kan være noe sånt 46 00:02:03,670 --> 00:02:07,250 arbeider med renhold brukerinngangsdata. 47 00:02:07,250 --> 00:02:09,320 Det er noe som du ikke bør virkelig trenger å bekymre seg for. 48 00:02:09,320 --> 00:02:12,370 Du bør fokusere på hva ditt tildeling faktisk handler om. 49 00:02:12,370 --> 00:02:14,790 Det eliminerer mye av standardkoden. 50 00:02:14,790 --> 00:02:16,640 Det er en arkitektur for prosjektet. 51 00:02:16,640 --> 00:02:18,680 >> Den mest kjente ville være Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 som jeg kommer til å snakke om i et sekund. 53 00:02:20,380 --> 00:02:22,790 Og mange ganger disse rammene legemliggjøre et sett med prosedyrer, 54 00:02:22,790 --> 00:02:25,750 regler og beste praksis for deg å bruke 55 00:02:25,750 --> 00:02:28,190 slik at når du adoptere web rammeverk 56 00:02:28,190 --> 00:02:30,050 du må skrive koden din på en bestemt måte, 57 00:02:30,050 --> 00:02:32,430 og det er generelt et avtalt sett av prinsipper 58 00:02:32,430 --> 00:02:34,290 av samfunnet som er generelt akseptert å være 59 00:02:34,290 --> 00:02:36,230 en god måte å skrive kode. 60 00:02:36,230 --> 00:02:38,260 Det gjør koden mer vedlikeholdsvennlig, mer brukervennlig, 61 00:02:38,260 --> 00:02:40,030 så videre og så videre. 62 00:02:40,030 --> 00:02:42,740 Og til slutt, den tingen jeg ønsker å understreke om rammer 63 00:02:42,740 --> 00:02:45,980 versus bibliotekene er denne ideen om inversjon av kontroll, og den tingen er dette. 64 00:02:45,980 --> 00:02:48,430 Forskjellen mellom et bibliotek og et rammeverk er at med et bibliotek 65 00:02:48,430 --> 00:02:51,990 du fremdeles skriver hovedprogrammet, 66 00:02:51,990 --> 00:02:54,460 og du er liksom påkalle biblioteket 67 00:02:54,460 --> 00:02:56,810 og ringer på biblioteket for å gjøre noe for deg. 68 00:02:56,810 --> 00:02:58,180 Forskjellen mellom et bibliotek og et rammeverk 69 00:02:58,180 --> 00:03:01,620 er at rammeverket starter med kontrollen 70 00:03:01,620 --> 00:03:03,260 og det påkaller koden din, 71 00:03:03,260 --> 00:03:06,190 slik at du kan tenke på det som - dette er grunnen til at det kalles et rammeverk - 72 00:03:06,190 --> 00:03:09,700 rammen gir dette ramme og struktur for koden din, 73 00:03:09,700 --> 00:03:11,320 og du fylle hullene, 74 00:03:11,320 --> 00:03:13,990 , og dette vil bli mer tydelige i et sekund 75 00:03:13,990 --> 00:03:16,670 når du ser meg begynne å skrive kode i konteksten av rammeverket. 76 00:03:16,670 --> 00:03:19,130 Du vil se at jeg fyller ut hullene, 77 00:03:19,130 --> 00:03:22,450 og rammen er slik å kontrollere alle de bevegelige deler, 78 00:03:22,450 --> 00:03:27,420 og jeg må sette brikkene på de riktige stedene. 79 00:03:27,420 --> 00:03:29,360 >> I dag skal vi snakke om Kohana, 80 00:03:29,360 --> 00:03:31,610 som er en av mange PHP rammeverk. 81 00:03:31,610 --> 00:03:34,550 Det er web rammeverk, og det er de i praktisk talt hver eneste språket, 82 00:03:34,550 --> 00:03:38,330 og jeg plukker Kohana fordi Kohana er uten tvil 83 00:03:38,330 --> 00:03:43,250 og generelt anerkjent som den enkleste PHP rammeverk for å plukke opp. 84 00:03:43,250 --> 00:03:45,940 Det er den mest lett. 85 00:03:45,940 --> 00:03:48,470 Det er andre der ute som kommer med mange, mange flere funksjoner, 86 00:03:48,470 --> 00:03:51,590 men de har en tendens til å være mer vanskelig å plukke opp. 87 00:03:51,590 --> 00:03:54,920 Og til slutt, bruker Kohana MVC-arkitektur. 88 00:03:54,920 --> 00:03:57,780 Det er lett nok til at vi bokstavelig talt kan bygge et prosjekt 89 00:03:57,780 --> 00:03:59,620 akkurat her rett foran øynene dine, og du kan ganske mye 90 00:03:59,620 --> 00:04:02,780 følge med ganske lett. 91 00:04:02,780 --> 00:04:04,420 >> Hva er MVC-arkitektur? 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 kanskje hvis du tenker på koden du har skrevet så langt 94 00:04:09,560 --> 00:04:11,280 for noen av dine webutvikling psets 95 00:04:11,280 --> 00:04:14,710 du kan være i stand til å se noe av dette, men vanligvis når du begynner å skrive 96 00:04:14,710 --> 00:04:16,500 en mer kompleks webapplikasjon, 97 00:04:16,500 --> 00:04:21,209 skillet mellom disse tre segmentene blir mer og mer tydelig. 98 00:04:21,209 --> 00:04:26,740 Jeg la ut MVC her liksom som en stabel, 99 00:04:26,740 --> 00:04:29,920 og ofte vil du høre folk snakke om stabler i webutvikling, 100 00:04:29,920 --> 00:04:33,760 og dette er for å illustrere ideen om at 101 00:04:33,760 --> 00:04:37,510 hvert lag, hver komponent virkelig prøver å bare kommunisere 102 00:04:37,510 --> 00:04:40,750 mellom to andre komponenter. 103 00:04:40,750 --> 00:04:44,550 Noen åpner nettstedet ditt som en klient eller en nettleser. 104 00:04:44,550 --> 00:04:48,870 De samhandler med programmet gjennom visningen koden. 105 00:04:48,870 --> 00:04:50,500 Utsikten kode kommuniserer med kontrolleren. 106 00:04:50,500 --> 00:04:52,400 Kontrolleren kommuniserer med modellen 107 00:04:52,400 --> 00:04:55,090 og modellen samhandler med SQL database. 108 00:04:55,090 --> 00:04:59,670 Og det er ingen hopping i mellom hvis du skriver koden din skikkelig. 109 00:04:59,670 --> 00:05:01,670 >> Hva gjør disse tingene gjøre? 110 00:05:01,670 --> 00:05:06,020 Modellen er i hovedsak de stykke kode som omhandler dine data. 111 00:05:06,020 --> 00:05:09,100 Alt som omhandler databasen, med de objektene som du lagrer, 112 00:05:09,100 --> 00:05:11,280 eller hente disse objektene i databasen, 113 00:05:11,280 --> 00:05:13,450 det er alt håndteres av modellen. 114 00:05:13,450 --> 00:05:15,290 Kanskje har du objekter i databasen. 115 00:05:15,290 --> 00:05:17,700 Vi kommer til å lage en modell som har å gjøre med innlegg, 116 00:05:17,700 --> 00:05:19,760 så et innlegg kan ha noen attributter til det. 117 00:05:19,760 --> 00:05:23,900 Du kan ha funksjoner rundt lagring av disse innleggene eller hente innlegg 118 00:05:23,900 --> 00:05:26,270 eller filtrere innlegg og så videre og så videre, 119 00:05:26,270 --> 00:05:28,880 og det er all koden som er håndtert av modellen. 120 00:05:28,880 --> 00:05:31,780 Kontrolleren er liksom av programmet logikken, 121 00:05:31,780 --> 00:05:37,910 og en masse forskjellige ting kan gå i applikasjonslogikken. 122 00:05:37,910 --> 00:05:39,790 Hvis du snakker med en annen API, 123 00:05:39,790 --> 00:05:42,310 som kan være der du arbeider med programmet logikken. 124 00:05:42,310 --> 00:05:47,990 Hvis du prøver å få til å hente inn data fra flere ulike modeller 125 00:05:47,990 --> 00:05:51,540 og må kombinere dem på en eller annen måte, som ofte kan bli håndtert av kontrolleren. 126 00:05:51,540 --> 00:05:53,820 For eksempel, på Facebook, hvis du venn noen, 127 00:05:53,820 --> 00:05:58,500 så kanskje det handle om å etablere dette forholdet 128 00:05:58,500 --> 00:06:00,490 kan utføres av kontrolleren. 129 00:06:00,490 --> 00:06:04,350 >> Og til slutt, er utsikten koden som genererer hva du faktisk se. 130 00:06:04,350 --> 00:06:07,410 Mange ganger tror jeg i CS50 psets 131 00:06:07,410 --> 00:06:10,050 de egentlig ikke oppfordre dere til å skille disse tre tingene. 132 00:06:10,050 --> 00:06:12,430 Du vil sannsynligvis ha denne store, lange fil der på toppen 133 00:06:12,430 --> 00:06:15,130 du gjøre noen SQL-spørring og kanskje gjøre noen behandling 134 00:06:15,130 --> 00:06:17,020 på dataene du hentet fra databasen, 135 00:06:17,020 --> 00:06:19,370 og da har du all din HTML nederst. 136 00:06:19,370 --> 00:06:22,840 Og du kan finne det som du lager flere og flere sider 137 00:06:22,840 --> 00:06:25,790 at du kommer til å ha noen kode repetisjon, og også, 138 00:06:25,790 --> 00:06:29,600 tingen er filen blir veldig stor og lang 139 00:06:29,600 --> 00:06:32,370 og blir uhåndterlig å administrere. 140 00:06:32,370 --> 00:06:34,500 Grunnen til at MVC er så vel ansett 141 00:06:34,500 --> 00:06:36,120 er for en rekke årsaker. 142 00:06:36,120 --> 00:06:38,110 Den første tingen er noe som heter separasjon av bekymringer 143 00:06:38,110 --> 00:06:40,370 som er ideen om at når du har - 144 00:06:40,370 --> 00:06:43,520 ideelt sett en del av koden bør gjøre en ting og gjør det veldig bra, 145 00:06:43,520 --> 00:06:47,210 og du bør ikke kombinere deler av koden som gjør ulike ting. 146 00:06:47,210 --> 00:06:49,230 For eksempel, vis-koden og modellkode, 147 00:06:49,230 --> 00:06:51,040 de egentlig ikke trenger å være relatert. 148 00:06:51,040 --> 00:06:53,290 De trenger ikke å være i de samme filene, så når du kan, skille dem ut 149 00:06:53,290 --> 00:06:55,300 så det er lett å vedlikeholde. 150 00:06:55,300 --> 00:06:57,130 >> Den andre tingen er gjenbruk av kode. 151 00:06:57,130 --> 00:06:59,770 Du kan finne deg selv å skrive den samme SQL-spørringen eller gjør 152 00:06:59,770 --> 00:07:03,060 lignende spørsmål som kunne bli abstrahert inn en funksjon, 153 00:07:03,060 --> 00:07:05,440 og det er tanken bak modeller og kontrollere, 154 00:07:05,440 --> 00:07:09,690 å ha den i en egen funksjon som du kan bruke om igjen på forskjellige steder i prosjektet. 155 00:07:09,690 --> 00:07:12,420 Og til slutt, som er knyttet til tørking koden din, 156 00:07:12,420 --> 00:07:14,700 eller ikke gjenta deg selv, ikke gjenta deg selv. 157 00:07:14,700 --> 00:07:18,090 Dette er veldig forståelig i utvikling. 158 00:07:18,090 --> 00:07:20,110 Når du kan, du ønsker ikke å gjenta deg selv, fordi hvis du gjentar deg selv, 159 00:07:20,760 --> 00:07:23,400  det er mye mer kostbart å vedlikeholde. 160 00:07:23,400 --> 00:07:26,040 Hvis du ønsker å endre en ting, må du endre det overalt, 161 00:07:26,040 --> 00:07:30,230 og som fører til feil, og det er fryktelig. 162 00:07:30,230 --> 00:07:32,010 >> Greit. 163 00:07:32,010 --> 00:07:37,270 Eventuelle spørsmål så langt om Kohana i det hele tatt? 164 00:07:37,270 --> 00:07:39,200 Flott. 165 00:07:39,200 --> 00:07:42,300 Nå kommer vi til å dykke inn live koding sesjon, 166 00:07:42,300 --> 00:07:48,050 og forhåpentligvis alt går bra. 167 00:07:57,200 --> 00:08:00,050 Jeg skal i utgangspunktet bygge dette nettstedet 168 00:08:00,050 --> 00:08:03,910 på en av mine eksterne servere, og på den måten dere kan også 169 00:08:03,910 --> 00:08:06,310 se nettsiden og få tilgang til nettstedet, 170 00:08:06,310 --> 00:08:10,990 og også miljøet er bedre konfigurert enn min ekstern maskin, 171 00:08:10,990 --> 00:08:14,580 fordi den kjører Linux i stedet for OS X. 172 00:08:14,580 --> 00:08:16,260 Vi er bokstavelig talt kommer til å starte. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Jeg kommer til å laste ned koden fra nettsiden. 175 00:08:21,350 --> 00:08:24,610 Jeg kommer til å kopiere linken adresse, 176 00:08:24,610 --> 00:08:29,770 gå til min server, laste den ned, 177 00:08:29,770 --> 00:08:33,000 og jeg kommer til å pakke den ut. 178 00:08:38,330 --> 00:08:45,710 >> [Student] Hva er det største du kan gjø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 [Student] Er det gjennomførbart? >> [Brandon Liu] Ja, det er greit. 181 00:08:50,070 --> 00:08:54,500 Jeg lastet ned en ZIP-fil og pakket det inn i en katalog som heter Kohana, 182 00:08:54,500 --> 00:08:58,820 og vi kommer til å endre navn som CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 og la oss gå i. 184 00:09:01,140 --> 00:09:03,610 Awesome. 185 00:09:03,610 --> 00:09:06,870 Her ser du en haug med forskjellige filer. 186 00:09:06,870 --> 00:09:10,140 De fleste av dere kan ignorere - Vi er ikke kommer til å gå gjennom hver enkelt fil som er her 187 00:09:10,140 --> 00:09:13,130 på grunn av vår tidspress, 188 00:09:13,130 --> 00:09:16,310 men vanligvis når du installerer Kohana, det første du gjør 189 00:09:16,310 --> 00:09:23,210 er du gå til katalogen, 190 00:09:23,210 --> 00:09:26,050 og du vil i utgangspunktet gjøre noen miljø tester og whatnot 191 00:09:26,050 --> 00:09:28,640 å sørge for at miljøet er riktig satt til å kjøre Kohana 192 00:09:28,640 --> 00:09:31,450 og sørge for at alt er i orden. 193 00:09:31,450 --> 00:09:35,510 Du kan se de fleste ting gått, men generelt du alltid kjøre inn dette ett problem 194 00:09:35,510 --> 00:09:38,180 hvor det klager på at noen mappe er skrivebeskyttet, 195 00:09:38,180 --> 00:09:40,410 og det er på grunn av noen tillatelser. 196 00:09:40,410 --> 00:09:43,080 Jeg vet ikke hvor mye dere har lært om filrettigheter i CS50, 197 00:09:43,080 --> 00:09:47,920 men hvis du gjør webutvikling, du kommer til å kjøre inn i denne saken mye. 198 00:09:47,920 --> 00:09:58,340 Jeg kommer til å gjøre det skrivbar 199 00:09:58,340 --> 00:10:03,390 og jeg tror jeg må også - der vi går. 200 00:10:03,390 --> 00:10:07,040 >> Ok, så nå kan du se alt passert, 201 00:10:07,040 --> 00:10:10,000 og nå vil den fortelle deg å endre navn install.php filen. 202 00:10:10,000 --> 00:10:15,630 Jeg kommer til å flytte install.php filen til installed.php, 203 00:10:15,630 --> 00:10:19,610 og nå hvis jeg oppdaterer, 204 00:10:19,610 --> 00:10:22,810 det gir meg litt feil, og det er her debugging kommer i. 205 00:10:22,810 --> 00:10:25,610 Det er her du kan se hva som faktisk kommer til å skje. 206 00:10:25,610 --> 00:10:28,460 Saken er, som standard, antar Kohana at 207 00:10:28,460 --> 00:10:31,480 prosjektet er på rotkatalogen på ditt domene, 208 00:10:31,480 --> 00:10:35,920 så det venter deg til å være på demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Vi må fortelle det at det er faktisk i en undermappe. 210 00:10:37,540 --> 00:10:39,820 Det er i en undermappe kalt CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 Saken er, det er mistolking CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 som noe annet, som jeg vil forklare deg i et sekund. 213 00:10:45,680 --> 00:10:49,910 Men jeg skal fortelle deg det er noe som er å være forventet. 214 00:10:49,910 --> 00:10:53,700 Hva vi skal gjøre er at vi kommer til å gå inn i denne mappen som heter bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 som er konfigurasjonen mappen hvor mange forskjellige ting blir satt opp. 216 00:10:59,260 --> 00:11:01,570 Jeg åpner det opp. 217 00:11:01,570 --> 00:11:09,790 Så kanskje en av de første tingene jeg skal gjøre er å endre tidssone. 218 00:11:09,790 --> 00:11:13,910 >> Og så la oss se. 219 00:11:13,910 --> 00:11:15,180 Aha! Akkurat her. 220 00:11:15,180 --> 00:11:18,690 Det finnes en haug med forskjellige konfigurasjons ordtak her inne, 221 00:11:18,690 --> 00:11:21,700 men den jeg leter etter er dette som kalles grunnleggende URL, 222 00:11:21,700 --> 00:11:24,570 og som standard får jeg det satt til Kohana, 223 00:11:24,570 --> 00:11:29,020 men jeg kommer til å endre det til CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 og jeg tror at skal fikse det. 225 00:11:32,880 --> 00:11:34,150 Ja, bra. 226 00:11:34,150 --> 00:11:39,530 Som standard, for å se at det fungerer, det sier: "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 nøyaktig er koden som faktisk skrev det? 229 00:11:47,640 --> 00:11:50,240 For å forstå det, vil jeg presentere dette konseptet kalles ruting. 230 00:11:50,240 --> 00:11:52,590 Ganske mye alle nett rammer har konseptet kalles ruting, 231 00:11:52,590 --> 00:11:57,230 som er den del av programvaren som skal kartlegge en bestemt nettadresse 232 00:11:57,230 --> 00:12:01,550 til en viss del av koden i din rammeverk. 233 00:12:01,550 --> 00:12:07,510 For eksempel, hvis du har noen URL, og du går til noen URL som foo.com / blogg / alle 234 00:12:07,510 --> 00:12:11,170 så hva rammen kommer til å gjøre - eller i det minste hva Kohana kommer til å gjøre - 235 00:12:11,170 --> 00:12:15,540 er det kommer til å finne en klasse som heter kontrolleren blogg, 236 00:12:15,540 --> 00:12:18,720 og det kommer til å kjøre funksjonen heter action hele. 237 00:12:18,720 --> 00:12:20,160 Jeg vet jeg snakker om klasse og funksjoner, 238 00:12:20,160 --> 00:12:23,860 og jeg vet at dere ikke har dekket klasser og funksjoner 239 00:12:23,860 --> 00:12:26,470 i CS50 ennå, men for nå, 240 00:12:26,470 --> 00:12:29,800 du kan tenke på klasser som bare en gruppe av funksjoner, 241 00:12:29,800 --> 00:12:32,900 en måte å gruppere funksjoner sammen. 242 00:12:32,900 --> 00:12:37,690 Det er egentlig alt du trenger å vite. 243 00:12:37,690 --> 00:12:43,120 >> Nå hvis vi ser på vår mappestrukturen, 244 00:12:43,120 --> 00:12:47,110 inne i programmappen er det en annen mappe kalt klasser, 245 00:12:47,110 --> 00:12:49,200 og de andre mappene kalles Controller og modell. 246 00:12:49,200 --> 00:12:52,530 Hvis du ser inne i Controller-mappen, 247 00:12:52,530 --> 00:12:56,330 vi ser at det er en fil som heter Velkommen, 248 00:12:56,330 --> 00:13:00,370 og du kan se her er en klasse som heter Controller Velkommen, 249 00:13:00,370 --> 00:13:02,340 og det er en funksjon kalt Handling Index, 250 00:13:02,340 --> 00:13:06,360 og hva den gjør er det setter kroppen din reaksjon på Hello World. 251 00:13:06,360 --> 00:13:08,730 Det er der koden blir skrevet. 252 00:13:08,730 --> 00:13:11,610 Det andre spørsmålet er, vel, jeg gikk ikke til 253 00:13:11,610 --> 00:13:13,680 blah, blah, blah, / welcome / index. 254 00:13:13,680 --> 00:13:16,250 Hvordan endte jeg opp her? 255 00:13:16,250 --> 00:13:20,410 Vel, det er rett og slett fordi 256 00:13:20,410 --> 00:13:22,410 her på bunnen av vår bootstrap fil 257 00:13:22,410 --> 00:13:24,550 hvor vi setter våre ruter 258 00:13:24,550 --> 00:13:26,570 du kan se at de satt noen standardverdier for deg. 259 00:13:26,570 --> 00:13:28,990 Standard kontrolleren er Velkommen. Standardhandlingen er Index. 260 00:13:28,990 --> 00:13:31,600 Derfor når vi legger ingenting der det automatisk gikk til Velkommen kontrolleren 261 00:13:31,600 --> 00:13:33,940 og indeksen Handling. 262 00:13:33,940 --> 00:13:37,460 >> Alt fornuftig så langt? 263 00:13:37,460 --> 00:13:40,850 Nå kan du gjøre mer enn bare å gå til Controller 264 00:13:40,850 --> 00:13:43,670 og en spesifikk handling. 265 00:13:43,670 --> 00:13:48,480 Du kan også sende inn parametre til kontrolleren. 266 00:13:48,480 --> 00:13:56,390 Bare som et eksempel, 267 00:13:56,390 --> 00:14:04,070 Jeg kommer til å legge til en annen handling til denne kontrolleren til å vise deg. 268 00:14:04,070 --> 00:14:09,130 La oss kalle denne handlingen Echo, fordi det kommer til å fortelle deg hva du gir den, 269 00:14:09,130 --> 00:14:17,510 og så jeg er i utgangspunktet tenkt å ta tak 270 00:14:17,510 --> 00:14:20,960 en parameter som kommer til å bli sendt gjennom meg til routing programmet, 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 linjen her, kan du se at 273 00:14:28,440 --> 00:14:31,270 Dette betyr i utgangspunktet at du har kontroller, og du har en /, 274 00:14:31,270 --> 00:14:33,480 og du har handling, og du har en annen /, 275 00:14:33,480 --> 00:14:39,140 og som kommer til å være parametere, og fordi vi har dette navnet ID 276 00:14:39,140 --> 00:14:42,450 innenfor vinkelparenteser, som betyr at vi navngi denne parameteren ID. 277 00:14:42,450 --> 00:14:45,490 Senere i min kontrolleren kode hvis jeg ønsker å ta tak i som parameter, 278 00:14:45,490 --> 00:14:51,790 Jeg kan bruke koden jeg skrev, finne den parameteren som heter ID. 279 00:14:51,790 --> 00:14:59,290 Det er hva jeg gjorde her, og jeg kommer til å gå tilbake og si, 280 00:14:59,290 --> 00:15:07,090 "Du sa" det. 281 00:15:07,090 --> 00:15:10,760 Og så nå hvis jeg går til vår 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 oh, det stemmer. 284 00:15:21,420 --> 00:15:23,930 Det er en skritt jeg utelatt. 285 00:15:23,930 --> 00:15:27,020 Dette er en del av live koding idé. 286 00:15:27,020 --> 00:15:36,100 >> Her er en ting. La oss se. 287 00:15:36,100 --> 00:15:38,870 Så normalt som standard med en rekke av disse web-applikasjoner 288 00:15:38,870 --> 00:15:42,820 du har til å inkludere denne index.php ting i din URL, 289 00:15:42,820 --> 00:15:46,410 fordi ideen er index.php er liksom inngangspunkt 290 00:15:46,410 --> 00:15:48,250 av søknaden din, men selvfølgelig, 291 00:15:48,250 --> 00:15:50,110 det er liksom irriterende å ha. 292 00:15:50,110 --> 00:15:53,790 Du ønsker ikke å ha index.php vises i nettadressen din, 293 00:15:53,790 --> 00:15:56,080 og ganske mye hver web rammeverk ut av boksen 294 00:15:56,080 --> 00:15:58,440 har denne index.php problem, 295 00:15:58,440 --> 00:16:03,370 og så må du ta noen forholdsregler for å være i stand til å fjerne det. 296 00:16:03,370 --> 00:16:07,540 Og så i dette tilfellet 297 00:16:07,540 --> 00:16:11,450 hva vi skal gjøre er at vi kommer til å bruke en fil som heter. htaccess, 298 00:16:11,450 --> 00:16:13,900 og dette er noe som er spesifikk for Apache web server, 299 00:16:13,900 --> 00:16:16,290 og det kan gjøre ting som å omskrive nettadresser 300 00:16:16,290 --> 00:16:19,350 og omdirigere nettadresser og så videre og så videre, 301 00:16:19,350 --> 00:16:24,280 og Kohana er hyggelig nok til å gi en mal. htaccess-fil som vi kan bruke. 302 00:16:24,280 --> 00:16:28,300 >> Som du kan se, er det en fil der som heter example.htaccess, 303 00:16:28,300 --> 00:16:33,410 og vi kommer til å kopiere det til. htaccess. 304 00:16:33,410 --> 00:16:36,950 Jeg kommer til å åpne denne og redigere den, 305 00:16:36,950 --> 00:16:40,840 og i utgangspunktet den gjør en haug med forskjellige ting. 306 00:16:40,840 --> 00:16:45,320 Nøkkelen linjen kan det være lurt å se på er rett her. 307 00:16:45,320 --> 00:16:49,840 Tanken er at dette setter opp en regel som sier: 308 00:16:49,840 --> 00:16:56,400 "Ok, det du skriver inn, foranstilte index.php til det." 309 00:16:56,400 --> 00:16:58,710 Du kan se det. 310 00:16:58,710 --> 00:17:00,370 Den. * Står for noe, matche noe, 311 00:17:00,370 --> 00:17:03,300 og deretter den andre delen er index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 og $ 0 refererer til det som ble matchet tidligere. 313 00:17:07,410 --> 00:17:09,500 Betyr det fornuftig? 314 00:17:09,500 --> 00:17:12,190 Men det virkelig viktig ting jeg vil endre, er å endre denne omskrive base, 315 00:17:12,190 --> 00:17:14,300 som er den URL basen. 316 00:17:14,300 --> 00:17:17,780 Det slags foruts hvor du jobber fra. 317 00:17:17,780 --> 00:17:22,560 Jeg kommer til å legge CS50 Kohana til det, 318 00:17:22,560 --> 00:17:26,530 og på den måten nå hvis jeg fjerner index.php, 319 00:17:26,530 --> 00:17:32,110 det skal fungere, og jeg kommer til å legge noen tall 320 00:17:32,110 --> 00:17:36,380 å vise deg at det faktisk fungerte. 321 00:17:36,380 --> 00:17:38,130 Høres bra ut. 322 00:17:38,130 --> 00:17:40,260 >> Eventuelle spørsmål så langt? 323 00:17:40,260 --> 00:17:42,300 [Student] Hvordan gikk det vet å gjøre 123? 324 00:17:42,300 --> 00:17:44,120 Er det et argument? 325 00:17:44,120 --> 00:17:46,560 Nettopp. Du kan tenke på det akkurat som et argument. 326 00:17:46,560 --> 00:17:52,410 Men det rare ting, skjønt, er at måten Kohana gjør det 327 00:17:52,410 --> 00:17:54,910 er de ikke gjør det akkurat som et argument. 328 00:17:54,910 --> 00:17:56,930 Du må ta tak i det som dette. 329 00:17:56,930 --> 00:18:01,030 Du må ta tak i forespørselen objektet og be for den parameteren som er oppkalt ID, 330 00:18:01,030 --> 00:18:03,240 og det navnet ID kommer fra at bootstrap fil 331 00:18:03,240 --> 00:18:06,990 at jeg viste tidligere, og navnet ID var i disse vinkelparenteser, 332 00:18:06,990 --> 00:18:11,580 og det er hvordan du hente disse parametrene. 333 00:18:11,580 --> 00:18:14,010 Awesome. 334 00:18:14,010 --> 00:18:17,550 Eventuelle andre spørsmål? 335 00:18:17,550 --> 00:18:20,500 Som jeg sa, kontrollere, de håndterer applikasjonslogikk, 336 00:18:20,500 --> 00:18:22,980 så det er en sak der du kan se that - 337 00:18:22,980 --> 00:18:24,830 det er veldig grunnleggende, men det er fortsatt applikasjonslogikk, 338 00:18:24,830 --> 00:18:27,980 ideen om å gripe tak i parameteren og skape en ny streng 339 00:18:27,980 --> 00:18:31,920 som sier: "Du sa blah," og så spytte det tilbake til deg. 340 00:18:31,920 --> 00:18:34,030 Og generelt hva du gjør er å skape forskjellige kontrollerne. 341 00:18:34,030 --> 00:18:36,450 Du oppretter separate kontrollere for ulike deler av nettstedet ditt. 342 00:18:36,450 --> 00:18:38,160 >> I dag skal vi lage en veldig enkel nettside, 343 00:18:38,160 --> 00:18:40,420 og det kommer til å være en helt enkel blogg. 344 00:18:40,420 --> 00:18:43,780 Vi kommer til å lage en ny kontroller bare for innlegg i en blogg. 345 00:18:43,780 --> 00:18:47,060 Men så hvis jeg skulle også legge til kommentarer til blogginnlegget, 346 00:18:47,060 --> 00:18:50,140 da ville jeg sannsynligvis vil gjøre en ny kontroller for disse kommentarene. 347 00:18:50,140 --> 00:18:53,380 Hvis jeg ønsket å legge til brukere, ville jeg trolig legge en ny kontroller for disse brukerne, 348 00:18:53,380 --> 00:18:57,000 og generelt, er ideen om at når du har en ny modell, 349 00:18:57,000 --> 00:18:59,630 en ny dataobjekt som du arbeider med, 350 00:18:59,630 --> 00:19:02,970 du har en enkelt kontroller for at dataobjekt. 351 00:19:02,970 --> 00:19:04,370 I dag har vi bare kommer til å jobbe med en dataobjekt, 352 00:19:04,370 --> 00:19:06,250 og som kommer til å være innlegg, 353 00:19:06,250 --> 00:19:08,710 og også du kan tenke på dataobjekter som tilsvarer tabeller. 354 00:19:08,710 --> 00:19:12,160 Vanligvis hvert bord tilsvarer en type dataobjekt, 355 00:19:12,160 --> 00:19:15,160 så innlegget tabellen vil ha en post-modell, 356 00:19:15,160 --> 00:19:18,230 Dette vil ha en etterkontroller som svarer til dette, 357 00:19:18,230 --> 00:19:22,190 og det samme for kommentarer, den samme for-brukere, og så videre og så videre. 358 00:19:22,190 --> 00:19:24,070 Og det er en generell tommelfingerregel. 359 00:19:24,070 --> 00:19:27,460 Det kommer til å være spesielle tilfeller der du kan avvike fra det, 360 00:19:27,460 --> 00:19:29,300 men 90% av tiden det er hva du skal gjøre, 361 00:19:29,300 --> 00:19:32,810 og jeg skal vise deg det er det vi kommer til å gjøre i dag. 362 00:19:32,810 --> 00:19:35,490 En mer konseptet før vi dykke tilbake inn i koden, 363 00:19:35,490 --> 00:19:37,710 denne ideen om objekt relasjons-mapping. 364 00:19:37,710 --> 00:19:41,200 >> Dere har allerede gjort en webutvikling PSett, 365 00:19:41,200 --> 00:19:43,820 og du har sett at du gjør en SQL-spørring, 366 00:19:43,820 --> 00:19:46,510 og hva går den tilbake til deg er rader. 367 00:19:46,510 --> 00:19:50,040 Du får disse radene, og du indeksere dem av noen navn, 368 00:19:50,040 --> 00:19:55,480 navnet på kolonnen og tabellen, 369 00:19:55,480 --> 00:19:57,630 og det er hvordan du jobber med det, 370 00:19:57,630 --> 00:19:59,290 og det kan være litt tungvint. 371 00:19:59,290 --> 00:20:01,810 Men dessuten, hvis du har relasjoner innen databasen, 372 00:20:01,810 --> 00:20:05,280 som for eksempel hvis jeg har kommentarer og innlegg, 373 00:20:05,280 --> 00:20:11,240 så kanskje jeg ønsker å ta tak i overordnede stillingen som en kommentar. 374 00:20:11,240 --> 00:20:14,350 Hvis jeg bruker bare rader i SQL, så alt jeg kan få er at ID 375 00:20:14,350 --> 00:20:19,310 av den overordnede innlegget og ikke selve innlegget selv. 376 00:20:19,310 --> 00:20:21,680 Men når vi er koding, hva vi egentlig ønsker er å faktisk ta tak 377 00:20:21,680 --> 00:20:23,550  den overordnede legge seg noen ganger. 378 00:20:23,550 --> 00:20:25,730 Hva objekt relasjons-mapping gjør er 379 00:20:25,730 --> 00:20:29,480 det tar resultatene av databasesøket 380 00:20:29,480 --> 00:20:32,420 og setter den inn i objekter for deg, som er mye hyggeligere å jobbe med 381 00:20:32,420 --> 00:20:34,770 enn vanlig arrays og rader. 382 00:20:34,770 --> 00:20:37,550 >> For eksempel, nå når jeg har en kommentar kanskje, 383 00:20:37,550 --> 00:20:40,900 og jeg ønsker å ta tak i sitt forelder innlegg, 384 00:20:40,900 --> 00:20:43,440 og jeg tror kanskje kommentere pil innlegg, 385 00:20:43,440 --> 00:20:45,230 så vil det faktisk gi meg innlegget objekt 386 00:20:45,230 --> 00:20:47,940 svarende til selve moder innlegget, ikke bare noen ID, 387 00:20:47,940 --> 00:20:52,210 som jeg ellers ville ha til å bruke og foreta en ny SQL-spørring for å hente posten, 388 00:20:52,210 --> 00:20:57,430 som er tungvint og unødvendig. 389 00:20:57,430 --> 00:21:01,840 Og dessuten, ved å kartlegge alle disse datarader til objekter, 390 00:21:01,840 --> 00:21:03,760 du kan også legge flere funksjoner til objekter, 391 00:21:03,760 --> 00:21:09,700 så for eksempel, snakket jeg om hvordan klassene er i hovedsak grupperinger av funksjoner. 392 00:21:09,700 --> 00:21:11,620 Du kan tenke på det sånn. 393 00:21:11,620 --> 00:21:15,290 For eksempel, kanskje jeg har dette innlegget objekt, 394 00:21:15,290 --> 00:21:17,830 og kanskje jeg har lyst til å ha noen form for funksjon knyttet til den 395 00:21:17,830 --> 00:21:20,300 som i utgangspunktet forteller meg ble det nylig postet? 396 00:21:20,300 --> 00:21:23,570 Ble det lagt ut i løpet av den siste uken, sant eller usant? 397 00:21:23,570 --> 00:21:27,320 Og det er en funksjon jeg kan feste på som objekt, 398 00:21:27,320 --> 00:21:31,300 og det er veldig praktisk å ha det på samme sted, 399 00:21:31,300 --> 00:21:33,820 og det finnes en rekke ulike funksjoner du kan lage 400 00:21:33,820 --> 00:21:37,990 for disse objektene, og det er veldig hyggelig å være i stand til å feste den til en klasse, 401 00:21:37,990 --> 00:21:41,700 til et objekt, mens hvis du bare hadde rader fra databasen, 402 00:21:41,700 --> 00:21:43,790 så du ikke kan virkelig feste noen funksjonalitet til det. 403 00:21:43,790 --> 00:21:47,850 Det er bokstavelig talt bare data. 404 00:21:47,850 --> 00:21:50,550 Eventuelle spørsmål om det i det hele tatt? 405 00:21:50,550 --> 00:21:52,710 Orms er svært vanlig web utvikling, 406 00:21:52,710 --> 00:21:56,330 og det er mange forskjellige typer 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 veldig grunnleggende, men du får en smak av hvordan det ser ut. 409 00:22:05,050 --> 00:22:08,780 >> La oss lage en modell for våre blogginnlegg, 410 00:22:08,780 --> 00:22:12,350 og det første vi åpenbart trenger å gjøre er å lage en faktisk tabellen 411 00:22:12,350 --> 00:22:16,680 innenfor vår database for å faktisk lagre våre data for disse innleggene. 412 00:22:16,680 --> 00:22:19,260 Det første jeg skal gjøre er å gå til phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Har dere brukt phpMyAdmin før? 414 00:22:21,410 --> 00:22:23,400 Ok, awesome, så dere vet allerede hva det er, 415 00:22:23,400 --> 00:22:32,200 og jeg kommer til å lage en ny tabell kalt Kohana innlegg, 416 00:22:32,200 --> 00:22:37,820 og det kommer til å være veldig enkel. 417 00:22:37,820 --> 00:22:40,190 Jeg må logge inn igjen 418 00:23:02,620 --> 00:23:04,640 Alt vi skal gjøre i dag er å ha en forfatter og en kropp, 419 00:23:04,640 --> 00:23:11,930 bare holde det enkelt. 420 00:23:11,930 --> 00:23:15,620 Jeg kommer til å lage det bordet, 421 00:23:15,620 --> 00:23:19,620 og nå er det bare en tabell som representerer våre innlegg 422 00:23:19,620 --> 00:23:23,370 med to felt for vår forfatter og vår kropp. 423 00:23:23,370 --> 00:23:26,290 Den andre tingen jeg kommer til å gjøre nå er 424 00:23:26,290 --> 00:23:29,820 konfigurere min webapplikasjon slik at den vet hvordan du skal koble til databasen, 425 00:23:29,820 --> 00:23:31,950 og dette, igjen, er noe som du må gjøre med alle web-applikasjoner. 426 00:23:31,950 --> 00:23:34,790 Du må fortelle det brukernavnet og passordet 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 å finne ut hvordan du faktisk koble til databasen. 429 00:23:40,000 --> 00:23:58,710 >> I Kohana, har vi noe som kalles en databasemodul, 430 00:23:58,710 --> 00:24:02,690 og i mappen konfigurasjon har vi denne mappen som heter Database, 431 00:24:02,690 --> 00:24:07,330 og som du kan se, er det en haug med innstillinger du må sette her 432 00:24:07,330 --> 00:24:09,860 å fortelle den hva er brukernavnet og passordet 433 00:24:09,860 --> 00:24:13,110 for databasen slik at jeg faktisk kan koble til det. 434 00:24:13,110 --> 00:24:15,010 Og siden jeg ikke ønsker dere å faktisk vite 435 00:24:15,010 --> 00:24:17,190 brukernavnet og passordet til min database, 436 00:24:17,190 --> 00:24:23,840 Jeg har en fil hvor jeg allerede satt det hele opp, og jeg kommer til å kopiere og lime det over. 437 00:24:33,080 --> 00:24:36,870 Awesome. 438 00:24:36,870 --> 00:24:39,880 Ok. Jeg tror det er alt konfigurasjonen jeg trenger å gjøre, 439 00:24:39,880 --> 00:24:41,070 men la oss se. 440 00:24:41,070 --> 00:24:43,720 Vi vil fortsette å jobbe i det, og hvis noe krasjer, 441 00:24:43,720 --> 00:24:47,490 så får vi fikse det. 442 00:24:47,490 --> 00:24:51,830 Nå hva jeg skal gjøre er jeg kommer til å opprette en ny kontroller. 443 00:24:51,830 --> 00:24:53,190 Eller faktisk, beklager. 444 00:24:53,190 --> 00:24:55,080 Først må jeg lage en ny modell. 445 00:24:55,080 --> 00:25:01,620 Jeg skal lage en ny modell kalt Post.php, 446 00:25:01,620 --> 00:25:12,440 og hva vi skal gjøre er at vi kommer til å kalle det klasse Model_Post. 447 00:25:12,440 --> 00:25:15,390 Få noen syntax highlighting på, 448 00:25:15,390 --> 00:25:19,750 og så når jeg sier, "strekker ORM," det er i utgangspunktet 449 00:25:19,750 --> 00:25:21,210 litt mer objektorientert programmering, 450 00:25:21,210 --> 00:25:23,340 som dessverre dere har ikke lært i CS50 ennå, 451 00:25:23,340 --> 00:25:25,290 men det er ganske lett å plukke opp. 452 00:25:25,290 --> 00:25:27,950 Det gir meg all denne ekstra funksjonalitet som kommer i denne ORM pakken, 453 00:25:27,950 --> 00:25:31,120 og så får jeg en haug med ekstra funksjoner og whatnot gratis, 454 00:25:31,120 --> 00:25:34,810 som du vil se litt av i et sekund. 455 00:25:34,810 --> 00:25:37,670 >> Akkurat nå faktisk alt jeg trenger å gjøre er å lage denne klassen. 456 00:25:37,670 --> 00:25:39,160 Jeg trenger ikke engang å gjøre en hvilken som helst funksjon eller noe, 457 00:25:39,160 --> 00:25:41,770 men jeg har opprettet en klasse som representerer tabellen, 458 00:25:41,770 --> 00:25:44,140 og fordi jeg har utvidet denne ORM klassen, 459 00:25:44,140 --> 00:25:51,080 Jeg får en haug med ting gratis, så for nå trenger du ikke å stille inn noe mer opp. 460 00:25:51,080 --> 00:25:53,530 Og hva jeg skal gjøre nå er jeg kommer til å opprette en ny kontroller, 461 00:25:53,530 --> 00:25:58,480 som jeg kommer til å nevne blog.php, 462 00:25:58,480 --> 00:26:04,350 og jeg kommer til å kopiere over den Velkommen kontrolleren 463 00:26:04,350 --> 00:26:11,950 så jeg ikke trenger å skrive noen ting, 464 00:26:11,950 --> 00:26:20,720 og nå har jeg å endre navn på dette. 465 00:26:20,720 --> 00:26:24,710 Nå hva jeg skal gjøre for å teste at alt fungerer ut, 466 00:26:24,710 --> 00:26:27,820 Jeg kommer til å ta det første innlegget fra min database 467 00:26:27,820 --> 00:26:32,680 og skrive ut hoveddelen av stolpen på skjermen. 468 00:26:32,680 --> 00:26:37,920 For å gjøre det hva jeg skal gjøre først er jeg kommer til å lagre innlegg 469 00:26:37,920 --> 00:26:48,770 til en variabel så hva vi skal gjøre er - 470 00:26:48,770 --> 00:26:52,090 i Kohana hva du gjør er å ta tak i innlegget objekt 471 00:26:52,090 --> 00:26:55,380 det er litt tungvint, men du trenger å gjøre denne tingen kalt ORM :: fabrikken, 472 00:26:55,380 --> 00:26:57,750 og deretter passerer du inn navnet på den modellen du ønsker, 473 00:26:57,750 --> 00:27:00,490 og den returnerer ORM objekt som representerer denne modellen. 474 00:27:00,490 --> 00:27:04,860 Og så, som jeg sa, når vi forlenge ORM objekt, 475 00:27:04,860 --> 00:27:07,320 Vi får alle disse metoder for fri, slik at f.eks 476 00:27:07,320 --> 00:27:09,200 vi får denne nye funksjonen heter "finne alt" 477 00:27:09,200 --> 00:27:12,160 som returnerer hvert enkelt innlegg i databasen automatisk, 478 00:27:12,160 --> 00:27:14,850 noe som er ganske praktisk. 479 00:27:14,850 --> 00:27:17,480 >> Og nå i kroppen jeg kommer til å returnere 480 00:27:17,480 --> 00:27:24,860 det første innlegget og tilbake kroppen sin. 481 00:27:24,860 --> 00:27:27,930 Og selvfølgelig, jeg trenger å lage et innlegg, 482 00:27:27,930 --> 00:27:31,880 så la oss sette inn et nytt innlegg. 483 00:27:31,880 --> 00:27:37,870 Jeg vil si: "Brandon, min aller første innlegg." 484 00:27:37,870 --> 00:27:40,010 Awesome. 485 00:27:40,010 --> 00:27:45,910 Og nå skal vi gå til blogger 486 00:27:45,910 --> 00:27:50,960 og hvis alt fungerer bra - oh, er dette en annen dum fil tillatelse ting igjen. 487 00:27:50,960 --> 00:27:56,090 Hold på ett sekund. Det er litt absurd. 488 00:28:06,700 --> 00:28:08,490 Det vi går. Ok. 489 00:28:08,490 --> 00:28:10,040 Jeg fikset dette tillatelse problem. 490 00:28:10,040 --> 00:28:12,040 Den prøvde å lage noen filer og noen logg, 491 00:28:12,040 --> 00:28:15,400 og tillatelsene, igjen, ikke var riktig innstilt, så jeg gjorde det 492 00:28:15,400 --> 00:28:18,320 så disse filene var skrivbar og kjørbar 493 00:28:18,320 --> 00:28:21,090 så det kan faktisk logge til ting. 494 00:28:21,090 --> 00:28:24,220 Nå er det gir meg et annet unntak ordtak, "class ORM ikke funnet," 495 00:28:24,220 --> 00:28:26,960 og det er fordi jeg har glemt et annet trinn. 496 00:28:26,960 --> 00:28:37,010 Det er for ille. 497 00:28:37,010 --> 00:28:40,270 I bootstrap mappen filen, det er disse modulene her, 498 00:28:40,270 --> 00:28:42,480 som du kan velge å aktivere eller deaktivere. 499 00:28:42,480 --> 00:28:44,340 Dette er en haug med forskjellige funksjoner som du kan velge å bruke 500 00:28:44,340 --> 00:28:46,180 innenfor Kohana, som er liksom fint. 501 00:28:46,180 --> 00:28:49,090 >> For eksempel, de har en autentiseringsmodul 502 00:28:49,090 --> 00:28:51,170 som du kan bruke for å autentisere brukere. 503 00:28:51,170 --> 00:28:53,390 De har en caching modul hvis du ønsker å implementere 504 00:28:53,390 --> 00:28:57,870 noen form for caching bakenden å gjøre programmet arbeide raskere og whatnot. 505 00:28:57,870 --> 00:29:02,140 Vi må aktivere databasen og ORM-modulen, 506 00:29:02,140 --> 00:29:04,280 fordi som jeg sa, vi bruker databasen, selvsagt, 507 00:29:04,280 --> 00:29:08,200 og vi trenger også å aktivere ORM-modulen, 508 00:29:08,200 --> 00:29:12,220 fordi vi ønsker å ha ekstra funksjonalitet, som er fint å ha. 509 00:29:12,220 --> 00:29:14,240 Alt jeg trenger å gjøre er uncomment disse to linjene, 510 00:29:14,240 --> 00:29:18,760 og nå hvis jeg oppdaterer, det ga meg en annen feil. 511 00:29:18,760 --> 00:29:22,100 Den sier, "Klasse Model_Post ikke funnet." 512 00:29:22,100 --> 00:29:30,210 Nå er dette en god problem å ha. 513 00:29:30,210 --> 00:29:37,660 La oss se. 514 00:29:37,660 --> 00:29:42,200 Gjøre det offentlig. 515 00:29:42,200 --> 00:29:46,450 No Hold on. 516 00:30:11,610 --> 00:30:13,160 Åh, kjære. 517 00:30:13,160 --> 00:30:18,590 Jeg vet ikke hvorfor det ikke er i stand til å finne det. 518 00:30:18,590 --> 00:30:21,030 Det er virkelig merkelig. 519 00:30:21,030 --> 00:30:23,820 Jeg har denne klassen her. 520 00:30:23,820 --> 00:30:28,650 Jeg antar jeg må kanskje - oh. 521 00:30:28,650 --> 00:30:32,010 Jeg er så dum. Jeg glemte å legge til en PHP-kode. 522 00:30:32,010 --> 00:30:34,670 Det er derfor. 523 00:30:34,670 --> 00:30:41,260 Nå har jeg å angre på at en endring jeg nettopp gjorde. 524 00:30:41,260 --> 00:30:44,270 >> Ok. Det vi går. 525 00:30:44,270 --> 00:30:47,500 Det var virkelig dumt. Jeg hadde ikke en åpning PHP-koden. 526 00:30:47,500 --> 00:30:49,900 Men som du kan se, nå er det virker som den skal, ikke sant? 527 00:30:49,900 --> 00:30:51,240 Vi har 1 innlegg. 528 00:30:51,240 --> 00:30:54,730 Vi tok det første innlegget, og nå trykket vi ut kroppen sin. 529 00:30:54,730 --> 00:30:58,010 Flott. Fantastisk. 530 00:30:58,010 --> 00:31:01,470 Eventuelle spørsmål så langt? 531 00:31:01,470 --> 00:31:04,100 Nope? Eventuelle spørsmål? 532 00:31:04,100 --> 00:31:08,340 Ok, så vi nettopp opprettet innlegget modell, veldig grunnleggende, 533 00:31:08,340 --> 00:31:10,930 og vi kommer til å legge noen funksjoner senere. 534 00:31:10,930 --> 00:31:13,600 Vi kan legge valideringer og filtrering. 535 00:31:13,600 --> 00:31:15,650 Valideringer er en av de tingene 536 00:31:15,650 --> 00:31:18,150 som rammer løse for deg virkelig, virkelig godt, 537 00:31:18,150 --> 00:31:21,310 og jeg tror ikke dere måtte gjøre dette for din CS50 PSett, 538 00:31:21,310 --> 00:31:24,000 men hvis du gjør webutvikling for det endelige prosjektet, 539 00:31:24,000 --> 00:31:26,280 du sannsynligvis kommer til å ønske å gjøre noen form for validering, 540 00:31:26,280 --> 00:31:28,290 liker ikke å ha tomme brukernavn, 541 00:31:28,290 --> 00:31:31,950 kanskje å ha et passord med minst noen lengde, sånne ting. 542 00:31:31,950 --> 00:31:34,750 Og det er virkelig tungvint å implementere disse tingene av oss selv, 543 00:31:34,750 --> 00:31:37,390 og ganske mye hver enkelt web rammeverk gjør det for deg 544 00:31:37,390 --> 00:31:41,140 og lar deg gjøre det på en veldig ren måte. 545 00:31:41,140 --> 00:31:44,340 Og modellen er der du vanligvis uttrykk for disse valideringsregler, 546 00:31:44,340 --> 00:31:48,790 fordi det er å validere om en modell er gyldig eller ikke. 547 00:31:48,790 --> 00:31:51,350 >> Men for nå, kommer vi til å sette det til senere, 548 00:31:51,350 --> 00:31:53,520 og for nå kommer vi til å jobbe på en annen del, 549 00:31:53,520 --> 00:31:55,400 og vi kommer til å prøve og lage en ny visning 550 00:31:55,400 --> 00:31:59,580 som viser alle innleggene. 551 00:31:59,580 --> 00:32:02,490 Trinnene er involvert i å lage en ny handlingsplan for notering alle innlegg 552 00:32:02,490 --> 00:32:04,810 er å hente en liste over alle innleggene 553 00:32:04,810 --> 00:32:11,990 og deretter gjengi listen over alle innleggene gjennom en visning. 554 00:32:11,990 --> 00:32:16,420 Akkurat her, heldigvis nok, vi allerede tatt alle innlegg 555 00:32:16,420 --> 00:32:20,310 ved hjelp av denne første linje, finner all funksjon 556 00:32:20,310 --> 00:32:22,520 og hva vi skal gjøre nå er så langt 557 00:32:22,520 --> 00:32:25,350 Jeg har blitt direkte innstilling kroppen av responsen 558 00:32:25,350 --> 00:32:29,090 ved å føre streng, men nå ønsker jeg å bruke en visning, 559 00:32:29,090 --> 00:32:31,870 og forskjellen mellom en visning og bare gjør dette 560 00:32:31,870 --> 00:32:35,330 er med en visning kan jeg ha en fin, stor HTML mal, 561 00:32:35,330 --> 00:32:37,710 og hva jeg kan gjøre er å gi det enkelte variabler 562 00:32:37,710 --> 00:32:42,200 og da har visningen automatisk fylle sin mal 563 00:32:42,200 --> 00:32:44,690 ved hjelp av disse variablene. 564 00:32:44,690 --> 00:32:50,780 Hva jeg skal gjøre er jeg skal lage en ny visning, 565 00:32:50,780 --> 00:32:55,940 og jeg skal nevne utsikten noe sånt som "blog / index," 566 00:32:55,940 --> 00:33:08,480 og jeg kommer til utgangspunktet binde dette - oh, hva jeg skriver? 567 00:33:08,480 --> 00:33:12,910 Hjernen min er et annet sted. 568 00:33:12,910 --> 00:33:16,600 Jeg kommer til å binde innleggene variable til visningen, 569 00:33:16,600 --> 00:33:19,950 slik at måten visningen har tilgang til dette innlegget variabel. 570 00:33:19,950 --> 00:33:26,140 >> Og så nå trenger jeg å lage dette synet, 571 00:33:26,140 --> 00:33:28,500 så her har vi denne mappen som heter "Utsikt," 572 00:33:28,500 --> 00:33:32,150 og første, jeg kommer til å opprette en ny mappe under som heter "Blog." 573 00:33:32,150 --> 00:33:35,810 Dette er fint. På den måten kan vi ha en fin hierarki for våre synspunkter. 574 00:33:35,810 --> 00:33:43,910 Og så kommer jeg til å opprette en ny fil i det som kalles "index.php". 575 00:33:43,910 --> 00:33:45,780 Awesome. 576 00:33:45,780 --> 00:33:52,930 Egentlig, la oss ha dem begge her. 577 00:33:52,930 --> 00:33:56,760 Å gjøre en visning filen er trolig den enkleste delen av alt dette, 578 00:33:56,760 --> 00:33:59,090 og disse er trolig ting du allerede er kjent med. 579 00:33:59,090 --> 00:34:01,240 Vi kommer til å gjøre noe veldig enkelt, 580 00:34:01,240 --> 00:34:05,360 begynne å si: "Min liste over blogginnlegg." 581 00:34:05,360 --> 00:34:14,860 Da kan vi gå gjennom, 582 00:34:14,860 --> 00:34:17,920 og vi kan iterere gjennom innleggene array, 583 00:34:17,920 --> 00:34:21,760 grip hver enkelt innlegg og si noe sånt som - 584 00:34:21,760 --> 00:34:25,290 kanskje legge til en linje 585 00:34:25,290 --> 00:34:42,460 og deretter skrive ut forfatteren og kroppen. 586 00:34:42,460 --> 00:34:44,480 Det gir mening så langt? 587 00:34:44,480 --> 00:34:50,870 Og la oss se om det fungerer. 588 00:34:50,870 --> 00:34:53,489 Ingenting skjedde. 589 00:34:53,489 --> 00:34:55,090 Jeg lurer på hvorfor. 590 00:34:55,090 --> 00:34:58,760 Jeg har savnet en trinn. Veldig dumt av meg. 591 00:34:58,760 --> 00:35:01,640 Jeg opprettet en visning, men jeg har ikke satt visningen som respons, 592 00:35:01,640 --> 00:35:03,190 så du må gjøre en ting til. 593 00:35:03,190 --> 00:35:12,610 Du må gjøre "dette svaret kropp" og sette den til å være utsikten. 594 00:35:12,610 --> 00:35:14,760 Det vi går. 595 00:35:14,760 --> 00:35:17,200 Vi har vår posisjon, og da har vi et innlegg, 596 00:35:17,200 --> 00:35:20,500 og bare for moro skyld, la oss sette inn et annet innlegg 597 00:35:20,500 --> 00:35:23,390 slik at vi kan se en liste. 598 00:35:31,800 --> 00:35:36,650 Og sette inn disse to innleggene, 599 00:35:36,650 --> 00:35:39,500 og nå hvis jeg oppdaterer siden, 600 00:35:39,500 --> 00:35:42,060 vi se alle disse innleggene her. 601 00:35:42,060 --> 00:35:44,250 >> Betyr det fornuftig så langt? 602 00:35:44,250 --> 00:35:46,400 Ja, et spørsmål? Oh, okay. 603 00:35:46,400 --> 00:35:51,440 Som du kan se, har vi vært i stand til å skille alle disse kodene ut 604 00:35:51,440 --> 00:35:53,920 inn i ulike seksjoner, og så kan du se det er mest tydelig med utsikt koden. 605 00:35:53,920 --> 00:35:57,810 Denne filen her som representerer utsikten, 606 00:35:57,810 --> 00:36:01,220 det bare bryr seg om å representere data, visning av data. 607 00:36:01,220 --> 00:36:04,310 Det blir gått noen form for data, og alt den gjør er bare å vise det til deg. 608 00:36:04,310 --> 00:36:07,660 I alle andre deler av koden din, vil du ikke å bekymre deg for noe av det, 609 00:36:07,660 --> 00:36:10,480 og lignende, gjør ditt syn koden har ikke å bekymre deg noe om 610 00:36:10,480 --> 00:36:13,390 hvordan du får tilgang til databasen og så videre og så videre, 611 00:36:13,390 --> 00:36:19,950 noe som er veldig bra og gjør koden mye mer vedlikeholdsvennlig. 612 00:36:19,950 --> 00:36:23,390 Som jeg sa, utsikt, de er dynamikk i at 613 00:36:23,390 --> 00:36:27,080 det er en fil, men det ville generere ulike visninger 614 00:36:27,080 --> 00:36:29,940 basert på de variablene du faktisk passerer i, 615 00:36:29,940 --> 00:36:32,370 og dessuten er det en rekke forskjellige hjelpefunksjoner 616 00:36:32,370 --> 00:36:34,230 som du kan bruke til å hjelpe deg med å skrive koden din raskere, 617 00:36:34,230 --> 00:36:36,320 som jeg skal vise deg i løpet av et sekund. 618 00:36:36,320 --> 00:36:38,050 Yeah. 619 00:36:38,050 --> 00:36:42,490 >> [Student] Så $ 0 er en kontroller, ikke sant? 620 00:36:42,490 --> 00:36:44,000 At andre ting. 621 00:36:44,000 --> 00:36:46,090 Spørsmålet er er $ 0 en kontroller? 622 00:36:46,090 --> 00:36:48,610 $ 0 er en variabel jeg laget akkurat her. 623 00:36:48,610 --> 00:36:51,320 Jeg opprettet en visning først. Jeg tildelt det til noen variable. 624 00:36:51,320 --> 00:36:54,960 Da jeg passerte det inn i denne funksjonen, sett den som kroppen av responsen. 625 00:36:54,960 --> 00:36:57,260 Betyr det fornuftig? 626 00:36:57,260 --> 00:37:02,200 [Student] Så er utsikten :: fabrikken, er utsikten som en klasse 627 00:37:02,200 --> 00:37:06,610 eller et bibliotek [uhørbart] fabrikken funksjon? 628 00:37:06,610 --> 00:37:10,640 Spørsmålet er om utsikten :: fabrikken funksjon, 629 00:37:10,640 --> 00:37:14,020 og i utgangspunktet dette er litt mer objektorientert programmering i hovedsak. 630 00:37:14,020 --> 00:37:18,000 View er utsikten klassen, og den har en metode som kalles "Factory" 631 00:37:18,000 --> 00:37:24,170 og det er en måte å ta tak i objektet som er kåret til "blog / indeks." 632 00:37:24,170 --> 00:37:27,140 Og det er litt mer objektorientert programmering stuff 633 00:37:27,140 --> 00:37:33,010 at jeg ikke kommer til å gå inn her for mye. 634 00:37:33,010 --> 00:37:36,400 Nå åpenbart, ønsker vi å skape nye innlegg, 635 00:37:36,400 --> 00:37:38,790 men vi ønsker ikke å ha for å gjøre det gjennom en database, 636 00:37:38,790 --> 00:37:41,280 så vi kommer til å skape en ny aksjon for å lage et nytt innlegg, 637 00:37:41,280 --> 00:37:43,050 og det er en masse ting vi må gjøre. 638 00:37:43,050 --> 00:37:45,910 >> Det første vi kommer til å gjøre - la oss håndtere disse tingene en etter en. 639 00:37:45,910 --> 00:37:48,320 Det første vi skal gjøre er at vi har fått til å lage et skjema 640 00:37:48,320 --> 00:37:54,460 for å sette inn et nytt innlegg, 641 00:37:54,460 --> 00:37:57,360 men jeg er også tenkt å legge til en ny handling først, 642 00:37:57,360 --> 00:38:01,050 så legger en ny handling er like enkelt som 643 00:38:01,050 --> 00:38:03,490 legge til en ny funksjon med kontrolleren, 644 00:38:03,490 --> 00:38:13,710 og for nå kommer jeg til å gjøre noe helt grunnleggende, 645 00:38:13,710 --> 00:38:20,850 bare ta denne visningen og legge det ut, bare vise det for deg. 646 00:38:20,850 --> 00:38:26,220 Og så nå kommer jeg til å opprette en ny visning fil, 647 00:38:26,220 --> 00:38:33,690 og jeg kommer til å begynne å skrive noen ting. 648 00:38:33,690 --> 00:38:36,540 Hva er fint om Kohana er at de gir en rekke forskjellige hjelpefunksjoner 649 00:38:36,540 --> 00:38:38,790 for deg å skrive visning kode lettere, 650 00:38:38,790 --> 00:38:41,970 og en av disse hjelpefunksjoner eller hjelpemoduler 651 00:38:41,970 --> 00:38:45,860 er rundt skriving former. 652 00:38:45,860 --> 00:38:49,460 For å skrive skjemaer, kan jeg egentlig ikke trenger å direkte skrive noen HTML selv. 653 00:38:49,460 --> 00:38:51,100 Dere har skrevet HTML-skjemaer. 654 00:38:51,100 --> 00:38:54,850 Du vet hvordan det kan være veldig, veldig smertefullt og tungvint å skrive skjemaer. 655 00:38:54,850 --> 00:38:59,970 Det er ikke gøy, så heldigvis, 656 00:38:59,970 --> 00:39:04,860 kan vi i utgangspunktet skrive et skjema ved hjelp Kohana sin 657 00:39:04,860 --> 00:39:11,190 danne hjelpefunksjoner for å gjøre det for oss. 658 00:39:11,190 --> 00:39:17,340 Vi skal i utgangspunktet ha felt for hver eneste ting vi har, 659 00:39:17,340 --> 00:39:23,160 så en for forfattere og ett for de organer. 660 00:39:23,160 --> 00:39:27,090 Vi kommer til å ha en etikett, og vi kommer til å ha en inngang. 661 00:39:37,450 --> 00:39:41,360 >> Og så til slutt, vi kommer til å ha en underkastelse. 662 00:39:49,350 --> 00:39:52,230 Og som du kan se, er dette mye renere å skrive 663 00:39:52,230 --> 00:39:58,150 enn alt det rotete HTML, noe som er litt fint. 664 00:39:58,150 --> 00:40:00,930 Riktignok er det andre web rammeverk som har det enda renere enn det, 665 00:40:00,930 --> 00:40:04,440 men minst dette er bedre enn å skrive HTML selv. 666 00:40:09,400 --> 00:40:11,130 Awesome, så dette er hva du ser. 667 00:40:11,130 --> 00:40:13,530 Det er litt rotete, 668 00:40:13,530 --> 00:40:19,720 så jeg kommer til å legge inn et linjeskift der 669 00:40:19,720 --> 00:40:21,180 for å gjøre det ser litt hyggeligere. 670 00:40:21,180 --> 00:40:23,330 Vel, selvfølgelig, fortsatt ser det virkelig, virkelig ille, men vi er bare fokusert 671 00:40:23,330 --> 00:40:26,050 på funksjonaliteten til nå, og ikke på det estetiske. 672 00:40:26,050 --> 00:40:28,010 Ingen tid til å gjøre alt. 673 00:40:28,010 --> 00:40:30,600 Og som du kan se, nå har vi en super grunnleggende form, 674 00:40:30,600 --> 00:40:32,080 som er litt fint. 675 00:40:32,080 --> 00:40:36,730 Denne koden vil jeg si er renere enn å prøve å skrive en HTML danne selv, 676 00:40:36,730 --> 00:40:40,290 så det er fint. 677 00:40:40,290 --> 00:40:42,030 Hva blir det neste? 678 00:40:42,030 --> 00:40:49,260 Nå trenger vi å gjøre ting med handlingen. 679 00:40:49,260 --> 00:40:51,240 Normalt når du skriver HTML-skjemaer, 680 00:40:51,240 --> 00:40:54,070 du må fortelle den hvor det kommer til å sende skjemaet til. 681 00:40:54,070 --> 00:40:56,050 Som standard i de fleste web-rammeverk, 682 00:40:56,050 --> 00:40:58,200 det sender til nøyaktig samme URL, slik at ting er, 683 00:40:58,200 --> 00:41:01,310 Hvis du sender en GET-forespørsel til / blogg / nye, 684 00:41:01,310 --> 00:41:03,240 det skal vise deg skjemaet, 685 00:41:03,240 --> 00:41:06,810 men hvis du sender et innlegg forespørsel til / blogg / nye med data, 686 00:41:06,810 --> 00:41:10,000 det burde faktisk prøve å redde det innlegget 687 00:41:10,000 --> 00:41:13,300 og gjøre noe med det. 688 00:41:20,630 --> 00:41:22,180 >> Det vi skal gjøre er å 689 00:41:22,180 --> 00:41:25,320 utgangspunktet alt vi trenger å gjøre for å sjekke om det er en post forespørsel eller en GET-forespørsel 690 00:41:25,320 --> 00:41:29,350 er å sjekke hva som er innlegget variablene du kan stille inn. 691 00:41:29,350 --> 00:41:34,560 Og hvis innlegget variabelen er satt, så vi kommer til å prøve og opprette et nytt innlegg. 692 00:41:34,560 --> 00:41:38,440 Igjen, vi bare gjør dette, 693 00:41:38,440 --> 00:41:41,090 og som skaper et nytt innlegg, og vi bokstavelig talt kommer til å 694 00:41:41,090 --> 00:41:51,150 satt sine felt som dette, 695 00:41:51,150 --> 00:41:55,640 og deretter skal vi lagre det. 696 00:41:55,640 --> 00:41:59,200 Og så kommer jeg til å omdirigere 697 00:41:59,200 --> 00:42:07,660 til oversiktssiden, slik at de kan se vår liste over innlegg igjen. 698 00:42:07,660 --> 00:42:09,620 La oss prøve det. 699 00:42:09,620 --> 00:42:15,160 Jeg vil si: "Brandon" 700 00:42:15,160 --> 00:42:18,140 og deretter sende innlegget, og hvis alt går bra, 701 00:42:18,140 --> 00:42:21,390 som du kan se, det omdirigert meg til indekssiden, 702 00:42:21,390 --> 00:42:24,140 og hvis jeg blar til bunnen, har vi en nylig satt inn innlegget. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Ja, spørsmålet. 705 00:42:28,430 --> 00:42:31,760 >> [Student] Hva om du hadde skrevet akkurat det samme 706 00:42:31,760 --> 00:42:33,380 du skrev før? 707 00:42:33,380 --> 00:42:36,950 Betyr det må du kontrollere at du ikke har duplisert 708 00:42:36,950 --> 00:42:38,810 samme innlevering? 709 00:42:38,810 --> 00:42:41,660 Være standard, nei, fordi som standard - 710 00:42:41,660 --> 00:42:46,470 beklager, er spørsmålet om du går inn i nøyaktig samme data i form 711 00:42:46,470 --> 00:42:50,180 og sende det, vil det tillate deg å sette inn et duplikat objekt, 712 00:42:50,180 --> 00:42:52,550 En kopi av oppføringen, egentlig? 713 00:42:52,550 --> 00:42:54,070 Akkurat nå, ja, det vil tillate deg å gjøre det, 714 00:42:54,070 --> 00:42:58,860 fordi i databaser er det helt gyldig å ha helt like rader, 715 00:42:58,860 --> 00:43:02,260 men hvis det er en bekymring, så kan du legge valideringer, for eksempel, 716 00:43:02,260 --> 00:43:06,430 å sørge for at hvis dette er akkurat det samme som noe som allerede eksisterer, 717 00:43:06,430 --> 00:43:08,720 så si at det er et ugyldig objekt, 718 00:43:08,720 --> 00:43:11,200 og så kan du selv spesifisere ditt feilmelding 719 00:43:11,200 --> 00:43:14,390 og si, "Ugyldig fordi dette allerede eksisterer" eller noe sånt. 720 00:43:14,390 --> 00:43:22,420 Men i dette tilfellet, kan jeg bare lage noe duplikat. 721 00:43:22,420 --> 00:43:26,010 Nå la oss prøve og legge til noen valideringer. 722 00:43:26,010 --> 00:43:30,400 Problemet med dette er akkurat nå at 723 00:43:30,400 --> 00:43:34,220 Jeg kunne bokstavelig talt sende en helt blank innlegg. 724 00:43:34,220 --> 00:43:37,500 Jeg kan klikke på denne knappen akkurat nå, og det vi går. 725 00:43:37,500 --> 00:43:40,290 Du kan virkelig ikke se det, men denne ekstra linje her 726 00:43:40,290 --> 00:43:43,830 indikerer at jeg bokstavelig talt har et nytt innlegg. 727 00:43:43,830 --> 00:43:46,050 Den har bare en blank forfatter og en tom kropp, 728 00:43:46,050 --> 00:43:48,630 og vi ønsker ikke å tillate folk å gjøre det. 729 00:43:48,630 --> 00:43:52,550 Dette er hvor valideringen kommer i. 730 00:43:52,550 --> 00:43:57,540 >> Jeg kan gå til min modell objekt, 731 00:43:57,540 --> 00:43:59,530 og nå kan jeg legge til en ny funksjon som angir 732 00:43:59,530 --> 00:44:02,000 hva validering regler jeg bør legge til denne modellen 733 00:44:02,000 --> 00:44:06,840 å sørge for at det er gyldig eller å spesifisere hva betyr det å være en gyldig innlegget? 734 00:44:06,840 --> 00:44:10,210 Og jeg vil si at det er bare en gyldig innlegg om både forfatteren og kropp 735 00:44:10,210 --> 00:44:15,150 er ikke tom, og dette er hvordan du gjør det i Kohana. 736 00:44:15,150 --> 00:44:18,750 Du oppretter en ny funksjon kalt "Rules", 737 00:44:18,750 --> 00:44:20,210 og så er du i utgangspunktet returnere en assosiativ array 738 00:44:20,210 --> 00:44:24,230 som definerer valideringsregler for dette objektet. 739 00:44:24,230 --> 00:44:27,530 Vi kommer til å returnere array, og deretter hva vi skal gjøre er 740 00:44:27,530 --> 00:44:32,820 sier "forfatter", det går til en matrise, 741 00:44:32,820 --> 00:44:37,720 som går til en annen matrise som kalles "ikke er tom." 742 00:44:37,720 --> 00:44:41,480 Og så kommer jeg til å si "kropp." 743 00:44:50,980 --> 00:44:54,120 Ok, og syntaksen for dette og struktur for dette 744 00:44:54,120 --> 00:44:56,530 kan se litt klumpete og litt komplisert. 745 00:44:56,530 --> 00:44:59,330 Hvis du leser dokumentasjonen, er det ganske enkelt å finne ut, 746 00:44:59,330 --> 00:45:02,500 Men egentlig er dette hva du må gjøre for å spesifisere 747 00:45:02,500 --> 00:45:04,130 noen valideringsregler, og det er mange forskjellige regler 748 00:45:04,130 --> 00:45:06,810 at Kohana vil gi deg gratis, som du kan legge til regler for å si 749 00:45:06,810 --> 00:45:08,410 den må være i det minste denne lengden. 750 00:45:08,410 --> 00:45:11,800 Kanskje det må være numerisk. Kanskje det må være alfanumerisk. 751 00:45:11,800 --> 00:45:14,410 Kanskje har det å være på det meste denne lengden, så videre og så videre. 752 00:45:14,410 --> 00:45:17,730 Det finnes mange forskjellige regler som Kohana gir for deg, 753 00:45:17,730 --> 00:45:19,610 og du kan gå på deres hjemmeside, se på dokumentasjon, 754 00:45:19,610 --> 00:45:23,150 og du kan se alle de forskjellige tingene du kan gjøre. 755 00:45:23,150 --> 00:45:25,650 >> Men dette er alt jeg har å gjøre, 756 00:45:25,650 --> 00:45:30,490 og nå la oss se hva som skjer 757 00:45:30,490 --> 00:45:34,060 hvis jeg sender inn en blank innlegg. 758 00:45:34,060 --> 00:45:36,960 Hva kommer til å skje? Åh, nei, jeg får en feilmelding. 759 00:45:36,960 --> 00:45:39,440 Jeg får en validerings unntak. 760 00:45:39,440 --> 00:45:41,070 Vel, det er bra. 761 00:45:41,070 --> 00:45:43,200 Det fortalte meg at min modell er ugyldig, 762 00:45:43,200 --> 00:45:45,780 men jeg ønsker ikke å vise et unntak 763 00:45:45,780 --> 00:45:48,720 til brukerne mine når de prøver å sende inn noe ugyldig, ikke sant? 764 00:45:48,720 --> 00:45:51,560 Jeg ønsker å gi dem noen form for vennligere feilmelding 765 00:45:51,560 --> 00:45:53,610 når noe går galt. 766 00:45:53,610 --> 00:46:01,830 Hva vi skal gjøre er at vi kommer til å 767 00:46:01,830 --> 00:46:04,490 pakk alt i et forsøk fangst loop. 768 00:46:04,490 --> 00:46:06,750 Egentlig tror jeg dette er også noe du ikke har lært ennå 769 00:46:06,750 --> 00:46:10,820 i CS50, fordi C, programmeringsspråket C, 770 00:46:10,820 --> 00:46:14,000 ikke har unntak, men nesten hver eneste andre språk 771 00:46:14,000 --> 00:46:16,700 har unntak, så veldig, veldig kort øyeblikk, 772 00:46:16,700 --> 00:46:19,430 et unntak er noe som en del av koden kan 773 00:46:19,430 --> 00:46:21,430 kaste et unntak når noe går galt, 774 00:46:21,430 --> 00:46:23,410 men da kanskje noen annen del av koden høyere opp 775 00:46:23,410 --> 00:46:25,810 kan fange det unntak, og gjøre noe med det. 776 00:46:25,810 --> 00:46:27,710 >> For eksempel, i dette tilfellet 777 00:46:27,710 --> 00:46:29,940 stykke kode som prøver å redde en modell, 778 00:46:29,940 --> 00:46:33,170 det bekrefter modellen, og hvis det står: "Ok, er denne modellen ugyldig," 779 00:46:33,170 --> 00:46:36,150 det kommer til å kaste et unntak, og dette er slags tilsvarer 780 00:46:36,150 --> 00:46:39,870 i C du kan returnere en -1 eller noe sånt. 781 00:46:39,870 --> 00:46:42,320 Og så for meg, denne funksjonen, min kode 782 00:46:42,320 --> 00:46:46,310 på et høyere nivå, kan jeg prøve og fange dette unntaket 783 00:46:46,310 --> 00:46:49,330 og i utgangspunktet sier: "Ok, hvis jeg fange unntak, hva skal jeg gjøre?" 784 00:46:49,330 --> 00:46:51,570 Eller jeg kunne velge ikke å fange det unntak og la noen høyere opp 785 00:46:51,570 --> 00:46:54,400 fange unntak, eller hvis ingen fanger den, 786 00:46:54,400 --> 00:46:56,820 da er hele programmet krasjer og sier, 787 00:46:56,820 --> 00:46:59,170 "Noe gikk galt, og jeg kunne ikke håndtere det." 788 00:46:59,170 --> 00:47:04,490 >> Men det vi gjør er du vikle et stykke kode i en try-blokk, 789 00:47:04,490 --> 00:47:09,030 og deretter du også legge til noe som kalles en catch-blokken, 790 00:47:09,030 --> 00:47:17,300 som er den slags kode som vil prøve og fange unntak som kan oppstå. 791 00:47:17,300 --> 00:47:20,430 Og så hvis jeg tar denne spesielle unntaket 792 00:47:20,430 --> 00:47:23,110 eller ugyldig unntak, så hva jeg skal gjøre er 793 00:47:23,110 --> 00:47:31,210 Jeg kommer til å sette de feil - jeg tror det er hvordan jeg gjør det - 794 00:47:31,210 --> 00:47:35,370 og jeg kommer til å sette opp feilene til et objekt. 795 00:47:35,370 --> 00:47:40,920 Og hva jeg skal gjøre da er hvis den treffer dette unntaket, 796 00:47:40,920 --> 00:47:43,090 det er ikke til å omdirigere, og hvis den ikke omdirigere, 797 00:47:43,090 --> 00:47:46,160 det kommer til å komme ut av den hvis bloggen 798 00:47:46,160 --> 00:47:49,920 og traff denne bloggen / nytt, som er ønsker jeg ønsker å gjøre. 799 00:47:49,920 --> 00:47:53,190 Hvis det er en feil, så jeg ønsker å gå tilbake til skjemaet 800 00:47:53,190 --> 00:47:55,100 og vise disse feilene. 801 00:47:55,100 --> 00:48:00,780 Nå hva jeg ønsker å gjøre er jeg ønsker å passere i disse feilene 802 00:48:00,780 --> 00:48:07,010 til visningen. 803 00:48:07,010 --> 00:48:10,360 Ok, jeg tror jeg har utsikt rett her, 804 00:48:10,360 --> 00:48:14,660 og i utgangspunktet ønsker jeg å vise disse feilene hvis de eksisterer. 805 00:48:14,660 --> 00:48:19,740 Før jeg skrive HTML for det, kommer jeg til å virkelig raskt 806 00:48:19,740 --> 00:48:21,720 vise deg hva strukturen i denne feil variable ser ut, 807 00:48:21,720 --> 00:48:23,080 og dette er en god praksis generelt. 808 00:48:23,080 --> 00:48:25,070 Mange ganger får du noe tilbake fra noen metode, 809 00:48:25,070 --> 00:48:27,250 noen funksjon i web rammeverk, 810 00:48:27,250 --> 00:48:29,410 og du ikke vet hva den variable ser ut, 811 00:48:29,410 --> 00:48:31,210 slik at du ikke vet hvordan du arbeider med det. 812 00:48:31,210 --> 00:48:37,790 Jeg kommer til å bruke en utskrifts r metode for å i utgangspunktet skrive den ut. 813 00:48:37,790 --> 00:48:41,100 >> Og som du kan se, forteller det meg at det er en førsteamanuensis array, 814 00:48:41,100 --> 00:48:44,880 og du har en nøkkel, forfatter, poeng til denne strengen, 815 00:48:44,880 --> 00:48:47,050 Forfatteren må ikke være tomt, og en annen tast, kropp, 816 00:48:47,050 --> 00:48:49,680 peker på en annen streng, kroppen må ikke være tom. 817 00:48:49,680 --> 00:48:52,130 Jeg er liksom greit, kult. 818 00:48:52,130 --> 00:48:56,230 Så jeg kan reagere gjennom matrisen og skrive ut hver enkelt melding. 819 00:48:56,230 --> 00:49:02,150 Det er i utgangspunktet som en assosiativ array med en haug med meldinger. 820 00:49:02,150 --> 00:49:13,500 Det jeg skal gjøre er å "Dersom feil," 821 00:49:13,500 --> 00:49:17,140 og jeg kommer til å lage en ikke-sorterte liste, 822 00:49:17,140 --> 00:49:20,860 og jeg kommer til å reagere gjennom alle feilene. 823 00:49:33,730 --> 00:49:38,710 Og dette, og nå skal jeg prøve å sende dette igjen, 824 00:49:38,710 --> 00:49:41,200 og la oss se hva vi får. 825 00:49:41,200 --> 00:49:45,370 Nå får vi denne fin liste over feil, 826 00:49:45,370 --> 00:49:48,630 og dette er fortsatt ganske stygg, men dette kan selvsagt være formatert til å se fint ut, 827 00:49:48,630 --> 00:49:51,620 men den grunnleggende ideen er bare i noen få linjer med kode, 828 00:49:51,620 --> 00:49:53,720 vi var i stand til å validere vår modell, 829 00:49:53,720 --> 00:49:56,510 sørge for at visse felt var ikke tom, 830 00:49:56,510 --> 00:49:59,740 og hvis noe gikk galt, og deretter returnere en slags feilmelding 831 00:49:59,740 --> 00:50:01,760 Jeg kunne deretter presentere tilbake til brukeren. 832 00:50:01,760 --> 00:50:03,910 Du kan også tilpasse validering din 833 00:50:03,910 --> 00:50:07,590 slik at du faktisk kan ha en feilmelding 834 00:50:07,590 --> 00:50:09,620 som er mer spesifikke for programmet eller noe sånt. 835 00:50:09,620 --> 00:50:14,600 Alt som er generelt tilpasses. 836 00:50:14,600 --> 00:50:17,150 >> Dessverre, vi kjører ut av tid, 837 00:50:17,150 --> 00:50:20,040 så jeg er nødt til å kutte av live koding økten her. 838 00:50:20,040 --> 00:50:22,980 Det finnes en haug med andre funksjoner som jeg ønsker å demonstrere for deg 839 00:50:22,980 --> 00:50:25,650 i dette eksemplet. 840 00:50:25,650 --> 00:50:27,620 For eksempel kan du legge til maler til nettstedet ditt, 841 00:50:27,620 --> 00:50:31,110 så kanskje det er en slags HTML-kode som du ønsker å søke 842 00:50:31,110 --> 00:50:35,190 til hver enkelt side på nettstedet ditt, og i stedet for å lime det 843 00:50:35,190 --> 00:50:40,630 i hver enkelt visning fil du har, som åpenbart ville være en dårlig praksis, 844 00:50:40,630 --> 00:50:43,020 kan du i utgangspunktet definere disse malene, 845 00:50:43,020 --> 00:50:46,660 og deretter i kontrolleren si: "OK, jeg bruker denne malen." 846 00:50:46,660 --> 00:50:50,130 "Har alle mine synspunkter bruke denne malen." 847 00:50:50,130 --> 00:50:52,470 Og en siste ting jeg ønsker å vise dere så vel 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 i utgangspunktet tror jeg dere har sikkert sett i CS50 - 850 00:51:01,430 --> 00:51:03,770 Jeg tror David Malan trolig snakket om hvordan du kan vanligvis injiserer 851 00:51:03,770 --> 00:51:08,040 Javascript-kode inn - har du snakket om dette? 852 00:51:08,040 --> 00:51:10,220 Kanskje? Kanskje ikke? 853 00:51:10,220 --> 00:51:12,670 >> Men mange ganger kan du injisere ondsinnet Javascript-kode 854 00:51:12,670 --> 00:51:15,630 inn i noens database, og hvis de ikke unnslippe det skikkelig, 855 00:51:15,630 --> 00:51:18,280 så når de presenterer at data tilbake til brukeren, 856 00:51:18,280 --> 00:51:21,310 så kan det kjøre en slags tilfeldig Javascript-kode du ikke vil skal skje, 857 00:51:21,310 --> 00:51:23,050 og jeg hadde tenkt å demonstrere hvordan du vil gjøre det innen Kohana. 858 00:51:23,050 --> 00:51:25,380 Det er faktisk veldig, veldig enkelt. 859 00:51:25,380 --> 00:51:31,920 Jeg kunne gjøre det akkurat nå i to sekunder bokstavelig. 860 00:51:31,920 --> 00:51:34,560 Alt du trenger å gjøre er i utgangspunktet vikle disse tingene 861 00:51:34,560 --> 00:51:46,920 i dette som kalles HTML enheter. 862 00:51:46,920 --> 00:51:51,180 Og det vil automatisk unnslippe alle tegnene riktig 863 00:51:51,180 --> 00:51:54,730 og pass på at du ikke får dette problemet. 864 00:51:54,730 --> 00:51:57,220 [Student] Du spelt den første testen feil. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Oh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Ok, det er alt jeg hadde å dele med dere for i dag. 867 00:52:06,420 --> 00:52:09,930 Disse lysbildene kommer til å bli lagt inn, men disse er som regel 868 00:52:09,930 --> 00:52:13,900 de eneste ressursene du bør virkelig trenger å komme i gang med Kohana. 869 00:52:13,900 --> 00:52:16,770 Du kan gå til nettstedet. De har en bruksanvisning, og de har også en API explorer. 870 00:52:16,770 --> 00:52:20,630 Vi kan utforske alle de forskjellige funksjonene og hjelpefunksjoner de har for deg. 871 00:52:20,630 --> 00:52:22,070 De har generelt nok informasjon på nettsiden 872 00:52:22,070 --> 00:52:25,310 som du kan bruke til å komme i gang og komme i gang med Kohana. 873 00:52:25,310 --> 00:52:30,840 Det er ikke så mange tutorials, tror jeg, for Kohana, utenfor 874 00:52:30,840 --> 00:52:33,880 hva de har på nettsiden her, så dette er trolig det beste alternativet. 875 00:52:33,880 --> 00:52:35,600 Men hvis du ønsker å gå med web rammeverk 876 00:52:35,600 --> 00:52:37,120 og du ikke ønsker å ha til å plukke opp et nytt språk, 877 00:52:37,120 --> 00:52:39,780 og du vil ha noe som er forholdsvis lett og har en enkel læringskurve, 878 00:52:39,780 --> 00:52:41,570 Jeg vil definitivt foreslår Kohana. 879 00:52:41,570 --> 00:52:44,040 Det er sannsynligvis det beste tilbudet for det. 880 00:52:44,040 --> 00:52:46,830 Det morsomme, skjønt, er hvis vi bruker Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 vi kunne ha kopiert det vi nettopp gjorde 882 00:52:48,550 --> 00:52:51,430 og sannsynligvis mer på under tre minutter. 883 00:52:51,430 --> 00:52:54,710 Ingen spøk, men å lære Ruby on Rails tar mye lenger 884 00:52:54,710 --> 00:52:56,780 enn det ville ta å lære Kohana. 885 00:52:56,780 --> 00:52:58,840 Det er i utgangspunktet ditt valg om hva du ønsker å velge å lære, 886 00:52:58,840 --> 00:53:01,260 men hvis du ønsker å komme i gang raskt, 887 00:53:01,260 --> 00:53:03,870 Kohana er definitivt et svært godt valg. 888 00:53:03,870 --> 00:53:06,730 >> Noen siste spørsmål før vi avslutter? Ja. 889 00:53:06,730 --> 00:53:08,020 [Student] Hvordan ville vi integrere at 890 00:53:08,020 --> 00:53:13,120 i en CSS rammeverk som du brukte da du ble instruere? 891 00:53:13,120 --> 00:53:16,700 Spørsmålet er hvordan vi vil integrere det med en CSS rammeverk? 892 00:53:16,700 --> 00:53:18,740 Hva vi ville sannsynligvis gjøre er vi ville trolig omfatte 893 00:53:18,740 --> 00:53:21,090 en ny mappe hvor vi ville dumpe alle våre CSS-filer, 894 00:53:21,090 --> 00:53:23,010 og da ville vi også legge til en ny mal. 895 00:53:23,010 --> 00:53:26,090 I malen vil vi inkludere disse CSS-filer 896 00:53:26,090 --> 00:53:28,410 å sørge for at de er referert på hver enkelt side, 897 00:53:28,410 --> 00:53:32,220 og så når du faktisk skriver HTML, 898 00:53:32,220 --> 00:53:34,010 du bare legge til passende klasser og whatnot, 899 00:53:34,010 --> 00:53:36,100 og for eksempel når du bruker noe sånt skjema 900 00:53:36,100 --> 00:53:40,710 helper funksjon, kan du legge til flere parametre etterpå 901 00:53:40,710 --> 00:53:42,830 å angi hvilke klasser du ønsker å være knyttet til ulike ting 902 00:53:42,830 --> 00:53:47,820 slik at de kan style det ordentlig, og det er i utgangspunktet hvordan du vil gå. 903 00:53:47,820 --> 00:53:50,100 >> Andre spørsmål? 904 00:53:50,100 --> 00:53:52,090 Awesome. 905 00:53:52,090 --> 00:53:58,540 Takk for din tid, og takk for at du kom. 906 00:53:58,540 --> 00:54:05,170 Jeg hadde ikke tenkt å legge veldig mye annet, 907 00:54:05,170 --> 00:54:08,560 men en virkelig rask ting er at vi ikke har en link 908 00:54:08,560 --> 00:54:12,590 til formen. 909 00:54:12,590 --> 00:54:14,310 Veldig dumt. 910 00:54:14,310 --> 00:54:20,110 La oss legge til en - faktisk i visningen, blogg, indeks, 911 00:54:20,110 --> 00:54:23,890 la oss virkelig raskt legge en lenke som går til en ny side, 912 00:54:23,890 --> 00:54:26,770 siden der vi kan sette inn et nytt innlegg. 913 00:54:26,770 --> 00:54:29,950 Vi kommer til å gjøre dette. 914 00:54:29,950 --> 00:54:34,020 Hva er fint er det er hele denne gruppen av HTML-hjelpefunksjoner 915 00:54:34,020 --> 00:54:37,090 som gjør forskjellige ting for deg, slik at du allerede så enhetene 916 00:54:37,090 --> 00:54:41,980 fungere her, men de har også en funksjon som heter "anker", 917 00:54:41,980 --> 00:54:45,400 som du kan skrive i bloggen / ny 918 00:54:45,400 --> 00:54:49,550 og si, "Legg inn en ny blogg." 919 00:54:49,550 --> 00:54:51,850 Og det ville skape den koblingen for deg, 920 00:54:51,850 --> 00:54:54,120 og dette virker veldig trivielt å gjøre, men dette er fint, 921 00:54:54,120 --> 00:54:58,720 fordi anta at du skal flytte nettstedet ditt fra en domene til et annet. 922 00:54:58,720 --> 00:55:01,390 Og hvis du bare skrev ut nettadressene selv, 923 00:55:01,390 --> 00:55:04,350 så du ville ha til å endre alle nettadressene. 924 00:55:04,350 --> 00:55:06,850 Eller kanskje du flyttet den fra en undermappe til en annen undermappe. 925 00:55:06,850 --> 00:55:08,790 Du ville ha til å endre alle disse webadressene selv, 926 00:55:08,790 --> 00:55:12,180 og det er ikke noe gøy. 927 00:55:12,180 --> 00:55:14,510 Du kan bruke denne anker rett her, 928 00:55:14,510 --> 00:55:18,950 og du kan endre domenet eller undermappen prefiks 929 00:55:18,950 --> 00:55:20,640 i konfigurasjonsfilen én gang, 930 00:55:20,640 --> 00:55:22,980 og da vil det gjelde som overalt, og dette er, igjen, 931 00:55:22,980 --> 00:55:26,930 et flott eksempel på ikke gjenta deg selv, tørke koden din ut. 932 00:55:26,930 --> 00:55:30,370 Uansett hvor du gjentar deg selv, prøve og trekke i noen slags konfigurasjonsfilen 933 00:55:30,370 --> 00:55:34,160 eller til en annen funksjon og har den håndtere det for deg. 934 00:55:34,160 --> 00:55:42,930 >> Og den aller siste ting som jeg ønsket å vise deg var 935 00:55:42,930 --> 00:55:50,250 Anta at vi er tilbake på dette innlegget, og jeg hadde komponert noen virkelig lange essay, 936 00:55:50,250 --> 00:55:52,670 men jeg glemte å ta min forfatter. 937 00:55:52,670 --> 00:55:55,210 Nå når jeg klikker på "Send Post," 938 00:55:55,210 --> 00:55:57,270 Jeg mistet alt. 939 00:55:57,270 --> 00:56:00,000 Nei! Virkelig trist. 940 00:56:00,000 --> 00:56:03,870 Så hvordan kan du takle det? 941 00:56:03,870 --> 00:56:06,070 Dette er hva vi gjør. 942 00:56:06,070 --> 00:56:09,340 Hva vi gjør er her for disse innsats og tekst områdefunksjoner, 943 00:56:09,340 --> 00:56:12,700 hvis vi inkluderer andre parameter, så verdien av at andre parameter 944 00:56:12,700 --> 00:56:16,620 kommer til å være det feltet kommer til å være utgangspunktet befolket med. 945 00:56:16,620 --> 00:56:23,570 Det vi kan gjøre er i bloggen vår controller, 946 00:56:23,570 --> 00:56:25,360 vi kunne binde en annen variabel. 947 00:56:25,360 --> 00:56:27,050 Kall det "verdier" kanskje. 948 00:56:27,050 --> 00:56:30,620 Og pass i posten array, bokstavelig talt. 949 00:56:30,620 --> 00:56:32,620 Det betyr at hvis valideringen mislyktes, 950 00:56:32,620 --> 00:56:36,570 pass til meg innlegget array som jeg sendte fra den siste forespørselen, 951 00:56:36,570 --> 00:56:38,420 og på den måten jeg kan bruke verdiene fra min siste innlevering 952 00:56:38,420 --> 00:56:44,540 å befolke feltene. 953 00:56:44,540 --> 00:56:49,600 Nå kan jeg gjøre noe sånt verdier forfatter 954 00:56:49,600 --> 00:56:55,180 og verdier kroppen, og på den måten nå hvis jeg gjør noen tilfeldige ting 955 00:56:55,180 --> 00:57:01,490 og klikk på "Send innlegg", så den forblir der. 956 00:57:01,490 --> 00:57:03,830 Men vi kommer til å kjøre inn i et annet problem. 957 00:57:03,830 --> 00:57:07,670 Det fungerer, men hvis jeg går til siden den aller første gangen, 958 00:57:07,670 --> 00:57:09,720 det kommer til å krasje, og det er fordi de aller første gang 959 00:57:09,720 --> 00:57:13,730 vi går til siden, har dette innlegget variabelen ikke er definert ennå. 960 00:57:13,730 --> 00:57:18,170 Det er null. Det eksisterer ikke. 961 00:57:18,170 --> 00:57:21,630 >> Og hva vi ønsker å si er hvis denne nøkkelen finnes, 962 00:57:21,630 --> 00:57:27,750 deretter returnere verdien av denne tabellen, 963 00:57:27,750 --> 00:57:30,450 men hvis nøkkelen ikke eksisterer, deretter returnere en tom streng. 964 00:57:30,450 --> 00:57:32,150 Det er den funksjonaliteten vi ønsker her. 965 00:57:32,150 --> 00:57:34,690 Vi ønsker å sjekke om nøkkelen finnes før du prøver å få tilgang til array, 966 00:57:34,690 --> 00:57:36,580 og heldigvis nok, 967 00:57:36,580 --> 00:57:38,570 Kohana gir oss også et hjelpefunksjon for det. 968 00:57:38,570 --> 00:57:41,040 De har hele denne pakke med funksjoner 969 00:57:41,040 --> 00:57:43,660 under navnet ARR, en forkortelse for array, 970 00:57:43,660 --> 00:57:45,800 og de har en funksjon som heter "få" 971 00:57:45,800 --> 00:57:48,690 og du kan passere i matrisen, 972 00:57:48,690 --> 00:57:50,740 og du kan passere i navnet på nøkkelen. 973 00:57:50,740 --> 00:57:54,330 Så hva det vil gjøre i utgangspunktet er det vil forsøke å få den nøkkelen, 974 00:57:54,330 --> 00:57:56,470 men hvis den tasten ikke finnes i matrisen, 975 00:57:56,470 --> 00:58:00,900 så vil det returnere tom, eller vi kan også spesifisere en standard, tror jeg, 976 00:58:00,900 --> 00:58:03,500 som er fint. 977 00:58:09,740 --> 00:58:13,150 Nå hvis vi gjør det samme igjen, 978 00:58:13,150 --> 00:58:15,970 så ser du nå det fungerer i første omgang, 979 00:58:15,970 --> 00:58:18,080 og igjen, når vi taster inn noen tilfeldige ting 980 00:58:18,080 --> 00:58:23,210 og prøve og sende inn, så den forblir der. 981 00:58:23,210 --> 00:58:31,640 >> Og jeg tror jeg kan også vise deg hvordan du legger til en mal veldig raskt. 982 00:58:31,640 --> 00:58:36,140 Hva vi kan gjøre først er kan vi legge en ny visning som heter "template.php" 983 00:58:36,140 --> 00:58:38,890 innenfor mappevisninger, 984 00:58:38,890 --> 00:58:44,730 og hva jeg skal gjøre er jeg kommer til å skrive ut noe som kalles "innhold", 985 00:58:44,730 --> 00:58:49,130 som kommer til å være min hovedinnhold. 986 00:58:49,130 --> 00:58:51,380 Og kanskje helt nederst jeg kommer til å legge til, si, 987 00:58:51,380 --> 00:58:53,340 copyright. 988 00:58:53,340 --> 00:58:56,150 [Uhørbart student spørsmål] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Kanskje dette er en super enkel mal jeg ønsker å bruke. 990 00:58:58,050 --> 00:59:02,840 Jeg ønsker å ha en mappe med min opphavsrett på hver enkelt side, 991 00:59:02,840 --> 00:59:05,560 og nå hva jeg skal gjøre i løpet av min controller 992 00:59:05,560 --> 00:59:07,740 er nå i stedet for å si: "strekker Controller" 993 00:59:07,740 --> 00:59:11,870 Jeg kommer til å si, "strekker Controller_Template," 994 00:59:11,870 --> 00:59:15,890 og nå i stedet for å si: "svar kropp er lik dette synet," 995 00:59:15,890 --> 00:59:24,110 Jeg kommer til å si: "denne malen innholdet er -" 996 00:59:24,110 --> 00:59:27,690 og jeg tror - setter jeg et likhetstegn? 997 00:59:27,690 --> 00:59:32,710 Jeg glemmer. Ja, jeg tenkte meg det. 998 00:59:32,710 --> 00:59:37,710 Og nå satt jeg at innholdet variabel til lik visningen. 999 00:59:37,710 --> 00:59:40,960 Jeg kan gjøre det samme her. 1000 00:59:49,620 --> 00:59:57,170 Og nå hvis jeg oppdaterer, kan du se nå dette opphavsrett er lagt der, 1001 00:59:57,170 --> 01:00:00,350 og bare gjøre noen tilfeldige innlegg, 1002 01:00:00,350 --> 01:00:06,760 og da, igjen, skal du se at opphavsretten er helt nederst på siden. 1003 01:00:06,760 --> 01:00:10,730 >> Flott. Det er alt jeg ville vise dere. 1004 01:00:10,730 --> 01:00:14,970 [Applaus] 1005 01:00:14,970 --> 01:00:18,950 Eventuelle spørsmål? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]