[Seminár] [Kohan: Ľahká PHP Framework] [Brandon Liu] [Harvard University] [To je CS50.] [CS50.TV] Ahoj všetci. Moje meno je Brandon. Som junior tu na vysokej škole robiť informatiky, a dnes budeme hovoriť o tom, Kohan, čo je framework pre vývoj webových PHP. Dnes sa bude žiť kódovanie seminár, tak som v podstate tráviť 5-10 minút vysvetľovať, čo Kohan je, a potom som doslova stavať super jednoduchý blog pre vás tu doslova od nuly. Chystáme sa stiahnuť kód z webových stránok Kohan, a budeme sa začať stavať blog, a dúfajme, že to bude veľmi poučné, pretože budete vidieť snáď možno budem robiť nejaké chyby, a uvidíte ma dostať z nich, alebo uvidíte môj myšlienkový proces, ako som stavať prostredníctvom tohto blogu, a medzitým, budete tiež zoznámiť s rámcom sám. Dúfajme, že to bude veľmi poučné cvičenia. Po prvé, čo presne je rámec? Ak ste boli s CS50 tak ďaleko, ste naozaj pracoval s niektorou Zatiaľ rámca, a to je to. Vy ste asi urobil jeden vývoj webových pset už, a povedzme, že budete aj naďalej vytvárať webové stránky a udržať vytváranie webových stránok. Začnete všímať pár vecí. Prvá vec, ktorú si všimnete, je, že ste pravdepodobne robiť rovnaké veci znovu a znovu po celú dobu, veci, ako je čistenie užívateľských vstupných dát, veci, ako je organizovanie súborov určitým spôsobom. Ďalšia vec, ktorú budete tiež pravdepodobne všimnete, je, že váš kód môže začať byť veľmi, veľmi chaotický, a môžete nechať chaotický a len veľmi ťažké ju udržať, alebo môžete začať štruktúrovať svoj kód a robiť to modulárne v niektorých spôsoboch, ako sa to lepšie spravovateľný. To je miesto, kde webových rámcov v podstate prišiel dovnútra Títo ľudia, ktorí sa postavili veľa webových stránok, povedali, "Nepotrebujeme, aby znovu to zakaždým sme sa vytvoriť webové stránky." "Prečo sme len urobiť balíček, ktorý robí všetky tieto veci za vás každý, keď chcete vytvoriť webové stránky? " A tak, že keď urobíte nové webové stránky, môžete sústrediť len na to, čo presne tento konkrétny webové stránky je asi. Nemusíte opakovať všetky rôzne konfigurácie a separácia kódov a prepisovanie kódu že budete často musieť urobiť, keď ste robiť webové stránky. Myšlienka je, že rámec umožňuje napísať kód na vyššiu úroveň bez toho aby sa museli starať o podrobnosti na nižšej úrovni. Detail nižšej úrovni by mohlo byť niečo ako zaoberajúca sa čistením užívateľských vstupných dát. To je niečo, čo by ste mali naozaj obávať. Tie by sa mali zamerať na to, čo vaše webové rozdelenie je vlastne o To eliminuje veľa často používaný kód. Je to architektúra pre váš projekt. Najpopulárnejší z nich bude Model-View-Controller, ktoré budem hovoriť o tom, v sekunde. A mnohokrát sa tieto rámce stelesňujú súbor postupov, pravidiel a osvedčených postupov pre vás na použitie tak, že keď prijme web rámec musíte napísať kód v určitým spôsobom, a to je všeobecne dohodnuté súboru zásad komunitou, ktorá je všeobecne prijímaný byť dobrý spôsob písania kódu. To je váš kód lepšie spravovateľný, viac použiteľné, a tak ďalej a tak ďalej. A konečne, čo chcem zdôrazniť, o rámcoch proti knižníc je táto predstava o opaku kontroly, a to je to. Rozdiel medzi knižnicou a rámca je, že s knižnicou ste stále písať hlavný program, a ste trochu vyvolanie knižnicu a vyzvala knižnice urobiť niečo pre vás. Rozdiel medzi knižnicou a rámcom je, že rámec začína s kontrolou, a to vyvolá svoj kód, takže si môžete myslieť na to, ako - to je dôvod, prečo sa to volá rámec - rámec stanovuje tento rámec a štruktúru kódu, a vyplnenie dier, a to bude zrejmejšie v druhom keď vidíte, aby som začal písať kód v kontexte rámca. Uvidíte, že som vyplňovanie medzier, a rámec je druh konania všetky pohyblivé diely, a musím dať kúsky na správnych miestach. Dnes budeme hovoriť o Kohan, , Ktorý je jedným z mnohých PHP rámcov. Existujú webové rámca, a tam sú tie prakticky v každom jazyku, a zachytil som Kohan Kohan, pretože je pravdepodobne a všeobecne uznávaný ako najjednoduchší PHP rámca vyzdvihnúť. Je to najľahšia. Existujú aj iné tie, ktoré tam prichádzajú s mnohými, mnohými ďalšími funkciami, ale oni inklinujú byť ťažšie vyzdvihnúť. A konečne, Kohan používa architektúru MVC. Je to dosť ľahký, že môžeme doslova postaviť projekt tu priamo pred vašimi očami, a môžete do značnej miery sledovať spolu celkom ľahko. Čo je architektúra MVC? To je skratka pre Model-View-Controller, a možno, ak si myslíte, že o kód, ktorý som písal tak ďaleko pre niektoré z vašich vývoj webových aplikácií psets budete mať možnosť vidieť niečo z toho, ale obvykle, keď začnete písať zložitejšie webové aplikácie, rozdiel medzi týmito 3 segmenty sa stáva viac a viac zrejmé. Položil som sa na MVC tu trochu ako zásobník, a často budete počuť ľudia hovoria o komíny pri vývoji webových aplikácií, a to je pre ilustráciu myšlienku, že každá vrstva, každá zložka v skutočnosti sa snaží komunikovať iba medzi 2 ďalšie komponenty. Niekto pristupuje vaše webové stránky ako klient alebo prehliadači. Sú vzájomne s programom, cez zobrazenie kódu. Pohľad kód interaguje s regulátorom. Regulátor interaguje s modelom, a model komunikuje s SQL databázou. A nie je tam žiadny poskakovanie medzi pokiaľ nám napíšete váš kód správne. Čo tieto veci robiť? Tento model je v podstate kus kódu, ktorý sa zaoberá dátami. Čokoľvek, čo sa zaoberá databázu, s objektmi, ktoré uchovávajú, alebo získavanie týchto objektov v databáze, že to všetko ovládal model. Možno máte objekty v databáze. Chystáme sa vytvoriť model, ktorý má čo do činenia s príspevkami, takže príspevok môže mať niektoré atribúty k nemu. Môžete mať funkcie okolo ukladania týchto príspevkov alebo načítanie príspevky alebo filtrovanie príspevkov a tak ďalej a tak ďalej, a to je všetko, kód, ktorý je ovládal model. Regulátor je druh logiky aplikácie, a veľa rôznych vecí, môže ísť v aplikačnej logiky. Ak hovoríte do inej API, ktoré môžu byť tam, kde máte čo do činenia s aplikačnej logiky. Ak sa snažíte musieť priniesť dáta z niekoľkých rôznych modelov a musí ich spojiť nejakým spôsobom, že často môžu byť riešené prostredníctvom regulátora. Napríklad na Facebooku, ak ste priateľ niekoho, potom snáď, že akt, ktorým sa stanovuje, že vzťah môže byť vykonané pomocou regulátora. A konečne, názor je kód, ktorý sa vytvára to, čo je skutočne vidieť. Mnohokrát som si, že v CS50 psets nemajú vás naozaj povzbudiť ľudí, aby oddeliť tieto tri veci. Pravdepodobne budete mať tento veľký, dlhý súbor na vrchole urobíte nejaký SQL dotaz a možno robiť nejaké spracovanie Na základe údajov, môžete načítať z databázy, a potom budete mať všetky svoje HTML v dolnej časti. A možno zistíte, že ako si vytvoriť viac a viac stránok že budete mať nejaký kód opakovanie, a tiež, to je váš súbor dostane naozaj veľký a dlhý a stáva sa nemotorný spravovať. Dôvodom, prečo je tak dobre MVC považovať je z mnohých dôvodov. Prvá vec je niečo ako oddelenie sa týka čo je myšlienka, že keď máte - v ideálnom prípade 1 kus kódu by mali urobiť 1 vec, a to naozaj dobre, a vy by ste nemali kombinovať kusy kódu, ktoré robia rozdielne veci. Napríklad, zobrazenie kódu a kód modelu, oni naozaj nemajú byť príbuzný. Nemajú byť v rovnakej súbory, takže ak je to možné, oddeliť sa takže je ľahké udržiavať. Ďalšia vec je opätovné použitie kódu. Môžete nájsť sami písať rovnaký dotaz SQL alebo robiť podobné otázky, ktoré by mohli byť odstránený do 1 funkcie, a to je myšlienka modelov a regulátory, majú ju v samostatnej funkcie, ktoré je možné znovu použiť na rôznych miestach vo vašom projekte. A konečne, že je viazaná na sušenie kódu, alebo neopakovať sa, neopakujú sa. To je veľmi zrozumiteľný vo vývoji. Kedykoľvek je to možné, nechcete opakovať sám seba, pretože ak opakovať sami,  je to oveľa drahšie na údržbu. Ak chcete zmeniť 1 vec, budete musieť všade zmeniť, a to vedie k chybám, a je to hrozné. Poriadku. Akékoľvek otázky zatiaľ asi Kohan vôbec? Skvelé. Teraz ideme do toho ponoriť do živého kódovanie zasadnutí, a dúfajme, že všetko dobre dopadne. Chystám sa v podstate vytvoriť tento web na jednom z mojich vzdialených serveroch, a týmto spôsobom vy môžete tiež nájdete na webovej stránke a prístup na webové stránky, a tiež životné prostredie je nastavovaný lepšie ako môj vzdialenom počítači, pretože je to s operačným systémom Linux namiesto OS X. Sme doslova začnú. KohanaFramework.org. Idem stiahnuť kód na internetových stránkach. Budem kopírovať adresu odkazu, ísť na môj server, stiahnuť, a ja idem na to extrahovať. [Študent] Čo je najväčšou môžete urobiť text? [Brandon Liu] Je to lepšie? [Študent] Je to uskutočniteľné? [Brandon Liu] Jo, to je v poriadku. Stiahol som si súbor ZIP a rozopol, že do adresára s názvom Kohan, a budeme premenovávať, že CS50-Kohan, a poďme dovnútra Úžasné. Tu môžete vidieť veľa rôznych súborov. Väčšina z vás môže ignorovať - ​​Nie sme ísť cez každý súbor, ktorý je v tu kvôli našim časovým obmedzením, ale všeobecne pri inštalácii Kohan, prvá vec, ktorú urobiť je ísť do adresára, a budete v podstate urobiť nejaké testy prostredia a ktovie čo ešte zabezpečiť, aby vaše prostredie je správne nastavený pre spustenie Kohan a uistite sa, že je všetko v poriadku. Môžete vidieť, väčšina vecí prešiel, ale všeobecne vždy narazíte na tento problém 1 kde sa sťažuje, že niektoré zložky nemožno zapisovať, a to preto, že z niektorých oprávnenie. Neviem, koľko vy ste sa dozvedeli o oprávnenie k súborom v CS50, ale ak to vývoj webových aplikácií, budete spúšťať do tejto problematiky veľa. Budem robiť, že zápis a myslím, že aj ja musím - tam ideme. Dobre, takže teraz môžete vidieť všetko prešiel, a teraz to vám povie, premenovať súbor install.php. Idem sa presunúť súbor install.php na installed.php, a teraz keď som aktualizovať, to mi dáva nejakú chybu, a to je miesto, kde ladenie vypovedaciu To je miesto, kde môžete zistiť, čo sa vlastne bude diať. To je tým, že v predvolenom nastavení, Kohan predpokladá, že Váš projekt je v koreňovom adresári domény, tak to je očakával, aby ste sa na demo.brandonkliu.com. Musíme povedať, že, že je to vlastne v podpriečinku. Je to v podpriečinku nazvanej CS50 Kohan. Ide o to, že to interpretáciou CS50-Kohan ako niečo iné, čo som si vysvetliť, aby vás v sekunde. Ale mal by som vám povedať, že je to niečo, čo je potrebné očakávať. Čo budeme robiť, je, že sa chystáte ísť do tejto zložky s názvom bootstrap.php, čo je zložka konfigurácia, kde mnoho rôznych vecí, sú nastavené. Otvoril som, že až. Potom možno jedna z prvých vecí, ktoré som si urobiť, je zmeniť časové pásmo. A potom uvidíme. Aha! Priamo tu. Existuje veľa rôznych konfiguračných porekadlá sem, ale ten Hľadám je to, čo nazýva base URL, a v predvolenom nastavení som si to nastaviť na Kohan, ale budem sa zmeniť na CS50-Kohan, a myslím, že by sa to opraviť. Áno, ideálne. V predvolenom nastavení je vidieť, že to funguje, hovorí, "Hello World". Kde sa to vzalo? Ako sme sa dostali k Hello World? Kde presne je kód, ktorý vlastne napísal, že? Aby sme pochopili, že budem predstaviť tento koncept nazvaný smerovanie. Skoro všetky webové rámce majú koncept nazvaný smerovanie, čo je kus softvéru, ktorý bude mapovať určité URL na určité časti kódu v rámci svojho rámca. Napríklad, ak máte nejaké URL a môžete ísť do nejakej URL, ako foo.com / blog / all potom, čo rámec bude robiť - alebo aspoň to, čo Kohan sa bude robiť - je, že to bude nájsť triedu nazvanú regulátor blog, a je to chystá spustiť funkcie vymenoval akcii všetky. Viem, o čom hovorím triedy a funkcie, a viem, že vy sa nevzťahuje triedy a funkcie v ešte CS50, ale teraz, si môžete myslieť tried len ako skupinu funkcií, spôsob zoskupovania funkcií dohromady. To je naozaj všetko, čo potrebujete vedieť. Teraz, keď sa pozrieme na našu štruktúru priečinkov, vnútri zložky aplikácie je ďalšia zložka s názvom triedy, a ostatné zložky sa nazývajú Controller a Model. Ak sa pozriete vnútri adresára Controller, vidíme, že tam je súbor s názvom Welcome, a vidíte, tu je trieda nazývaná Controller Vitajte, a tam je funkcia s názvom Action Index, a to, čo robí, je, že nastaví telo Vašu odpoveď na Hello World. To je miesto, kde sa tento kód napísaný. Ďalšou otázkou je, dobre, som nešiel do bla, bla, bla, / welcome / index. Ako som skončil tu? No, to je jednoducho preto, že tu v dolnej časti nášho bootstrap súboru kde sme si stanovili naše trasy môžete vidieť, že nastaviť niektoré predvolené hodnoty pre vás. Predvolený ovládač je vítaná. Predvolené akcie index. To je dôvod, prečo, keď sme dali nič tam automaticky išiel na úvodnej regulátora a index akcie. Všetko, čo robiť tak ďaleko zmysel? Teraz si môžete urobiť viac, než len ísť do regulátora a konkrétne opatrenia. Môžete tiež odovzdať parametre regulátora. Len ako príklad, Chystám sa pridať ďalšiu akciu na tento radič ukázať. Hovorme túto akciu Echo, pretože to bude hovoriť, čo to dá, a tak som v podstate ísť chytiť parameter, ktorý sa bude poslaný skrze mňa do programu smerovania, a ako môžete vidieť tu, tento riadok tu, vidíte, že to v podstate znamená, že máte radič a máte /, a budete mať akciu a máte ďalšie /, a že to bude parametre, a preto máme tento názov ID v lomených zátvorkách, znamená to, že sme pomenovanie tohto parametra ID. Neskôr v mojom radič kód, ak chcem chytiť do rúk tohto parametra, Môžem použiť kód, ktorý som napísal, nájsť parameter s názvom ID. To je to, čo som tu urobil, a idem sa vrátiť a povedať, "Povedal si, že" to. A tak teraz keď pôjdem na našich webových stránkach, Chodím do cs50-kohana/welcome/echo/Helloooo-- oh, to je pravda. K dispozícii je 1 krok som vynechal. To je časť živej kódovanie myšlienke. Tu je 1 vec. Poďme sa pozrieť. Takže normálne štandardne s mnoho z týchto webových aplikácií budete musieť zahrnúť tento index.php vec v URL, pretože myšlienka je index.php je akýsi vstupný bod vašej žiadosti, ale samozrejme, to je trochu nepríjemné mať. Nechcete mať index.php objaví v URL, a skoro každý webový rámec po vybalení z krabice má tento index.php problém, a tak budete musieť prijať určité opatrenia, aby bol schopný odstrániť to. A tak v tomto prípade, to, čo budeme robiť, ich budeme používať súbor s názvom. htaccess, a to je niečo, čo je špecifické pre webový server Apache, a to môže robiť veci, ako je prepísanie adries URL a presmerovanie URL a tak ďalej a tak ďalej, a Kohan je dosť pekné, aby súbor htaccess šablóny., ktoré môžeme použiť. Ako môžete vidieť, že je súbor sa nazýva example.htaccess, a budeme kopírovať, ktorý na. htaccess. Idem otvoriť tento a upravovať ju, a v podstate to robí veľa rôznych vecí. Kľúč riadok, možno budete chcieť pozrieť, je tu. Myšlienka je, že to nastaví pravidlo, ktoré hovorí, "Dobre, čo napíšete, predradený index.php na to." Môžete vidieť, že. . * Znamená čokoľvek, čímkoľvek, a druhá časť je index.php / $ 0, a 0 dolárov sa týka, čo bolo ukončené skôr. Má to zmysel? Ale naozaj kľúčovú vec, ktorú chcem zmeniť, je zmeniť toto prepísať základňu, čo je URL základňa. Tak nejako sa predpokladá, kde pracujete od. Chystám sa pridať CS50 Kohan k tomu, a to spôsobom, teraz keď som odstrániť index.php, by to malo fungovať, a ja idem pridať nejaké čísla aby vám ukázal, že to naozaj urobil prácu. To znie dobre. Akékoľvek otázky tak ďaleko? [Študent] Ako to vedieť, aby 123? Je to argument? Presne tak. Môžete myslieť na to, rovnako ako argument. Ale divná vec, aj keď, je to spôsob, ako Kohan to robí je, že nerobia to presne ako argument. Musíte chytiť to takto. Musíte chytiť požiadavke objekt a požiadať o parameter, ktorý sa volal ID, a to meno ID pochádza z tohto bootstrap súboru že som ukázal skôr, a názov ID bolo v tých hranatých zátvorkách, a to je to, ako si urvat tie parametre. Úžasné. Nejaké ďalšie otázky? Ako som povedal, regulátory, ktoré zvládnuť aplikačnú logiku, tak to je jedna inštancia, kde môžete vidieť, to je - je to veľmi jednoduché, ale je to stále aplikačnú logiku, Myšlienka chytil parametra a vytvoriť nový reťazec , Ktorý hovorí, "Hovoril ste, bla," a potom pľuvať, že späť k vám. A zvyčajne to, čo robíte, je vytvoriť rôzne radiče. Môžete vytvoriť samostatné ovládače pre rôzne časti svoje webové stránky. Dnes budeme robiť veľmi jednoduché webové stránky, a to bude veľmi jednoduchý blog. Chystáme sa vytvoriť nový radič len pre príspevky v blogu. Ale potom keď som bol tiež pridávať komentáre k blogu, potom by som pravdepodobne chcieť, aby nový radič pre tie pripomienky. Ak by som chcel pridať užívateľa, asi by som pridať nový radič pre tých užívateľov, a všeobecne, myšlienka je, že vždy, keď máte nový model, nový dátový objekt, ktorý máte čo do činenia s, máte jeden radič pre daný dátový objekt. Dnes sme len bude pracovať s 1 dát objektu, a že to bude príspevkov, a tiež si môžete myslieť dátových objektov ako zodpovedajúce tabuľky. Všeobecne každá tabuľka zodpovedá 1 typ dátového objektu, takže tabuľka príspevok bude mať Príspevok: 1 modelu, čo bude mať 1 príspevok radič, ktorá by zodpovedala, a to isté pre pripomienky, rovnaké pre užívateľa, a tak ďalej a tak ďalej. A to je všeobecné pravidlo. Tam sa bude špeciálne prípady, kedy sa môžu líšiť od toho, ale 90% času, ktorý je to, čo budete robiť, a ja ti ukážem, že to, čo budeme robiť dnes. 1 ďalší koncept, než sa ponoriť späť do kódu, táto myšlienka objektovo relačného mapovania. Vy ste tak už urobili webový vývoj pset, a vy ste videli, že urobíte SQL dotazu, a nech sa vráti k vám sú riadky. Získate tieto riadky, a vy index je nejakým menom, názov stĺpca a tabuľky, a to, ako sa s ním pracovať, a to môže byť trochu ťažkopádne. Ale okrem toho, ak máte vzťahy vo vašej databáze, ako napríklad, keď mám pripomienky a príspevky, potom možno chcem chytiť nadradený post komentár. Mám použiť iba riadky v SQL, potom všetko, čo môžete dostať, je ID materského príspevku a nie skutočný sama pošta. Ale keď sme kódovanie, čo vlastne chcú, je vlastne chytiť  materský príspevok niekedy sám. Aký objekt relačné mapovanie robí je to znamená výsledky dotazu do databázy a dá to do objektov pre vás, ktoré sú oveľa príjemnejšie pracovať s než prostý polí a riadkov. Napríklad teraz, keď mám poznámku možná, a chcem chytiť svoju materskú príspevok, a ja možno komentár šípka príspevok, potom to bude skutočne dať mi post objekt , Ktorá zodpovedá skutočnému materskej miesto, a to len niektoré ID, ktoré by som inak musel použiť a urobiť ďalší SQL dotazu chytiť miesto, ktorý je ťažkopádny a zbytočné. A navyše tým, že mapuje všetky tieto riadky dát do objektov, môžete tiež pripojiť ďalšie funkcie na objekty, tak napríklad, hovoril som o tom, ako triedy sú v podstate zoskupenie funkcií. Môžete myslieť na to takto. Napríklad, možno som si tento príspevok objektu, a možno by som chcel mať nejakú funkciu k nemu pripojené že mi v podstate hovorí, to bolo nedávno vložené? Bolo to zverejnené v poslednom týždni, pravdivé alebo nepravdivé? A to je funkcia môžem pripojiť na daný objekt, a je to naozaj vhodné mať na rovnakom mieste, a existuje rad rôznych funkcií, ktoré môžete vytvoriť pre tieto objekty, a je to naozaj pekné byť schopný pripojiť sa k triede, k objektu, zatiaľ čo ak ste práve mali riadky pochádzajúce z databázy, potom sa môžete naozaj pripojiť všetky funkcie na to. Je to doslova len pár dát. Akékoľvek otázky týkajúce sa, že vôbec? Orms sú veľmi časté vývoj webových aplikácií, a existuje veľa rôznych typov orms, a Kohan má svoj vlastný ORM. Je to veľmi jednoduchý, ale budete mať chuť, ako to vyzerá. Poďme vytvoriť model pre naše blogu, a prvá vec, ktorú samozrejme musíte urobiť, je vytvoriť skutočnú tabuľku v našej databáze, aby skutočne ukladať naše dáta na týchto príspevkov. Prvá vec, ktorú budem robiť, je ísť do phpMyAdmin. Už ste chlapci používa phpMyAdmin predtým? Ok, super, takže vy už viete, čo to je, a ja idem vytvoriť novú tabuľku s názvom Kohan Príspevky, a to bude naozaj jednoduché. Budem sa musieť znova prihlásiť Všetko, čo sa chystáte urobiť, je dnes majú autor a telo, len aby to jednoduché. Chystám sa vytvoriť túto tabuľku, a teraz len musíme tabuľku predstavujúce naše príspevky 2 polia pre nášho autora a nášho tela. Ďalšia vec, ktorú budem robiť teraz, je nakonfigurovať moju webovú aplikáciu, takže vie, ako sa pripojiť k databáze, a to je opäť niečo, čo budete musieť robiť so všetkými webovými aplikáciami. Musíš povedať, že užívateľské meno a heslo a názov databázy a tak ďalej a tak ďalej prísť na to, ako sa vlastne pripojiť k databáze. V Kohan, máme niečo, čo nazýva modul databázy, a my v konfiguračnej zložky majú túto zložku s názvom databázy, a ako vidíte, existuje veľa nastavení, budete musieť nastaviť tu povedať to, čo je užívateľské meno a heslo k databáze, takže môžem vlastne k nemu pripojiť. A pretože nechcem, vy vlastne viete, užívateľské meno a heslo z mojej databázy, Mám súbor, kde som už nastaviť všetko, a budem kopírovať a vložiť ju znovu. Úžasné. Dobre. Myslím, že je to všetko nastavenie je potrebné urobiť, ale uvidíme. Budeme pracovať na tom, a ak sa niečo zrúti, potom budeme opraviť. Čo budem robiť, teraz je budem vytvoriť nový radič. Alebo vlastne, ospravedlňujem sa. Najprv musím vytvoriť nový model. Budem chcete vytvoriť nový model s názvom Post.php, a to, čo budeme robiť, ich budeme nazývať trieda Model_Post. Získať niektoré zvýraznenie syntaxe na, a tak, keď som povedal, "rozširuje ORM," to je v podstate niektoré ďalšie objektovo-orientovaného programovania, ktoré bohužiaľ vy sa nenaučili v CS50 ešte, ale je to celkom jednoduché vyzdvihnúť. Dáva mi to všetko navyše funkcie, ktoré prichádza v tomto ORM balíčku, a tak som si veľa extra funkcií a ktovie čo ešte zadarmo, ktoré uvidíte trochu v sekunde. Práve teraz vlastne všetko, čo potrebujete urobiť, je vytvoriť túto triedu. Ja ani potrebné, aby akúkoľvek funkciu alebo čokoľvek, ale ja som vytvoril triedu, ktorá predstavuje tabuľku, a pretože som rozšíril toto ORM triedy, Mám veľa vecí zadarmo, takže teraz už nemusíte nastavovať nič viac nahor. A teraz, čo budem robiť, je, že budem vytvárať nový radič, ktoré budem menovať blog.php, a budem kopírovať cez úvodné regulátora takže nemám k Opíšte nejaké veci, a teraz mám premenovať to. Čo budem robiť, testovať, aby sa ubezpečil všetko funguje vonku, Chystám sa chytiť na prvý príspevok z mojej databázy a vytlačiť text príspevku na obrazovke. K tomu, že to, čo budem robiť, ako prvé sa idem uložiť príspevky premenné, čo budeme robiť, tak je - v Kohan to, čo urobiť, je chytiť post objekt je to trochu ťažkopádne, ale musíte to urobiť túto vec s názvom ORM :: factory, a potom sa prejsť v názve modelu, ktorý chcete, a vráti ORM objekt, ktorý predstavuje tento model. A potom, ako som povedal, keď sme sa rozšíriť ORM objekt, dostaneme všetky tieto metódy zadarmo, takže napríklad, dostaneme táto nová funkcia s názvom "nájsť všetko," ktoré sa automaticky vráti každý príspevok v databáze, čo je celkom výhodné. A teraz v tele, idem sa vrátiť prvý príspevok a vráti jeho telo. A samozrejme, musím vytvoriť miesto, takže poďme vložiť nový príspevok. Poviem, "Brandon, môj úplne prvý príspevok." Úžasné. A teraz máme ísť na blogy a ak všetko funguje dobre - oh, to je zase iný hlúpy povolenie súborov vec. Podržte na 1 sekundu. Je to trochu absurdné. Tam ideme. Dobre. Opravil som ten problém oprávnenie. To sa snažia vytvoriť nejaké súbory a niektoré protokol, a oprávnenia, opäť neboli nastavené správne, tak som to aby tieto súbory boli zapisovať a spustiteľný tak to by sa skutočne prihlásiť k veci. Teraz je to, že mi ďalšia výnimka príslovie, "trieda ORM nebol nájdený," a to preto, že som zabudol ďalší krok. To je moc zlé. V súbore bootstrap zložiek, sú tieto moduly tu, ktoré si môžete vybrať povoliť alebo zakázať. Jedná sa o veľa rôznych funkcií, ktoré si môžete vybrať na použitie v Kohan, čo je trochu pekné. Napríklad, majú modul autentizácia ktoré môžete použiť pre autentizáciu užívateľov. Majú cache modul, ak chcete realizovať nejaký caching späť koniec, aby aplikácia pracovať rýchlejšie a ktovie čo ešte. Musíme k tomu, aby databáza a ORM modul, pretože ako som povedal, sme pomocou databázy, samozrejme, a musíme tiež umožniť ORM modul, preto, že sme chceli mať ďalšie funkcie, čo je pekné mať. Jediné, čo musíte urobiť, je odkomentovať tieto 2 riadky, a teraz keď som aktualizovať, to mi dal ďalšiu chybu. To hovorí, "Trieda Model_Post nebol nájdený." Teraz je to dobrý problém mať. Poďme sa pozrieť. Nech je to verejné. Nie Vydrž. Ach, drahý. Neviem, prečo to nie je schopný nájsť, že. To je naozaj divné. Mám túto triedu tu. Myslím, že budem musieť - oh. Som tak hlúpa. Zabudol som pridať značku PHP. To je dôvod, prečo. Teraz musím vrátiť, že 1. zmena, ktorú som práve urobil. Dobre. Tam ideme. To bolo naozaj hlúpe. Nechcel som mať PHP tag otvorení. Ale ako vidíte, teraz to funguje správne, že jo? Máme Príspevok: 1. Schmatol sme prvý príspevok, a teraz sme vytlačili svoje telo. Skvelé. Fantastic. Akékoľvek otázky tak ďaleko? Nie? Akékoľvek otázky? Dobre, tak sme práve vytvorili model príspevok, veľmi jednoduchý, a budeme pridávať niektoré funkcie neskôr. Môžeme pridať validácie a filtrovanie. Validácia je jedna z vecí, že rámca riešenie pre vás naozaj, naozaj dobre, a nemyslím si, že vy ste musel urobiť pre vaše CS50 pset, ale ak to vývoj webových aplikácií pre konečného projektu, budete pravdepodobne chcieť urobiť nejaké overenie, ako nemať prázdne používateľské mená, Možno majú heslá s aspoň nejakú dĺžku, a podobné veci. A je to naozaj náročný na realizáciu týchto vecí sami, a skoro každý webový rámec to urobí za vás a umožňuje to veľmi čistým spôsobom. A model, kde sa obvykle vyjadrujú tieto overovacie pravidlá, pretože je to potvrdenie, či model je platný, alebo nie. Ale pre teraz, budeme dať, že až neskôr, a teraz budeme pracovať na inej časti, a budeme sa snažiť a robiť nový pohľad ktoré sú uvedené všetky príspevky. Kroky pri vytváraní novej akcie pre výpis všetkých príspevkov je chytiť zoznam všetkých miest a potom vykresliť zoznam všetkých miest prostredníctvom zobrazenia. Práve tu, tak našťastie už chytil všetky príspevky Pomocou tohto prvého riadku, nájsť všetky funkcie, a teraz, čo budeme robiť, je tak ďaleko Bol som priamym nastavením telo odpoveď odovzdaním reťazec, ale teraz chcem použiť zobrazenie, a rozdiel medzi cieľom a len robí to je s ohľadom môžem mať krásny, veľký HTML šablóny, a čo môžem urobiť, je odovzdať niektoré premenné a potom sa pohľad automaticky naplniť svoju šablónu pomocou týchto premenných. Čo budem robiť, je, že som si vytvoriť nový pohľad, a ja budem menovať pohľadu niečo ako "blog / index" a budem v podstate viaže toto - ach, čo mám písať? Môj mozog je niekde inde. Chystám sa viazať príspevky premenné k názoru, tak, aby spôsob zobrazenia má prístup k tejto funkcii premennej. A tak teraz musím vytvoriť tento názor, takže tu máme túto zložku s názvom "Zobrazenie", a prvé, ja idem vytvoriť novú zložku pod týmto názvom "Blog". To je pekné. Týmto spôsobom môžeme mať pekný hierarchiu našich názorov. A potom budem vytvárať ďalší súbor tam názvom "index.php". Úžasné. V skutočnosti, poďme si ich oboch tu. Vytvorenie súboru zobrazenie je pravdepodobne najjednoduchšia časť toho všetkého, a to sú asi veci, ktoré ste už zvyknutí. Budeme robiť niečo naozaj jednoduchého, začať hovoriť: "Môj zoznam blogu." Potom môžeme prejsť, a môžeme iterovat príspevky poli, chytiť každý príspevok a povedal niečo ako - Možno pridajte riadok a potom vytlačiť autora a telo. To aby sa tak ďaleko zmysel? A uvidíme, či to funguje. Nič sa nestalo. Zaujímalo by ma, prečo. Oh, som vynechal jeden krok. Veľmi hlúpe. Vytvoril som názor, ale ja som nemal nastaviť zobrazenie ako odpoveď, takže budete musieť urobiť 1 vec. Čo musíte urobiť, "toto telo odpoveď" a nastavte ju ako pohľad. Tam ideme. Máme záhlavie, a potom budeme mať miesto, a len pre zábavu, poďme vložiť ďalší príspevok takže môžeme vidieť zoznam. A vložte tieto dva príspevky, a teraz keď som aktualizovať stránku, vidíme všetky tie príspevky tady. Znamená to, že aby sa tak ďaleko zmysel? Jo, otázka? Oh, dobre. Ako môžete vidieť, sme boli schopní oddeliť všetky tieto kódy von do rôznych sekcií, a potom môžete vidieť, že je najviac jasné, s výhľadom na kód. Tento súbor tu, že reprezentuje názor, to sa stará len o zobrazovanie dát, zobrazovanie dát. To je odovzdaný nejaký údajov, a všetko, čo robí, je len ukázať, že na vás. Vo všetkých ostatných častí kódu, nebudete musieť starať o nič z toho, a podobne, váš názor kód nemusí starať o nič ako pristupovať k databáze a tak ďalej a tak ďalej, ktorá je naozaj dobrá a robí váš kód oveľa lepšie spravovateľný. Ako som povedal, názory, sú dynamické v tom, že je to 1 súbor, ale to by vytvárať rôzne pohľady na základe premenných, ktoré skutočne prechádzajú v, a ďalej, existuje veľa rôznych pomocných funkcií ktoré môžete použiť, ktoré vám pomôžu napísať svoj kód rýchlejšie, ktoré som vám ukážem pár sekúnd. Jo. [Študent] Tak 0dolar je radič, nie? To je druhá vec. Otázkou je, je 0 Sk radič? 0 dolár je variabilný Vytvoril som tu. Vytvoril som názor ako prvý. Aj pridelený do určitej premennej. Potom som prešiel do tejto funkcie, nastavte ju ako telo odpovede. Má to zmysel? [Študent] Tak je pohľad :: výroby, je pohľad ako na triedu alebo knižnica [nepočuteľný] Funkcia továreň? Otázkou je, o funkcii view :: továrne, a v podstate je to niečo viac objektovo orientované programovanie v podstate. Zobraziť je trieda pohľad, a to má metódu nazvanú "Factory", a to je spôsob, ako uchopiť objekt, ktorý je s názvom "blog / index." A to je niečo viac objektovo orientované programovanie veci že nejdem ísť do tady moc. Teraz samozrejme, chceme vytvoriť nové pracovné miesta, ale nechceme, aby sa to urobiť prostredníctvom databázy, takže budeme vytvárať novú akciu pre vytvorenie nového príspevku, a je tam veľa vecí, čo musíme urobiť. Prvá vec, ktorú budeme robiť - poďme riešiť tieto veci jednu po druhej. Prvá vec, ktorú urobíme, je, že máme chcete vytvoriť formulár Pre vloženie nového príspevku, ale ja som tiež chystá pridať novú akciu prvýkrát, takže pridať novú akciu je rovnako jednoduché ako pridaním novej funkcie s regulátorom, a teraz idem robiť niečo veľmi základné, len chytiť tento názor a po nej, len zobraziť na vás. A potom sa budem vytvoriť nový pohľad súbor, a ja idem začať písať nejaké veci. Čo je pekné o Kohan je, že poskytujú mnoho rôznych pomocných funkcií pre vás písať zobrazenie kódu ľahšie, a 1 z týchto pomocných funkcií alebo pomocných modulov je okolo písanie formulárov. Pre písanie formulárov, ja naozaj nemám priamo písať žiadne HTML sám. Vy ste písali HTML formulárov. Viete, ako to môže byť naozaj bolestivé a ťažkopádne písať formulára. Nie je to sranda, a tak našťastie, môžeme v podstate napísať formulára pomocou Kohan je tvoria pomocné funkcie, aby to pre nás. Chystáme sa v podstate majú polia pre každú vec, ktorú máme, tak jeden pre autorov a jeden pre orgány. Budeme mať označenie, a budeme mať vstup. A nakoniec, budeme mať podanie. A ako môžete vidieť, je to oveľa čistejšie písať než všetky tie špinavé HTML, čo je celkom pekné. Je pravda, že existujú aj iné webové rámce, ktoré majú dokonca čistejšie než to, ale aspoň je to lepšie ako písať HTML sami. Super, tak to je to, čo vidíte. To je trochu chaotický, tak ja idem pridať zalomenie riadku sa aby sa, že vyzerajú trochu krajšie. No, samozrejme, je to stále vyzerá naozaj, ale naozaj zlé, ale my sme jednoducho zamerali na funkčnosti pre teraz a nie na estetiku. Nie je čas na to všetko. A ako vidíte, teraz máme super základný tvar, čo je celkom pekné. Tento kód Povedal by som, že je čistejší než sa snažiť písať HTML tvoriť sami, tak to je pekné. Čo bude ďalej? Teraz musíme robiť veci s akciou. Normálne, keď píšete HTML formulára, budete musieť povedať, že tam, kde to bude predkladať formulár. V predvolenom nastavení je vo väčšine webových frameworkov, predkladá na presne rovnakú adresu URL, takže vec je, ak si poslať GET požiadavku na / blog / nové, to by vám mal zobraziť formulár, ale ak budete posielať žiadosť o príspevok pre / blog / nový s údajmi, to by skutočne snažia zachrániť tento príspevok a niečo s ním. Čo budeme robiť, je v podstate všetko, čo musíte urobiť, aby zistil, či je žiadosť o príspevok, alebo požiadavku GET je skontrolovať, aké sú rozmiestniť svoje premenné možno nastaviť. A ak je nastavený po premenná, potom sa budeme snažiť vytvoriť nový príspevok. Opäť sme jednoducho to, a že vytvorí nový príspevok, a my sme doslova ísť do nastaviť jeho pole, ako je tento, a potom budeme ho uložiť. A potom idem na presmerovanie na index stránke, takže môžete vidieť náš zoznam miest znova. Skúsme to. Poviem, "Brandon," a potom odoslať príspevok, a ak všetko pôjde dobre, ako môžete vidieť, je presmerovaný ma na index stránke, a keď som prejdite do dolnej časti, máme novo vložený príspevok. Yay! Jo, otázka. [Študent] Čo keby ste zadali presne to isté ktoré ste zadali predtým? Má skontrolujte, či ste sa neopakujú rovnaké podanie? Buďte predvolený, nie, pretože v predvolenom nastavení - Ospravedlňujem sa, otázka je, ak zadáte v presne rovnakých dát vo forme a tvrdia, že sa to vám umožní vložiť duplicitné objekt, duplicitné záznam, v podstate? Práve teraz, áno, to vám umožní robiť to, pretože v databázach je to úplne v poriadku, aby sa úplne duplicitné riadky, ale v prípade, že je záujem, potom môžete pridať validácia, napríklad, aby sa ubezpečil, že ak je to úplne rovnaké ako niečo, čo už existuje, potom hovoria, že je to neplatný objekt, a potom môžete dokonca zadať chybové hlásenie a povedal: "Neplatný pretože už existuje", alebo niečo takého. Ale v tomto prípade by som vytvoriť niečo duplicitné. Teraz sa poďme skúsiť pridať nejaké validácia. Problém s tým hneď teraz, je, že Nemohol som doslova predložiť úplne prázdne miesto. Môžem kliknúť na toto tlačidlo hneď, a tam ideme. Nemôžete naozaj vidieť, ale to ďalší riadok tu znamená, že som sa doslova nový príspevok. Je to len má prázdne autora a prázdne telo, a nechceme, aby ľudia mohli urobiť. To je miesto, kde overenie vypovedaciu Môžem ísť do môjho modelu objektu, a teraz môžem pridať novú funkciu, ktorá určuje čo validácia pravidlá by som mal dodať k tomuto modelu aby sa ubezpečil, že je platný, alebo určiť, čo to znamená byť platný po? A chcem povedať, že je to iba platný príspevok v prípade, ako autor a telo nie sú prázdne, a to je, ako to urobiť v Kohan. Môžete vytvoriť novú funkciu s názvom "Pravidlá", a potom sa v podstate vracia asociatívne pole , Ktorý definuje overovacie pravidlá pre tento objekt. Chystáme sa vráti pole, a potom to, čo budeme robiť, je hovoria "autor", to ide na pole, ktorý ide do iného poľa s názvom "nie je prázdny." A potom budem hovoriť "telo." Dobre, a syntax pre tento a štruktúra pre tento môže vyzerať trochu ťažkopádny a trochu zložitejšie. Ak ste si prečítali dokumentáciu, je to celkom jednoduché prísť na to, Ale v podstate to je to, čo musíte urobiť, špecifikovať Niektoré validačné pravidlá, a existuje veľa rôznych pravidiel že Kohan vám dá zadarmo, rovnako ako môžete pridať pravidlá hovoria, musí byť aspoň táto dĺžka. Možno, že to musí byť číselná. Možno to má byť alfanumerický. Možno to má byť nanajvýš táto dĺžka, a tak ďalej a tak ďalej. Existuje mnoho rôznych pravidiel, ktoré Kohan poskytuje pre vás, a môžete ísť na ich webové stránky, pozrite sa na dokumentáciu, a vidíte všetky tie rôzne veci, ktoré môžete urobiť. Ale to je všetko, čo mám robiť, a teraz sa poďme pozrieť, čo sa deje keď predloží prázdne miesto. Čo sa bude diať? Oh, nie, ja dostanem chybu. Som si výnimku overenie. No, je to dobré. To mi povedal, že môj model je neplatný, ale ja nechcem zobrazovať výnimku na mojich užívateľa, keď sa snažia podať čo neplatný, že jo? Chcem im dať nejaký priateľskejší chybové hlásenie keď sa niečo pokazí. Čo budeme robiť, je budeme zabaliť všetko do try catch slučky. Vlastne si myslím, že to je tiež niečo, čo sa doteraz naučil, v CS50, pretože C, programovací jazyk C, nemá výnimky, ale takmer každý iný jazyk má výnimky, tak naozaj, ale naozaj krátko, Výnimkou je niečo, čo kus kódu môže vyvolaním výnimky, kedy sa niečo pokazí, ale potom možno nejaký iný kus kódu výš môže zachytiť túto výnimku a niečo s ním. Napríklad, v tomto prípade, kus kódu, ktorý sa snaží zachrániť model, overuje model, a ak sa hovorí, "Dobre, tento model je neplatná," to bude hádzať výnimku, a to je celkom ekvivalentná v C môžete vrátiť -1 alebo niečo také. A potom sa na mňa, je táto funkcia, môj kód na vyššej úrovni, môžem skúsiť a chytiť túto výnimku a v podstate povedal: "Dobre, keď som zachytiť výnimku, čo mám robiť?" Alebo by som si mohol vybrať to chytiť, že výnimku a nechať niekoho vyššie zachytiť výnimku, alebo ak to nikto chytí, potom celý program havaruje a hovorí, "Niečo sa pokazilo, a nemohol som to vydržať." Ale to, čo robíme, je si zabaliť kus kódu v bloku try, a potom si tiež pridať niečo, čo nazýva blok catch, čo je druh kódu, ktorý sa bude snažiť zachytiť výnimky, ktoré môžu nastať. A tak keď som zachytiť tento konkrétny výnimky alebo neplatnosti výnimka, potom to, čo budem robiť, je Idem nastaviť chyby - myslím, že to, ako som to urobiť - a ja idem nastaviť chyby na nejaký predmet. A čo budem robiť, potom, ak je to zasiahne túto výnimku, že to nebude presmerovať, a ak to nie je presmerovanie, to príde z, ak blogu a hit to blog / nové, ktoré sa chcú čo chcem robiť. Ak dôjde k chybe, potom sa chcem vrátiť do formy a zobrazenie týchto chýb. A teraz, čo chcem urobiť, je chcem odovzdať v týchto chýb na zobrazenie. Dobre, myslím, že mám názor tu, a som v podstate chcete zobraziť tie chyby, ak existujú. Než som sa písať HTML na to, že budem naozaj rýchlo ukázať, čo je štruktúra tejto chyby variabilný vzhľad páči, a to je dobrá prax všeobecne. Mnohokrát vám niečo späť z nejakej metódy, niektoré funkcie vo webovom rámci, a vy neviete, čo je premenná vyzerá, takže neviem, ako s ním pracovať. Chystám sa použiť metódu tlače r podstate vytlačiť. A ako môžete vidieť, to mi hovorí, že je to spolupracovník pole, a máte kľúč, autor, body tohto reťazca, autor nesmie byť prázdne, a ďalšie kľúč, telo, Body do iného reťazca, telo nesmie byť prázdny. Som rád, jo, v pohode. Potom som si iterovat cez pole a vytlačiť každú jednu správu. Je to v podstate ako asociatívne pole s partiou správ. Čo budem robiť, je "ak chyby," a ja idem na vytvorenie zoznamu, a ja idem k iterácii cez všetky chyby. A to, a teraz budem snažiť predložiť to znova, a uvidíme, čo dostaneme. Teraz sme si tento pekný zoznam chýb, a to je ešte celkom škaredý, ale to samozrejme môže byť formátovaný vyzerať pekne, ale základná myšlienka je len v niekoľkých málo riadkov kódu, sme boli schopní potvrdiť náš model, Uistite sa, že niektoré polia nie sú prázdna, a keby sa niečo pokazilo, potom sa vrátiť nejaké chybové správy Potom som mohol prezentovať späť k užívateľovi. Môžete tiež upraviť vaše potvrdenie takže sa môžete skutočne mať chybové hlásenie ktorý je viac špecifický pre vašu aplikáciu, alebo niečo také. Všetko, čo je všeobecne prispôsobiteľné. Bohužiaľ, máme málo času, takže budem musieť odrezať živé kódovanie relácie tu. Existuje množstvo ďalších funkcií, ktoré chcem ukázať pre vás v tomto príklade. Napríklad, môžete pridať šablóny na vaše stránky, takže možno tam je nejaký druh kódu HTML, ktorý chcete použiť na každej stránke vo vašom webe, a namiesto toho, vkladanie, ktoré v každom jednotlivom zobrazení súboru máte, čo samozrejme by zlej praxe, môžete v podstate definovať tieto šablóny, a potom v ovládači povedal: "Dobre, ja som s použitím tejto šablóny." "Boli všetky moje názory použite túto šablónu." A ešte posledná vec, ktorú chcem ukázať, ako dobre že nemáme čas je cross-site scripting, a v podstate myslím, že vy ste pravdepodobne videli v CS50 - Myslím, že David Malan pravdepodobne hovoril o tom, ako možno zvyčajne aplikovať JavaScript kód do - hovoril si o tom? Možno, že? Možno, že nie? Ale mnohokrát, môžete vloženie škodlivého kódu JavaScript do niečí databázy, a ak nemajú uniknúť, že správne, potom, keď oni predstavujú, že dáta späť k užívateľovi, potom to môže spustiť nejaký náhodný kód JavaScript nechcete, aby sa stalo, a chcel som ukázať, ako by ste to urobiť v Kohan. Je to naozaj veľmi jednoduché. Mohol by som to urobiť práve teraz po 2 sekundách doslova. Jediné, čo musíte urobiť, je v podstate zabaliť tieto veci v tejto veci tzv HTML entity. A že bude automaticky správne uniknúť všetky znaky a uistite sa, že nechcete dostať tento problém. [Študent] napísané nesprávne prvý test. [Brandon Liu] Oh, pardon. Tak, to je všetko, čo som sa s vami podeliť o dnes. Tieto snímky budú zverejnené, ale títo sú všeobecne iba zdroje, ktoré by naozaj potrebujete, aby ste mohli začať s Kohan. Môžete ísť na webové stránky. Majú užívateľský manuál, a majú tiež API Explorer. Môžeme skúmať všetky rôzne funkcie a pomocné funkcie, ktoré majú pre vás. Oni všeobecne majú dostatok informácií na internetových stránkach ktoré môžete použiť, aby ste mohli začať a ísť s Kohan. Nie sú že veľa cvičenia, myslím, že pre Kohan, mimo to, čo majú na stránkach tu, tak je to asi najlepšou voľbou. Ale ak chcete ísť s webovým rámcom a nechcete, aby vyzdvihnúť nový jazyk, a chcete niečo, čo je relatívne ľahký a má ľahký učenia, Určite by som navrhnúť Kohan. To je asi najlepšia ponuka pre to. Legrační vec, aj keď, ak sme pomocou Ruby on Rails, sme mohli replikovať to, čo sme práve urobili a pravdepodobne viac za menej než 3 minúty. To nie je vtip, ale učiť Ruby on Rails trvá oveľa dlhšie než by sa naučiť Kohan. Je to v podstate vaša voľba o tom, čo chcete vybrať učiť, ale ak chcete dostať hore a beží rýchlo, Kohan je určite veľmi dobrá voľba. Akékoľvek posledný otázky, ako sme nakoniec? Áno. [Študent] Ako by sme sa integrovať, že v rámci CSS, ako ste použili, keď ste sa poučil? Otázkou je, ako by sa integrovať, že s rámcom CSS? Čo by sme asi urobiť, je, že sme pravdepodobne zahŕňať nová zložka, kde by sme vypísať všetky naše CSS súborov, a potom sme si tiež pridať novú šablónu. V šablóne by sme zahrnúť tieto súbory CSS aby sa ubezpečil, že sú odvolával sa na každej stránke, a potom, keď ste vlastne písanie HTML, stačí pridať zodpovedajúce triedy a ktovie čo ešte, a napríklad, keď používate niečo ako formu pomocná funkcia, môžete pridať ďalšie parametre potom určiť, aké tried chcete byť pripojené na rôzne veci tak, aby mohol riadne štýl, a to v podstate, ako by ste ísť. Nejaké ďalšie otázky? Úžasné. Ďakujem vám za váš čas, a ďakujem, že ste prišli. Nechcel som pridať veľa iný, ale 1 naozaj rýchla vec je, že nemáme odkaz do formulára. Naozaj hlúpy. Dodajme - vlastne v zobrazení, blog, index, poďme naozaj rýchlo pridať odkaz, ktorý ide na novú stránku, stránky, kde môžete vložiť nový príspevok. Budeme to robiť. Čo je to pekné je, že je celá táto skupina pomocných funkcií HTML ktoré robiť rôzne veci pre vás, takže si už videl subjekty fungovať tu, ale majú tiež funkciu nazvanú "kotva" ktoré môžete zadať blog / nové a povedal: "Post nový blog." A to by sa vytvoriť tento odkaz pre vás, a to sa zdá veľmi jednoduché urobiť, ale je to pekné, pretože predpokladám, že sa sťahujete svoje webové stránky od 1. domény do druhej. A ak ste práve napísal z adries URL sami, potom budete musieť zmeniť všetky adresy URL. Alebo možno ste ju presťahoval z 1 podzložky do inej podzložky. Budete musieť zmeniť všetky tieto adresy URL sami, a že to nie je žiadna sranda. Môžete použiť tento kotvu tu, a môžete zmeniť doménu alebo podpriečinky prefix v konfiguračnom súbore raz, a potom to bude platiť, že všade, a to je, opäť, skvelým príkladom toho, neopakujú sa, sušenie kód z Všade tam, kde ste opakovať sami, skúste a extrahovať v nejakom konfiguračnom súbore alebo na inú funkciu a sú to zvládnuť za vás. A úplne posledná vec, ktorú som vám chcel ukázať, bolo Predpokladám, že sme späť na tento post, a ja som zložil nejakú naozaj dlhú esej, ale zabudol som, aby zahŕňala môj autora. Teraz, keď som kliknite na tlačidlo "Odoslať príspevok", Stratil som všetko. Nie! Naozaj smutné. Tak, ako sa vysporiadať s tým? To je to, čo robíme. To, čo robíme, je tu pre tieto vstupné a textové oblasti funkcií, ak zahrnieme druhý parameter, potom hodnota tohto druhého parametra bude to pole bude spočiatku naplnený. Čo môžeme urobiť, je v našom blogu regulátora, by sme mohli nadviazať ďalšie premenné. Nazvime to "hodnoty" Možno. A odovzdať po poli, a to doslova. To znamená, že v prípade, že overenie zlyhalo, prejsť so mnou post pole, ktoré som predkladal od poslednej požiadavky, a že spôsob, ako môžem použiť hodnoty z môjho posledného podania repopulate poľa. Teraz môžem urobiť niečo ako hodnoty autora a hodnoty tela, a to tak teraz keď to urobím nejaké náhodné veci a kliknite na tlačidlo "Odoslať príspevok", a potom to tam zostane. Ale my sa stretneme s iným problémom. To funguje, ale keď som sa ísť na stránku hneď na prvýkrát, to bude k havárii, a to preto, že hneď na prvýkrát ideme na stránku, tento príspevok premenná nebola stanovená. To je null. To neexistuje. A čo chceme povedať, ak je tento kľúč existuje, potom sa vráti hodnotu tohto poľa, ale ak neexistuje kľúč, potom sa vráti prázdny reťazec. To je funkcia chceme tu. Chceme zistiť, či pred pokusom o prístup k matici existuje kľúč, a dosť našťastie, Kohan nám tiež dáva pomocnú funkciu pre to. Majú celú túto sadu funkcií pod názvom ARR, krátky pre polia, a majú 1 funkcia s názvom "dostať," a môžete odovzdať v poli, a môžete prejsť v názve kľúča. Tak čo to bude robiť v podstate je to sa bude snažiť získať ten kľúč, ale v prípade, že kľúč nie je v poli, potom sa to vráti prázdny, alebo môžeme tiež určiť predvolené, verím, čo je pekné. Teraz, ak budeme robiť rovnakú vec znovu, potom vidíte, teraz to funguje na prvýkrát, a znova, ak napíšeme v nejakom náhodnom veci a pokúsiť sa odoslať, potom to tam zostane. A myslím, že môže tiež ukázať, ako pridať šablónu naozaj rýchlo. Čo môžeme urobiť ako prvý je, že môžete pridať nový pohľad nazvaný "template.php" v priečinku pohľady, a čo budem robiť, je budem tlačiť niečo, čo nazýva "obsah" ktorý sa bude môj hlavný obsah. A možno na samom dne idem pridať, povedzme, copyright. [Nepočuteľné študenta otázka] [Brandon Liu] Možno, že to je super základná šablóna chcem použiť. Chcem mať zložku s mojím autorských práv na každej strane, a teraz, čo budem robiť v mojom ovládači Teraz je miesto toho povedal, "rozširuje Controller" Budem hovoriť, "rozširuje Controller_Template," a teraz namiesto toho povedal, "telo odozvy je rovnaká tohto pohľadu," Budem hovoriť, "tento obsah šablóna je -" a myslím, že - mám dať znamienko rovnosti? Zabudol som. Jo, to som si myslel. A teraz nastavená premenná obsah rovnať názor. Môžem tu to isté. A teraz keď som aktualizovať, môžete vidieť, teraz to autorské právo je tam pridal, a len zarobiť nejaké náhodné miesto, a potom znovu, mali by ste vidieť, že autorské právo je na samom spodnej časti stránky. Veľká. To je všetko, chcel by som vám ukázať chlapci. [Potlesk] Akékoľvek otázky? [CS50.TV]