>> [Seminari] [Kohana: Un PHP Framework lleuger]
[Brandon Liu] [Harvard University]
[Aquest és CS50.] [CS50.TV]
>> Hola a tots. El meu nom és Brandon.
Sóc un jove aquí a la ciència de la computació de la universitat fent, i avui parlarem d'
Kohana, que és un marc de desenvolupament web PHP.
Avui serà un seminari de codificació en directe,
així que estic bàsicament passarà 5-10 minuts explicant el Kohana és,
i llavors jo estic literalment construirà un super simple bloc
per a vostè aquí, literalment des de zero.
Anem a descarregar el codi de la pàgina web Kohana,
i començarem a construir un bloc, i és d'esperar que serà molt instructiu,
perquè veurà potser potser vaig a cometre alguns errors,
i veuràs a recuperar d'ells,
o veuràs el meu procés de pensament com jo construeixo a través d'aquest bloc,
i mentrestant, també es familiaritzarà amb el propi marc.
Esperem que serà un exercici molt instructiu.
>> En primer lloc, què és exactament un marc?
Si vostè ha estat prenent CS50 fins al moment, realment no ha funcionat amb qualsevol
marcs encara, i la cosa és aquesta.
Vostè probablement ha fet 1 desenvolupament web PSET ja,
i diguem que continuï la construcció de llocs web i mantenir llocs web de construcció.
Vostè començarà a notar un parell de coses.
La primera cosa que vostè notarà és que t'estàs fent les mateixes coses
una i altra vegada tot el temps,
coses com la neteja de les dades d'entrada de l'usuari,
coses com l'organització dels seus arxius d'una manera determinada.
L'altra cosa que també probablement notarà és que el seu codi
poden començar a ser molt, molt brut,
i és possible que deixi desordenat i amb prou feines té un temps molt difícil mantenir-lo,
o pot començar a estructurar el seu codi i el que és modular
de certa manera perquè sigui més fàcil de mantenir.
>> Aquí és on els frameworks web, bàsicament, va entrar
Aquestes persones que havien construït una gran quantitat de llocs web, van dir,
"No necessitem tornar a fer això cada vegada que construïm un lloc web."
"Per què no ens limitem a fer un paquet que fa totes aquestes coses per a vostè
cada vegada que volen construir un lloc web? "
Així que quan vostè fa una nova pàgina web,
només se centren en el que exactament aquest lloc web en particular es tracta.
No cal repetir tot el diverses configuracions
i la separació dels codis i la reescriptura del codi
que sovint tenen a veure quan estàs fent llocs web.
La idea és que un marc li permet escriure un codi de nivell superior
sense haver de preocupar-se pels detalls de nivell inferior.
Un detall de nivell inferior pot ser alguna cosa com
tractar amb la neteja de les dades d'entrada d'usuari.
Això és una cosa que vostè no ha de realment necessitat de preocupar-se.
Vostè s'ha de centrar en el que la seva assignació web és realment sobre.
S'elimina una gran quantitat de codi repetitiu.
És una arquitectura per al seu projecte.
>> La més popular seria Model-Vista-Controlador,
que vaig a parlar en un segon.
I moltes vegades aquests marcs encarnen un conjunt de procediments,
normes i millors pràctiques perquè utilitzeu
de manera que quan s'adopta el marc web
vostè ha d'escriure el codi d'una determinada manera,
i és en general un conjunt acordat de principis
per la comunitat que és generalment acceptat ser
una bona manera d'escriure codi.
Això fa que el seu codi sigui més fàcil de mantenir, més usable,
així successivament i així successivament.
I, finalment, el que vull posar l'accent sobre els marcs
enfront de les biblioteques és aquesta idea sobre la inversió de control, i la cosa és aquesta.
La diferència entre una biblioteca i un marc és que amb una biblioteca
encara està escrivint el programa principal,
i que està mena d'invocació de la biblioteca
i exhortant a la biblioteca a fer alguna cosa per tu.
La diferència entre una biblioteca i un marc
és que el marc comença amb el control,
i s'invoca el seu codi,
així que vostè pot pensar en ell com - és per això que es diu un marc -
el marc proporciona aquest marc i estructura del seu codi,
i omplir els forats,
i això es farà més aparent en un segon
quan veus a començar a escriure codi en el context del marc.
Vas a veure que m'estic omplint els buits,
i el marc és una espècie de control de totes les peces en moviment,
i he de posar les peces en els llocs correctes.
>> Avui parlarem de Kohana,
que és un dels molts marcs de PHP.
Hi ha frameworks web, i n'hi ha en gairebé tots els idiomes,
i estic recollint Kohana Kohana, perquè és sens dubte
i generalment reconegut com el framework PHP més fàcil de recollir.
És el més lleuger.
Hi ha altres per aquí que vénen amb moltes, moltes més característiques,
però tendeixen a ser més difícil de recollir.
I, finalment, Kohana utilitza l'arquitectura MVC.
És prou lleuger que podem construir, literalment, un projecte
aquí just al davant dels teus ulls, i vostè pot gairebé
seguir endavant amb força facilitat.
>> Què és l'arquitectura MVC?
És sinònim de Model-Vista-Controlador,
i potser si es pensa en el codi que has escrit fins ara
per alguns dels seus conjunts de processadors de desenvolupament web
vostè pot ser capaç de veure alguna cosa d'això, però en general quan s'inicia l'escriptura
una aplicació web més complexos,
la divisió entre aquests segments març es fa més i més evident.
Vaig presentar el MVC aquí una mena de com una pila,
i, sovint se li sent parlar de les piles en el desenvolupament web,
i això és per il · lustrar la idea que
cada capa, cada component s'esforça per comunicar-se només
entre d'altres 2 components.
Algú té accés al seu lloc web com un client o un navegador.
Ells interactuen amb el programa a través del codi de la vista.
El codi de la vista interactua amb el controlador.
El controlador interactua amb el model,
i el model interactua amb la base de dades de SQL.
I no hi ha cap salt en el mitjà si s'escriu el codi correctament.
>> Què fan aquestes coses?
El model és essencialment la part de codi que s'ocupa de les seves dades.
Qualsevol cosa que s'ocupa de la base de dades, amb els objectes que s'emmagatzemen,
o recuperar els objectes a la base de dades,
això és tot manejat pel model.
Potser vostè té objectes a la base de dades.
Anem a crear un model que té a veure amb els missatges,
de manera que un missatge pot tenir alguns atributs a la mateixa.
Vostè pot tenir funcions al voltant de emmagatzemar aquests missatges o recuperar missatges
o filtrar els missatges i així successivament i així successivament,
i això és tot el codi que està a càrrec de la model.
El controlador és una espècie de la lògica de l'aplicació,
i un munt de coses diferents pot anar en la lògica de l'aplicació.
Si vostè està parlant amb una API diferent,
això pot ser quan vostè està tractant amb la lògica de l'aplicació.
Si vostè està tractant de tenir per portar les dades de diversos models diferents
i han de combinar d'alguna manera, que sovint pot ser manejada pel controlador.
Per exemple, a Facebook, si vostè amic algú,
llavors potser aquest acte d'establir aquesta relació
es pot realitzar pel controlador.
>> I, finalment, la vista és el codi que està generant el que es veu.
Moltes vegades crec que en els conjunts de processadors CS50
que en realitat no l'animen nois separar aquestes 3 coses.
És probable que tingui aquest arxiu gran, llarg, on a la part superior
vostè fa alguna consulta SQL i potser fer una mica de processament
en les dades que recupera de la base de dades,
i després de tenir tota la seva HTML a la part inferior.
I és possible que a mesura que crea més i més pàgines
que vostè va a tenir una mica de repetició de codi, ia més,
la cosa és que l'arxiu es posa molt gran i llarg
i es converteix en difícil de manejar per a gestionar.
La raó per la MVC és tan ben vist
és per a un nombre de raons.
El primer és una cosa que es diu separació de preocupacions
que és la idea que quan es té -
idealment 1 tros de codi ha de fer 1 cosa i fer-ho realment bé,
i no ha de combinar peces de codi que fan coses diferents.
Per exemple, veure el codi i el codi model,
que no tenen realment estar relacionats.
Ells no han d'estar en els mateixos arxius, de manera que quan es pot, separar
pel que és fàcil de mantenir.
>> L'altra cosa és la reutilització de codi.
És possible que es trobe escrivint la mateixa consulta SQL o fer
consultes similars que podrien ser abstrets en 1 funció,
i aquesta és la idea darrere dels models i controladors,
tenir-lo en una funció separada que es pot reutilitzar en diferents llocs en el seu projecte.
I, finalment, que està lligat a la dessecació del seu codi,
o no repetir sempre el mateix, no repeteixi vostè mateix.
Això és molt comprensible en el desenvolupament.
Sempre que pugui, no vull repetir a tu mateix, perquè si es repeteix a si mateix,
que és molt més costós de mantenir.
Si voleu canviar 1 cosa, has de canviar a tot arreu,
i que condueix a errors, i és horrible.
>> Molt bé.
Qualsevol pregunta fins ara sobre Kohana en absolut?
Gran.
Ara anem a bussejar en la sessió de codificació en directe,
i esperem que tot surti bé.
Vaig a construir bàsicament aquest lloc web
en un dels meus servidors remots, i d'aquesta manera vostès també poden
consulteu el lloc web i accedir a la pàgina web,
i també el medi ambient és millor configurat que la meva màquina remota,
perquè s'està executant Linux en comptes de OS X.
Estem, literalment, va a començar.
KohanaFramework.org.
Vaig a descarregar el codi de la pàgina web.
Vaig a copiar l'adreça de l'enllaç,
anar al meu servidor, descarregar-lo,
i jo vaig a extreure.
>> [Estudiant] Què és el més gran que vostè pot fer que el text?
[Brandon Liu] És això millor?
[Estudiant] És això factible? >> [Brandon Liu] Sí, això està bé.
He descarregat un arxiu ZIP i descomprimit que en un directori anomenat Kohana,
i canviarem el nom que CS50-Kohana,
i anem polz
Impressionant.
Aquí podeu veure un munt d'arxius diferents.
La majoria de vostès es pot ignorar - We no passarà per cada arxiu que aquí
causa de les nostres limitacions de temps,
però en general en instal · lar Kohana, el primer que es fa
és que vostè vagi al directori,
i vostè bàsicament fer algunes proves ambientals i altres coses
assegurar-se que el seu entorn és correcte per executar Kohana
i assegurar-se que tot està bé.
Vostè pot veure la majoria de les coses passen, però en general sempre es troba amb aquest problema 1
on es queixa que algun directori no té permisos d'escriptura,
i això és perquè d'alguns permisos.
No sé quant que vostès han après sobre els permisos d'arxius en CS50,
però si ho fa el desenvolupament web, que es trobarà amb aquest problema molt.
Vaig a fer que sigui escriptura
i penso que també jo he de - allà anem.
>> Bé, ara vostè pot veure tot el que passava,
i ara li dirà que reanomenar el fitxer install.php.
Vaig a moure el fitxer install.php per installed.php,
i ara si restauro,
em dóna un error, i aquí és on entra en joc la depuració
Aquí és on es pot veure el que realment va a succeir.
La cosa és que, per defecte, Kohana assumeix que
el projecte es troba en el directori arrel del teu domini,
així que està esperant que vostè estigui en demo.brandonkliu.com.
Hem de dir-li que en realitat està en una subcarpeta.
Està en una subcarpeta anomenada CS50 Kohana.
El que passa és que està malinterpretant CS50-Kohana
com una cosa més, que vaig a explicar a vostè en un segon.
Però t'he de dir que això és una cosa que és d'esperar.
El que farem és que entrarem en aquesta carpeta anomenada Bootstrap.php,
que és la carpeta de configuració on hi ha un munt de coses diferents es configuren.
Obro això.
Llavors, potser una de les primeres coses que vaig a fer és canviar el fus horari.
>> I després veurem.
¡Ajá! Just aquí.
Hi ha un munt de diferents refranys de configuració aquí,
però el que jo estic buscant és aquesta cosa anomenada URL base,
i per defecte ho tinc configurat a Kohana,
però jo vaig a canviar això a CS50-Kohana,
i crec que això hauria arreglar-ho.
Sí, molt bé.
Per defecte, per veure que està funcionant, que diu: "Hola Món".
D'on ve? Com hem arribat a Hello World?
On és exactament el codi que realment va escriure que?
Per entendre això, vaig a introduir aquest concepte anomenat enrutament.
Gairebé tots els frameworks web tenen el concepte anomenat enrutament,
que és la peça del programari que va a assignar una determinada URL
a una certa porció de codi dins del seu marc.
Per exemple, si vostè té alguna URL i et vas a algun URL com foo.com / bloc / tots
llavors el que el marc farà - o almenys que Kohana farà -
es trobarà una classe anomenada el bloc de controlador,
i que va a executar la funció anomenada acció de tot.
Sé que estic parlant de la classe i les funcions,
i jo sé que vostès no tenen classes i funcions cobert
en CS50 encara, però per ara,
es pot pensar en les classes com un simple grup de funcions,
una forma d'agrupar funcions juntes.
Això és realment tot el que necessita saber.
>> Ara bé, si ens fixem en la nostra estructura de carpetes,
dins de la carpeta de l'aplicació hi ha una altra carpeta anomenada classes,
i les altres carpetes es diuen controlador i model.
Si es mira l'interior de la carpeta Controller,
veiem que hi ha un arxiu anomenat Benvingut,
i es pot veure aquí és una classe anomenada Controller Benvingut,
i hi ha una funció anomenada Índex d'Acció,
i el que fa és que posa el cos de la resposta a Hello World.
Aquí és on s'escriu el codi.
L'altra pregunta és, bé, jo no anava a la
bla, bla, bla, / welcome / index.
Com va ser que vaig acabar aquí?
Bé, això és simplement perquè
aquí, a la part inferior del nostre arxiu d'arrencada
on establim les nostres rutes
es pot veure que s'estableixen alguns valors predeterminats per a vostè.
El controlador per defecte és benvinguda. L'acció per defecte és Index.
És per això que quan posem res allà va passar automàticament al controlador Benvingut
i l'Acció índex.
>> Tot té sentit fins ara?
Ara, vostè pot fer alguna cosa més que anar al Controlador
i una acció específica.
També és possible enviar paràmetres al controlador.
Només com a exemple,
Vaig a afegir una altra acció per a aquest controlador es pot mostrar.
Anem a trucar a aquesta acció Eco, perquè va a dir-li el que li donis,
i pel que estic bàsicament va a agafar
un paràmetre que serà enviat a través de mi en el programa d'enrutament,
i com es pot veure aquí,
aquesta línia d'aquí, es pot veure que
això bàsicament vol dir que vostè té control, i vostè té un /,
i vostè té l'acció, i vostè té un altre /,
i això serà paràmetres, i perquè tenim aquest nom ID
entre claudàtors angulars, això significa que estem anomenant aquest paràmetre ID.
Més tard, en el meu codi de controlador si vull prendre un celler d'aquest paràmetre,
Puc utilitzar el codi que he escrit, trobar el paràmetre denominat ID.
Això és el que he fet aquí, i vaig a tornar i dir:
"Vostè va dir que" això.
I ara si em vaig al nostre lloc web,
Vaig a cs50-kohana/welcome/echo/Helloooo--
oh, això és correcte.
Hi ha 1 pas vaig deixar fora.
Això és part de la idea de codificació en directe.
>> Aquí hi ha 1 cosa. Anem a veure.
Així que normalment per defecte amb una gran quantitat d'aquestes aplicacions web
vostè ha d'incloure això index.php en la seva URL,
perquè la idea es index.php és una espècie de punt d'entrada
de la seva aplicació, però és clar,
que és una espècie de molest tenir.
No vol tenir index.php apareixen en la seva URL,
i gairebé tots els framework web de la caixa
té aquest problema index.php,
i així que vostè ha de prendre algunes mesures per ser capaç d'eliminar això.
I així, en aquest cas,
el que farem és que utilitzarem un arxiu anomenat. htaccess,
i això és una cosa que és específic per al servidor web Apache,
i pot fer coses com reescriptura d'adreces URL
i redirigir URL i així successivament i així successivament,
i Kohana és prou bo per a proporcionar un arxiu htaccess plantilla. que podem utilitzar.
>> Com podeu veure, hi ha un arxiu anomenat allà example.htaccess,
i anem a copiar això. htaccess.
Vaig a obrir aquest i editar,
i, bàsicament, fa un munt de coses diferents.
La línia clau és possible que vulgueu tenir en compte és just aquí.
La idea és que aquest estableix una regla que diu que,
"Està bé, el que s'ingressi en, index.php anteposar a això."
Vostè pot veure això.
La. * Destaca per res, coincideix amb res,
i la segona part és index.php / $ 0,
i $ 0 fa referència al que va ser aparellat prèviament.
Això té sentit?
Però el realment clau que vull canviar és canviar aquesta base de reescriptura,
que és la base de la URL.
D'alguna manera s'assumeix en què està treballant des.
Vaig a afegir CS50 Kohana a això,
i d'aquesta manera ara si em treu el index.php,
que hauria de funcionar, i vaig a afegir alguns números
es pot mostrar que, efectivament, va funcionar.
Sona bé.
>> Preguntes fins ara?
[Estudiant] Com se sap per fer el 123?
Això és un argument?
Exactament. Vostè pot pensar en ell com un argument.
Però el més estrany, però, és que la forma en Kohana fa
és que no ho fa exactament com un argument.
Has de agafar així.
Has de agafar l'objecte de la petició i demanar el paràmetre que s'anomena ID,
i que el nom ID ve d'aquest arxiu d'arrencada
que vaig mostrar abans, i el nom de ID estava en aquests parèntesis angulars,
i així és com agafar aquests paràmetres.
Impressionant.
Alguna altra pregunta?
Com he dit, els controladors, que manegen la lògica d'aplicació,
així que això és 1 cas en el que es pot veure això és -
és molt bàsic, però tot i així és la lògica d'aplicació,
la idea d'agafar el paràmetre i la creació d'una nova cadena
que diu: "Vostè ha dit, bla", i després escopir de tornar a vostè.
I en general, el que es fa és crear diferents controladors.
Podeu crear controladors separats per diferents parts del seu lloc web.
>> Avui farem un lloc web molt simple,
i que serà un bloc molt bàsic.
Anem a fer un nou controlador només per als missatges en un bloc.
Però si hagués d'afegir també comentaris a l'entrada del bloc,
llavors probablement vulgui fer un nou controlador per a aquests comentaris.
Si volgués afegir usuaris, probablement afegir un controlador per als usuaris,
i, en general, la idea és que cada vegada que tingui un nou model,
un nou objecte de dades que s'està tractant,
vostè té un únic controlador per a aquest objecte de dades.
Avui només treballarem amb 1 objecte de dades,
i que hi haurà llocs de treball,
i també es pot pensar en els objectes de dades que correspon a les taules.
Generalment cada taula correspon a 1 tipus d'objecte de dades,
de manera que la taula de lloc tindrà gener model post,
que comptarà amb 1 controlador de lloc de treball corresponent a aquest,
i el mateix per comentaris, la mateixa per als usuaris, i així successivament i així successivament.
I això és una regla general.
No van a haver-hi casos especials en els que pot diferir de la,
però el 90% de les vegades això és el que vas a fer,
i jo et vaig a mostrar que això és el que farem avui.
1 més concepte abans de submergir-se de nou en el codi,
aquesta idea de mapeig relacional d'objectes.
>> Vostès ja han fet un desenvolupament conjunt de processadors web,
i has vist que faci una consulta SQL,
i tot el torna a vostè són files.
Vostè rep aquestes files, i l'índex d'ells per algun nom,
el nom de la columna i la taula,
i així és com es treballa amb ella,
i pot ser una mica molest.
Però a més, si té relacions dins de la base de dades,
com per exemple si tinc comentaris i missatges,
llavors potser vull agafar el missatge dels pares d'un comentari.
Si utilitzo només files en SQL, llavors tot el que puc aconseguir és la identificació de
del lloc dels pares i no el missatge real.
Però quan estem de codificació, el que realment volem és captar realment
el pare ja en si vegades.
Quin objecte d'assignació relacional fa és
que pren els resultats de la consulta de base de dades
i el posa en objectes per a vostè, que són molt més agradable per treballar amb
que els arrays plans i files.
>> Per exemple, ara quan tinc un comentari potser,
i vull agafar la seva missatge principal,
i jo potser comento fletxa post,
llavors el que realment em donarà l'objecte missatge
corresponent al lloc actual dels pares, no només un document d'identitat,
la qual d'una altra manera haurien d'usar i fer una altra consulta SQL per prendre el lloc,
que és molest i innecessari.
I d'altra banda, mitjançant l'assignació de totes aquestes files de dades en objectes,
també pot adjuntar més funcions als objectes,
així per exemple, vaig parlar de com les classes són essencialment grups de funcions.
Vostè pot pensar que és així.
Per exemple, potser tinc aquest objecte post,
i potser m'agradaria tenir algun tipus de funció que se li atribueix
que en el fons em diu que va ser Darrers?
Va ser publicat en l'última setmana, cert o fals?
I això és una funció que pugui adjuntar a aquest objecte,
i és molt convenient tenir-lo al mateix lloc,
i hi ha una gran quantitat de funcions diferents que es poden crear
per a aquests objectes, i és realment agradable per poder connectar-lo a una classe,
a un objecte, mentre que si vostè acaba de tenir files que provenen de la base de dades,
llavors realment no es pot adjuntar qualsevol funcionalitat a això.
És, literalment, només dades.
Una pregunta sobre això en absolut?
ORM són el desenvolupament web molt comú,
i hi ha un munt de diferents tipus de ORM,
Kohana i té el seu propi ORM.
És molt bàsic, però obtindrà una idea del que sembla.
>> Crearem un model per al nostre bloc,
i la primera cosa que òbviament hem de fer és crear una taula real
dins de la nostra base de dades per emmagatzemar les dades de fet per a aquests llocs.
El primer que faré és anar a phpMyAdmin.
Han utilitzat phpMyAdmin abans?
Bé, impressionant, així que vostès ja saben el que és això,
i jo vaig a crear una nova taula anomenada Kohana Missatges,
i que serà molt simple.
Vaig a haver de tornar a iniciar sessió
Tot el que farem avui és tenir un autor i un cos,
si prefereixes alguna cosa més simple.
Vaig a crear aquesta taula,
i ara només tenim una taula que representa els nostres missatges
amb 2 camps del nostre autor i el nostre cos.
L'altra cosa que faré ara és
configurar el meu aplicació web perquè sàpiga com connectar-se a la base de dades,
i això, de nou, és una cosa que tindrà a veure amb totes les aplicacions web.
Vostè ha de dir-li el nom d'usuari i la contrasenya
i el nom de la base de dades i així successivament i així successivament
per esbrinar com connectar realment a la base de dades.
>> En Kohana, tenim una cosa que es diu un mòdul de base de dades,
i a la carpeta de configuració que tenim aquesta carpeta anomenada base de dades,
i com es pot veure, hi ha un munt d'ajustos que ha d'establir aquí
per dir-li quin és el nom d'usuari i la contrasenya
per a la base de dades perquè pugui connectar-se a la mateixa realitat.
I com no vull que sàpiguen realment
el nom d'usuari i la contrasenya de la meva base de dades,
Tinc un arxiu que ja em vaig posar tot, i jo vaig a copiar i enganxar la volta.
Impressionant.
Okay. Crec que aquesta és tota la configuració que he de fer,
però anem a veure.
Seguirem treballant-hi, i si alguna cosa falla,
després ho arreglarem.
Ara el que faré és que vaig a crear un nou controlador.
O en realitat, ho sento.
En primer lloc he de crear un nou model.
Vaig a crear un nou model anomenat Post.php,
i el que farem és que anem a anomenar classe Model_Post.
Obtenir alguns ressaltat de sintaxi en,
i així que quan dic, "s'estén ORM," això és, bàsicament,
una mica de programació més orientada a objectes,
que, malauradament, vostès no han après a CS50, però,
però és bastant fàcil d'aprendre.
Em fa tota aquesta funcionalitat extra que ve en aquest paquet ORM,
i pel que obtenir un munt de funcions i altres coses gratis extra,
que veurà una mica en un segon.
>> En aquest moment en realitat tot el que necessito fer és crear aquesta classe.
Ni tan sols necessito fer cap funció ni res,
però jo he creat una classe que representa la taula,
i perquè m'he estès aquesta classe ORM,
Puc aconseguir un munt de coses gratis, així que per ara no has de configurar res més amunt.
I ara el que faré és que vaig a crear un nou controlador,
que vaig a nomenar blog.php,
i jo vaig a copiar el controlador Benvingut
així que no he de tornar a escriure algunes coses,
i ara he de canviar el nom d'aquest.
Ara el que faré per posar a prova per assegurar-se que tot està funcionant,
Vaig a agafar el primer post de la meva base de dades
i imprimir el cos del missatge a la pantalla.
Per fer això el que faré en primer lloc és que vaig a guardar els missatges
a una variable pel que el que farem és -
Kohana en el que fas és per agafar l'objecte missatge
que és una cosa molest, però vostè ha de fer aquesta cosa anomenada ORM :: factory,
i després es passa al nom del model que desitja,
i retorna l'objecte ORM que representa aquest model.
I després, com he dit, quan estenem l'objecte ORM,
tenim tots aquests mètodes de forma gratuïta, així que per exemple,
tenim aquesta nova funció anomenada "trobar tots"
que retorna automàticament cada missatge individual a la base de dades,
la qual cosa és bastant convenient.
>> I ara en el cos que vaig a tornar
el primer post i retornar el seu cos.
I, per descomptat, he de crear un post,
així que anem a inserir un nou post.
Vaig a dir, "Brandon, el meu primer missatge."
Impressionant.
I ara anirem als blocs
i si tot funciona bé - oh, això és de nou alguna altra cosa de permisos de fitxers ximple.
Espera 1 segon. És una mica absurd.
Això és. Okay.
Em fixo que problema de permisos.
S'estava tractant de crear alguns arxius i alguns de registre,
i els permisos, un cop més, no van ser adequadament establerts, pel que van fer
de manera que els arxius estaven escriptura i executable
pel que en realitat podria iniciar a les coses.
Ara m'està donant un altre dit excepció, "classe ORM no trobat"
i això és perquè es va oblidar un pas més.
Això és molt dolent.
A l'arxiu de la carpeta d'arrencada, hi ha aquests mòduls aquí,
que es pot optar per activar o desactivar.
Són un munt de diferents característiques que vostè pot optar per utilitzar
dins Kohana, que és una espècie d'agradable.
>> Per exemple, tenen un mòdul d'autenticació
que es pot utilitzar per a l'autenticació d'usuaris.
Tenen un mòdul d'emmagatzematge en memòria cau si vol implementar
algun tipus d'emmagatzematge en memòria cau de back-end perquè l'aplicació funcioni més ràpid i altres coses.
Hem de permetre que la base de dades i el mòdul de ORM,
perquè com he dit, estem utilitzant la base de dades, òbviament,
i també hem de habilitar el mòdul ORM,
perquè ens agradaria tenir la funcionalitat addicional, que és bo tenir.
Tot el que he de fer és comentari a aquestes 2 línies,
i ara si restauro, em va donar un altre error.
Diu: "Classe Model_Post no es troba."
Ara bé, aquest és un bon problema per tenir.
Anem a veure.
Que sigui públic.
No Espera.
Oh, estimat.
No sé per què no és capaç de trobar això.
Això és realment estrany.
Tinc aquesta mena aquí.
Suposo que hauré de - oh.
Jo sóc tan ximple. Es va oblidar afegir una etiqueta PHP.
Per això.
Ara he de desfer aquest 1 canvi que acaba de fer.
>> Okay. Això és.
Això va ser realment ximple. Jo no tenia una etiqueta PHP obertura.
Però com es pot veure, ara que està funcionant correctament, no?
Tenim 1 entrada.
Ens va agafar el primer lloc, i ara imprimim el seu cos.
Gran. Fantàstic.
Qualsevol pregunta fins ara?
Nope? Alguna pregunta?
Bé, pel que acabem de crear el model posterior, molt bàsic,
i anem a afegir algunes funcions més endavant.
Podem afegir validacions i filtrat.
Validacions són una de les coses
que els marcs de resoldre per a vostè molt, molt bé,
i no crec que vostès havien de fer això per al seu PSET CS50,
però si ho fa el desenvolupament web per al seu projecte final,
vostè està probablement va voler fer algun tipus de validació,
com no tenir els noms d'usuari en blanc,
potser tenir una contrasenya amb almenys alguna extensió, coses així.
I és molt molest per posar en pràctica aquestes coses per nosaltres mateixos,
i gairebé tots els framework web només ho fa per vostè
i li permet fer-ho d'una manera molt neta.
I el model és on se solen expressar aquestes regles de validació,
perquè està validant si un model és vàlid o no.
>> Però per ara, anem a posar això per a més tard,
i per ara treballarem en una altra part,
i anem a tractar de fer una nova vista
que mostra tots els missatges.
Els passos necessaris per realitzar una nova acció per a la inclusió de tots els llocs
és per prendre una llista de tots els missatges
i després fer la llista de tots els missatges a través d'un punt de vista.
Aquí, afortunadament, ja agafem tots els llocs
utilitzant aquesta primera línia, el trobar totes les funcions,
i ara el que farem és el que va
He estat fixant directament el cos de la resposta
passant la cadena, però ara vull utilitzar una vista,
i la diferència entre una vista i fent això
És amb la finalitat puc tenir una agradable gran plantilla, HTML,
i el que puc fer és passar-ho certes variables
i després tenir la vista omplir automàticament la seva plantilla
l'ús d'aquestes variables.
Què faré és que vaig a crear un nou punt de vista,
i jo et nomeno la vista una cosa així com "el bloc / índex"
i jo vaig a obligar bàsicament això - oh, què estic escrivint?
El meu cervell està en una altra part.
Vaig a enllaçar els llocs variables a la vista,
de manera que la vista té accés a aquesta variable lloc.
>> I així que ara he de crear aquest punt de vista,
així que aquí tenim aquesta carpeta anomenada "punts de vista"
i en primer lloc, vaig a crear una nova carpeta en què diu "Bloc".
Això és bo. D'aquesta manera podem tenir un bon jerarquia per als nostres punts de vista.
I després vaig a crear un altre arxiu d'allà anomenat "index.php".
Impressionant.
En realitat, tindrem als dos aquí.
Fer un arxiu de vista és probablement la part més senzilla de tot això,
i aquests són probablement coses que vostè ja està familiaritzat amb.
Farem una cosa molt simple,
començar a dir: "La meva llista d'entrades de bloc."
Després podem anar a través de,
i podem recórrer l'array missatges,
agafar cada lloc i dir alguna cosa com -
potser afegir una línia
i després imprimir l'autor i el cos.
Això té sentit fins ara?
I veurem si funciona.
No va passar res.
Em pregunto per què.
Oh, em vaig perdre 1 pas. Molt ximple de la meva part.
He creat un punt de vista, però no em vaig posar la vista com la resposta,
pel que ha de fer 1 cosa més.
Vostè ha de fer "aquest cos de la resposta" i ajustar perquè sigui la vista.
Això és.
Tenim la nostra partida, i després tenim un post,
i, només per diversió, anem a inserir un altre post
perquè puguem veure una llista.
I inserir aquests 2 pals,
i ara si em refresqui la pàgina,
veiem tots aquests llocs aquí.
>> Això té sentit fins ara?
Sí, una pregunta? Oh, està bé.
Com podeu veure, hem estat capaços de separar tots aquests codis terme
en diferents seccions, i llavors vostè pot veure que és més clar amb el codi de la vista.
Aquest fitxer d'aquí que representa la vista,
que només es preocupa per la representació de dades, la visualització de dades.
Això es passa algun tipus de dades, i l'únic que fa és només mostrar a vostè.
En totes les altres parts del seu codi, vostè no haurà de preocupar per res d'això,
i de la mateixa manera, el seu codi de la vista no ha de preocupar sobre qualsevol cosa
com accedir a la base de dades i així successivament i així successivament,
que és molt bo i fa el codi molt més fàcil de mantenir.
Com he dit, les vistes, que són dinàmics en aquest
és 1 arxiu, però seria generar diferents punts de vista
funció de les variables que realment passi a,
ia més, hi ha una gran quantitat de diferents funcions d'ajuda
que pot utilitzar per ajudar a escriure el seu codi més ràpid,
el que jo et mostraré en tan sols uns segons.
Sí
>> [Estudiant] Així que $ 0 és un controlador, no?
Aquesta segona cosa.
La pregunta és és de $ 0 un controlador?
$ 0 és una variable que he creat aquí.
He creat una vista en primer lloc. He assignat a alguna variable.
Després vaig passar a aquesta funció, faci el que el cos de la resposta.
Això té sentit?
[Estudiant] Així és vista :: factory, és vista com una classe
o [inaudible] Funció fàbrica biblioteca?
La pregunta es refereix a la funció de vista :: factory,
i bàsicament es tracta d'una mica més de la programació orientada a objectes en essència.
Vista és la classe de vista, i té un mètode anomenat "Factory"
i això és una manera de captar l'objecte que es diu "el bloc / índex."
I això és una mica més de coses de programació orientada a objectes
que jo no entraré aquí massa.
Ara, òbviament, volem crear nous llocs de treball,
però no vull haver de fer-ho a través d'una base de dades,
així que crearem una nova acció per a la creació d'un nou lloc,
i hi ha un munt de coses que hem de fer.
>> El primer que farem - abordarem aquestes coses una per una.
El primer que farem és que hem de crear un formulari
per a la inserció d'un nou lloc,
però jo també vaig a afegir una nova acció en primer lloc,
pel que afegir una nova acció és tan fàcil com
afegint una nova funció amb el controlador,
i per ara me'n vaig a fer alguna cosa molt bàsic,
només has de prendre aquest punt de vista i que el posi, simplement mostrar per a vostè.
I llavors ara vaig a crear un nou arxiu de vista,
i jo vaig a començar a escriure algunes coses.
El millor de Kohana és que proporcionen una gran quantitat de funcions d'ajuda
perquè vostè escrigui la vista de codi més fàcilment,
i 1 de les funcions auxiliars o mòduls d'ajuda
està al voltant de l'escriptura formes.
Per a l'escriptura de formes, jo realment no he d'escriure directament qualsevol codi HTML mi mateix.
Vostès han escrit els formularis HTML.
Ja saps el que pot ser molt, molt dolorós i incòmode per escriure formes.
No és divertit, així que afortunadament,
que, bàsicament, es pot escriure un formulari utilitzant Kohana de
formar funcions auxiliars perquè ho faci per nosaltres.
Tindrem bàsicament camps per cada cosa que tenim,
de manera que un dels autors i l'altra per als cossos.
Tindrem una etiqueta, i tindrem una entrada.
>> I finalment, tindrem una presentació.
I com es pot veure, això és molt més net per escriure
que tot el que HTML desordenat, que és una mica agradable.
Per descomptat, hi ha altres frameworks web que ho tenen encara més net que això,
però almenys això és millor que escriure el codi HTML vostè mateix.
Impressionant, així que això és el que es veu.
Això és una mica desordenat,
així que vaig a afegir un salt de línia no
per fer aquesta mirada una mica més agradable.
Bé, per descomptat, encara es veu molt, molt malament, però nosaltres només estem concentrats
en la funcionalitat per ara i no en l'estètica.
No hi ha temps per fer-ho tot.
I com poden veure, ara tenim una forma molt bàsica,
que és una espècie d'agradable.
Aquest codi, diria que és més net que el que intenta escriure un fitxer HTML formar a tu mateix,
així que això és bo.
Què segueix?
Ara hem de fer les coses amb l'acció.
Normalment, quan escriviu els formularis HTML,
vostè ha de dir-li per on es va a enviar el formulari al.
Per defecte en la majoria dels frameworks web,
se sotmet a la mateixa URL exacta, de manera que la cosa és,
si envia una sol · licitud GET a / bloc / nova,
que ha de mostrar el formulari,
però si vostè envia una sol · licitud POST a / bloc / nova amb les dades,
el que realment ha de tractar de salvar aquest lloc
i fer alguna cosa amb ell.
>> El que farem és
bàsicament tot el que hem de fer per comprovar si es tracta d'una sol · licitud posterior o una petició get
és comprovar quines són les variables de correus que es poden establir.
I si la variable missatge s'estableix, llavors anem a tractar de crear un nou lloc.
Un cop més, acabem de fer això,
i que crea un nou lloc, i estem, literalment, va a
establir els seus camps com aquest,
i després anem a guardar-lo.
I després vaig a redirigir
a la pàgina d'índex perquè puguin veure la nostra llista de llocs de nou.
Anem a intentar-ho.
Vaig a dir, "Brandon"
i després enviar el correu, i si tot va bé,
com es pot veure, em redirigeix ​​a la pàgina d'índex,
i si em desplaço fins al fons, tenim un missatge que acaba d'inserir.
Yay!
Sí, es tracta.
>> [Estudiant] Què passa si vostè l'hagués fet exactament el mateix
que va ingressar abans?
Es comprova per assegurar-se que no hi hagi duplicats
la mateixa comunicació?
Sigui per defecte, no, perquè per defecte -
Ho sentim, la pregunta és si s'introdueix en les mateixes dades en la forma
i el presentaran, es permetrà inserir un objecte duplicat,
una entrada duplicada, essencialment?
Ara mateix, sí, permetrà que vostè faci això,
perquè en les bases de dades és perfectament vàlid tenir files completament duplicats,
però si això és una preocupació, llavors vostè pot afegir validacions, per exemple,
per assegurar-se que si això és exactament el mateix que una cosa que ja existeix,
després dir que és un objecte no vàlid,
i després, es pot especificar el missatge d'error
i dir: "no vàlid perquè aquest ja existeix" o alguna cosa per l'estil.
Però en aquest cas, jo només podia crear alguna cosa duplicat.
Ara anem a tractar d'afegir algunes validacions.
El problema amb això ara mateix és que
Jo, literalment, podia presentar un missatge completament en blanc.
Puc fer clic en aquest botó en aquest moment, i cal anar.
Realment no es pot veure, però aquesta línia addicional aquí
indica que, literalment, tinc un nou lloc.
Tot just té un autor en blanc i un cos en blanc,
i nosaltres no volem permetre que la gent faci això.
Aquí és on entra en joc la validació
>> Jo puc anar al meu objecte de model,
i ara puc afegir una nova funció que especifica
quines regles de validació He d'afegir que aquest model
per assegurar-se que és vàlid o per especificar què és el que significa ser un missatge vàlid?
I vull dir que és només un missatge vàlid si tant l'autor i el cos
no estan en blanc, i així és com ho fas en Kohana.
Es crea una nova funció anomenada "Regles"
i llavors, bàsicament retorna una matriu associativa
que defineix les regles de validació per a aquest objecte.
Anem a tornar la matriu, i després el que farem és
dir "autor", que va a una matriu,
que va a una altra matriu anomenada "no està buit."
I després vaig a dir "cos".
Està bé, i la sintaxi d'aquesta i l'estructura d'aquest
pot semblar una mica complicat i una mica complicat.
Si llegeix la documentació, que és bastant senzill d'entendre,
Però, en essència això és el que cal fer per especificar
algunes regles de validació, i hi ha una gran quantitat de normes diferents
Kohana que li donarà de forma gratuïta, igual que es poden afegir regles de dir
ha de ser almenys d'aquesta longitud.
Potser ha de ser numèric. Potser ha de ser numèric alfa.
Potser ha de ser com a màxim d'aquesta longitud, així successivament i així successivament.
Hi ha un munt de diferents regles que Kohana ofereix per a vostè,
i es pot anar a la seva pàgina web, mirar la documentació,
i es pot veure les diferents coses que vostè pot fer.
>> Però això és tot el que he de fer,
i ara veurem què passa
si presento una entrada en blanc.
¿Què passarà? Oh, no, em dóna un error.
Rebut una excepció de validació.
Bé, és bo.
Em va dir que el meu model no és vàlid,
però jo no vull mostrar una excepció
als meus usuaris quan intenten presentar alguna cosa vàlid, no?
Vull donar-los algun tipus de missatge d'error més amigable
quan alguna cosa va malament.
El que farem és que anem a
embolicar tot en un bucle intent de captura.
En realitat, crec que això també és una cosa que no has après encara
en CS50, perquè C, el llenguatge de programació C,
no té excepcions, però gairebé tots els altres sol idioma
té excepcions, així que realment, realment breument,
una excepció és una cosa que una peça de codi pot
una excepció quan alguna cosa surt malament,
però llavors potser alguna altra peça de codi més amunt
pot atrapar aquesta excepció i fer alguna cosa amb ell.
>> Per exemple, en aquest cas,
el tros de codi que intenta salvar un model,
que valida el model, i si diu: "Està bé, aquest model no és vàlid"
que llançarà una excepció, i això és una espècie d'equivalent a
en C és possible retornar un -1 o alguna cosa per l'estil.
I després, per a mi, aquesta funció, el meu codi
en un nivell superior, puc tractar d'atrapar aquesta excepció
i bàsicament vaig dir: "Bé, si jo agafo l'excepció, què faré?"
O podria triar no prendre aquesta excepció i deixar que algú més amunt
detectar l'excepció, o si ningú l'agafa,
llavors tot el programa es bloqueja i diu:
"Quelcom ha fallat, i jo no podia suportar-ho."
>> Però el que fem és que es col · loca una peça de codi en un bloc try,
i després també s'afegeix una cosa anomenada un bloc catch,
que és el tipus de codi que tractar de capturar les excepcions que es puguin produir.
I pel que si agafo aquesta excepció en particular
o excepció de nul · litat, llavors el que vaig a fer és
Me'n vaig a fixar els errors - Crec que així és com ho faig -
i jo vaig a posar els errors a algun objecte.
I llavors el que vaig a fer és si colpeja aquesta excepció,
no va a redirigir i, si no redirigeix,
que sortirà de la si el bloc
i colpejar aquest bloc / nova, que vull el que vull fer.
Si hi ha un error, llavors jo vull tornar a la forma
i visualitzar aquests errors.
Ara el que vull fer és que vull passar en aquests errors
a la vista.
Bé, crec que tinc la vista aquí,
i bàsicament vull mostrar els errors si és que existeixen.
Abans d'escriure el codi HTML per això, vaig a realment ràpid
mostrar el que l'estructura d'aquest error es veu com a variables,
i aquesta és una bona pràctica en general.
Moltes vegades et donen alguna cosa a canvi d'algun mètode,
alguna funció en el marc de web,
i vostè no sap el que la variable s'assembla,
pel que vostè no sap com treballar amb ell.
Vaig a utilitzar un mètode d'impressió r bàsicament imprimir-lo.
>> I com es pot veure, em diu que és una matriu associativa,
i té una clau, autor, punts d'aquesta cadena,
autor no ha d'estar buit, i una altra tecla, el cos,
apunta a una altra cadena, el cos no ha d'estar buit.
Jo sóc com, bé, fresc.
Llavors puc recórrer l'array i imprimir cada missatge.
És bàsicament com un array associatiu amb un munt de missatges.
El que faré és "si els errors"
i jo vaig a crear una llista desordenada,
i jo vaig a recórrer tots els errors.
I això, i ara vaig a tractar d'enviar de nou,
i anem a veure el que tenim.
Ara tenim aquesta bonica llista d'errors,
i això segueix sent bastant lleig, però això, òbviament, es pot formatar per veure't bé,
però la idea bàsica és només en unes poques línies de codi,
hem estat capaços de validar el nostre model,
assegurar-se que certs camps no estaven buides,
i si alguna cosa va sortir malament, i després tornar algun tipus de missatge d'error
Llavors jo podria presentar de nou a l'usuari.
També pot personalitzar la seva validació
de manera que vostè pot tenir un missatge d'error
que és més específic per a la seva aplicació o alguna cosa per l'estil.
Tot el que és en general adaptable.
>> Lamentablement, ens estem quedant sense temps,
així que vaig a haver de tallar la sessió de codificació en viu aquí.
Hi ha un munt d'altres característiques que vull demostrar a vostè
en aquest exemple.
Per exemple, pot afegir plantilles al seu lloc,
així que potser hi ha algun tipus de codi HTML que voleu aplicar
a cada pàgina al seu lloc, i en comptes d'enganxar que
en cada arxiu de vista únic que tens, el que òbviament seria una mala pràctica,
bàsicament es pot definir aquestes plantilles,
i després en el seu controlador dic: "Bé, estic fent servir aquesta plantilla."
"Tots els meus opinions utilitzar aquesta plantilla."
I l'última cosa que vull demostrar a vostè també
que no tenim temps per és cross-site scripting,
i, bàsicament, crec que vostès han vist probablement en CS50 -
Crec que David Malan probablement va parlar del que normalment es pot injectar
El codi JavaScript en - Has parlat d'això?
Potser? Potser no?
>> Obstant això, una gran quantitat de vegades que es pot injectar codi JavaScript maliciós
en base de dades d'algú, i si ells no escapen que correctament,
a continuació, quan es presenten al fet que les dades de tornada a l'usuari,
llavors pot executar algun tipus de codi JavaScript aleatori que no vol que passi,
i que anava a demostrar com faries que d'aquí a Kohana.
En realitat és molt, molt fàcil.
Jo podria fer-ho ara mateix en 2 segons, literalment.
Tot el que has de fer és bàsicament envolten aquestes coses
en aquesta cosa anomenada entitats HTML.
I això va a escapar de forma automàtica tots els caràcters correctament
i assegureu-vos que vostè no aconsegueix aquest problema.
[Estudiant] Van escriure la primera prova de forma incorrecta.
[Brandon Liu] Oh, perdó.
>> Bé, això és tot el que havia de compartir amb vostès avui.
Aquestes diapositives seran publicat, però aquests són generalment
els únics recursos que haurien realment necessita per començar amb Kohana.
Vostè pot anar a la pàgina web. Tenen una guia de l'usuari, i també tenen un explorador API.
Podem explorar totes les diferents funcions i funcions d'ajuda que tenen per a tu.
En general, tenen prou informació al lloc web
que pot utilitzar per començar i posar-se en marxa amb Kohana.
Allà no hi ha molts tutorials, crec, per Kohana, fora del
el que tenen en el lloc web aquí, així que aquesta és probablement la seva millor aposta.
Però si vols anar amb el framework web
i no vull haver de recollir a un nou idioma,
i vostè vol alguna cosa que és relativament lleuger i té una corba d'aprenentatge fàcil,
Sens dubte recomano Kohana.
Aquesta és probablement la millor oferta per això.
El curiós, però, és si estàvem usant Ruby on Rails,
podríem haver replicat el que acabem de fer
i probablement més en menys de 3 minuts.
No és broma, però l'aprenentatge de Ruby on Rails necessita molt més temps
del que es necessitaria per aprendre Kohana.
Es tracta bàsicament de la seva elecció en el que es vol optar per aprendre,
però si vostè vol posar en marxa ràpidament,
Kohana és sens dubte una molt bona elecció.
>> Unes últimes preguntes abans d'acabar? Sí
[Estudiant] Com podem integrar aquesta
en un marc de CSS com si fes servir quan estaves donant instruccions?
La pregunta és com podem integrar això amb un marc de CSS?
El que probablement ens tornaríem a fer és que probablement inclourà
una nova carpeta on volem bolcar tots els nostres arxius CSS,
i després també ens sumem una plantilla.
A la plantilla que havíem incloem aquests arxius CSS
per assegurar-se que estan referenciades a cada pàgina,
i després, quan en realitat s'està escrivint HTML,
que acaba d'afegir classes i altres coses apropiades,
i, per exemple, quan vostè està utilitzant alguna cosa com la forma
funció auxiliar, pot afegir més paràmetres després
per especificar quines classes desitja que s'adjunta a diverses coses
perquè poguessin dissenyar correctament, i això és bàsicament com anirà.
>> Alguna altra pregunta?
Impressionant.
Gràcies pel seu temps i gràcies per venir.
Jo no anava a afegir molt més,
però 1 cosa molt ràpida és que no tenim un vincle
a la forma.
Realment ximple.
Anem a afegir un - en realitat a la vista, bloc, índex,
anem molt ràpid afegir un enllaç que va a la nova pàgina,
la pàgina on podem inserir un nou lloc.
Anem a fer això.
El millor és que hi ha tot aquest grup de funcions d'ajuda HTML
de fer coses diferents per a vostè, de manera que ja es va veure les entitats
funcionar aquí, però també tenen una funció anomenada "àncora"
el que pot escriure al blog / nou
i dir: "Publica un nou bloc."
I seria crear aquest vincle per a tu,
i això sembla molt trivial de fer, però això és bo,
perquè suposes que està traslladant seu lloc web a partir de l'1 de domini a un altre.
I si vostè acaba d'escriure les adreces URL a tu mateix,
llavors vostè hauria de canviar totes les adreces URL.
O potser vostè es va mudar des d'1 subcarpeta a una altra subcarpeta.
Vostè hauria de canviar totes les adreces URL a tu mateix,
i això no és divertit.
Podeu usar aquesta àncora aquí,
i vostè pot canviar el domini o el prefix subcarpeta
a l'arxiu de configuració una vegada,
i després s'aplica que a tot arreu, i això és, de nou,
un gran exemple de no repetir a tu mateix, l'assecat del seu codi de sortida.
Allà on estàs repetint, tractar d'extreure en una mena d'arxiu de configuració
o per a una funció diferent i han de manejar això per a vostè.
>> I l'última cosa que jo volia mostrar era
Suposem que estem de tornada en aquest post, i jo havia compost alguns realment llarg assaig,
però em vaig oblidar d'incloure el meu autor.
Ara, quan faig clic a "Enviar missatge"
Acabo de perdre tot.
No! Molt trist.
Així que, com tractar amb això?
Això és el que fem.
El que fem és aquí per aquestes funcions d'entrada i àrea de text,
Si s'inclou un segon paràmetre, llavors el valor d'aquest segon paràmetre
serà el que el camp serà inicialment poblada.
El que podríem fer és en el nostre controlador bloc,
podríem enllaçar una altra variable.
Llámelo "valors" potser.
I esdevindrà en la matriu post, literalment.
Això vol dir que si la validació no,
passar a mi la matriu post que he presentat des de l'última sol · licitud,
i d'aquesta manera pot utilitzar els valors de la meva última presentació
per repoblar els camps.
Ara puc fer alguna cosa com a valors d'autor
i valors del cos, i d'aquesta manera ara si faig algunes coses a l'atzar
i feu clic a "Enviar Missatge", llavors es queda allà.
Però ens quedarem en un altre problema.
Això funciona, però si vaig a la pàgina de la primera vegada,
que va a xocar, i això és perquè la primera vegada
ens anem a la pàgina, aquesta variable missatge no s'ha definit encara.
És nul. No existeix.
>> I el que volem dir és que si existeix aquesta clau,
a continuació, tornar el valor d'aquesta matriu,
però si no hi ha la clau, a continuació, tornar una cadena en blanc.
Aquesta és la funcionalitat que volem aquí.
Volem comprovar si la clau existeix abans d'intentar accedir a la matriu,
i afortunadament,
Kohana també ens dóna una funció auxiliar per això.
Tenen tot aquest conjunt de funcions
sota el nom de ARR, acrònim de matriu,
i tenen 1 funció anomenada "aconseguir"
i es pot passar de la matriu,
i vostè pot passar el nom de la clau.
Llavors, bàsicament, el que farà és que es tracti d'obtenir aquesta clau,
però si aquesta clau no existeix en la matriu,
després tornarà blanc, o també es pot donar un valor específic, crec jo,
la qual cosa és bo.
Ara bé, si fem el mateix una altra vegada,
després veus ara funciona la primera vegada,
i de nou, si escrivim en algunes coses a l'atzar
i tractar de presentar, a continuació, es queda allà.
>> I suposo que també et puc mostrar com afegir una plantilla molt ràpid.
El que podem fer en primer lloc és que podem afegir una nova vista anomenada "template.php"
dins de la carpeta Views,
i el que faré és que vaig a imprimir una cosa que es diu "contingut"
que serà la meva pàgina principal.
I potser en el mateix fons que vaig a afegir, per exemple,
els drets d'autor.
[Pregunta estudiant inaudible]
[Brandon Liu] Potser aquesta és una plantilla molt bàsica que vull utilitzar.
Vull tenir una carpeta amb els meus drets d'autor a cada pàgina,
i ara el que faré dins del meu controlador
és que ara en lloc de dir, "s'estén Controller"
Vaig a dir, "s'estén Controller_Template"
i ara en comptes de dir, "cos de la resposta és igual a aquest punt de vista,"
Vaig a dir, "aquest contingut de la plantilla és -"
i crec - Com poso un signe igual?
M'oblidi. Sí, això vaig pensar.
I ara em vaig posar aquesta variable el contingut sigui igual a la vista.
Jo puc fer el mateix aquí.
I ara si em refresqui, es pot veure ara aquest autor s'afegeix allà,
i acaba de fer un post a l'atzar,
i després, de nou, vostè ha de veure que el dret d'autor és a la part inferior de la pàgina.
>> Gran. Això és tot el que volia mostrar.
[Aplaudiments]
Alguna pregunta?
[CS50.TV]