>> [Seminario] [Kohana: Un PHP Framework ligero]
[Brandon Liu] [Harvard University]
[Este es CS50.] [CS50.TV]
>> Hola a todos. Mi nombre es Brandon.
Soy un joven aquí en la ciencia de la computación de la universidad haciendo, y hoy vamos a hablar de
Kohana, que es un marco de desarrollo web PHP.
Hoy va a ser un seminario de codificación en directo,
así que estoy básicamente va a pasar 5-10 minutos explicando lo Kohana es,
y entonces yo estoy literalmente va a construir un super simple blog
para usted aquí, literalmente desde cero.
Vamos a descargar el código de la página web Kohana,
y vamos a empezar a construir un blog, y es de esperar que va a ser muy instructivo,
porque verá quizá tal vez voy a cometer algunos errores,
y verás a recuperar de ellos,
o verás mi proceso de pensamiento como yo construyo a través de este blog,
y mientras tanto, también se familiarizará con el propio marco.
Esperemos que va a ser un ejercicio muy instructivo.
>> En primer lugar, ¿qué es exactamente un marco?
Si usted ha estado tomando CS50 hasta el momento, realmente no ha funcionado con cualquier
marcos todavía, y la cosa es esta.
Usted probablemente ha hecho 1 desarrollo web pset ya,
y digamos que continúe la construcción de sitios web y mantener sitios web de construcción.
Usted comenzará a notar un par de cosas.
La primera cosa que usted notará es que te estás haciendo las mismas cosas
una y otra vez todo el tiempo,
cosas como la limpieza de los datos de entrada del usuario,
cosas como la organización de sus archivos de una manera determinada.
La otra cosa que también probablemente notará es que su código
pueden empezar a ser muy, muy sucio,
y es posible que deje desordenado y apenas tiene un tiempo muy difícil mantenerlo,
o puede comenzar a estructurar su código y lo que es modular
de cierta manera para que sea más fácil de mantener.
>> Aquí es donde los frameworks web, básicamente, entró
Estas personas que habían construido una gran cantidad de sitios web, dijeron,
"No necesitamos volver a hacer esto cada vez que construimos un sitio web."
"¿Por qué no nos limitamos a hacer un paquete que hace todas estas cosas para usted
cada vez que quieren construir un sitio web? "
Así que cuando usted hace una nueva página web,
sólo se centran en lo que exactamente este sitio web en particular se trata.
No es necesario repetir todo el varias configuraciones
y la separación de los códigos y la reescritura del código
que a menudo tienen que ver cuando estás haciendo sitios web.
La idea es que un marco le permite escribir un código de nivel superior
sin tener que preocuparse por los detalles de nivel inferior.
Un detalle de nivel inferior puede ser algo como
tratar con la limpieza de los datos de entrada de usuario.
Eso es algo que usted no debe realmente necesidad de preocuparse.
Usted debe centrarse en lo que su asignación web es realmente acerca.
Se elimina una gran cantidad de código repetitivo.
Es una arquitectura para su proyecto.
>> La más popular sería Modelo-Vista-Controlador,
que voy a hablar en un segundo.
Y muchas veces estos marcos encarnan un conjunto de procedimientos,
normas y mejores prácticas para que usted utilice
de manera que cuando se adopta el marco web
usted tiene que escribir el código de una determinada manera,
y es en general un conjunto acordado de principios
por la comunidad que es generalmente aceptado ser
una buena manera de escribir código.
Esto hace que su código sea más fácil de mantener, más usable,
así sucesivamente y así sucesivamente.
Y, por último, lo que quiero hacer hincapié sobre los marcos
frente a las bibliotecas es esta idea acerca de la inversión de control, y la cosa es esta.
La diferencia entre una biblioteca y un marco es que con una biblioteca
usted todavía está escribiendo el programa principal,
y que está especie de invocación de la biblioteca
y exhortando a la biblioteca a hacer algo por ti.
La diferencia entre una biblioteca y un marco
es que el marco comienza con el control,
y se invoca su código,
así que usted puede pensar en él como - es por eso que se llama un marco -
el marco proporciona este marco y estructura de su código,
y rellenar los agujeros,
y esto se hará más aparente en un segundo
cuando ves a comenzar a escribir código en el contexto del marco.
Vas a ver que me estoy llenando los vacíos,
y el marco es una especie de control de todas las piezas en movimiento,
y tengo que poner las piezas en los lugares correctos.
>> Hoy vamos a hablar de Kohana,
que es uno de los muchos marcos de PHP.
Hay frameworks web, y los hay en casi todos los idiomas,
y estoy recogiendo Kohana Kohana, porque es sin duda
y generalmente reconocido como el framework PHP más fácil de recoger.
Es el más ligero.
Hay otros por ahí que vienen con muchas, muchas más características,
pero tienden a ser más difícil de recoger.
Y, por último, Kohana utiliza la arquitectura MVC.
Es lo suficientemente ligero que podemos construir, literalmente, un proyecto
aquí justo en frente de tus ojos, y usted puede casi
seguir adelante con bastante facilidad.
>> ¿Qué es la arquitectura MVC?
Es sinónimo de Modelo-Vista-Controlador,
y tal vez si se piensa en el código que has escrito hasta ahora
para algunos de sus conjuntos de procesadores de desarrollo web
usted puede ser capaz de ver algo de esto, pero por lo general cuando se inicia la escritura
una aplicación web más complejos,
la división entre estos segmentos 3 se hace más y más evidente.
Presenté el MVC aquí una especie de como una pila,
y, a menudo se le oye hablar de las pilas en el desarrollo web,
y esto es para ilustrar la idea de que
cada capa, cada componente se esfuerza para comunicarse sólo
entre otros 2 componentes.
Alguien tiene acceso a su sitio web como un cliente o un navegador.
Ellos interactúan con el programa a través del código de la vista.
El código de la vista interactúa con el controlador.
El controlador interactúa con el modelo,
y el modelo interactúa con la base de datos de SQL.
Y no hay ningún salto en el medio si se escribe el código correctamente.
>> ¿Qué hacen estas cosas?
El modelo es esencialmente la parte de código que se ocupa de sus datos.
Cualquier cosa que se ocupa de su base de datos, con los objetos que se almacenan,
o recuperar los objetos en la base de datos,
eso es todo manejado por el modelo.
Tal vez usted tiene objetos en su base de datos.
Vamos a crear un modelo que tiene que ver con los mensajes,
por lo que un mensaje puede tener algunos atributos a la misma.
Usted puede tener funciones en torno a almacenar esos mensajes o recuperar mensajes
o filtrar los mensajes y así sucesivamente y así sucesivamente,
y eso es todo el código que está a cargo de la modelo.
El controlador es una especie de la lógica de la aplicación,
y un montón de cosas diferentes puede ir en la lógica de la aplicación.
Si usted está hablando con una API diferente,
eso puede ser cuando usted está tratando con la lógica de la aplicación.
Si usted está tratando de tener para traer los datos de varios modelos diferentes
y tienen que combinar de alguna manera, que a menudo puede ser manejada por el controlador.
Por ejemplo, en Facebook, si usted amigo alguien,
entonces tal vez ese acto de establecer esa relación
se puede realizar por el controlador.
>> Y, por último, la vista es el código que está generando lo que se ve.
Muchas veces creo que en los conjuntos de procesadores CS50
que en realidad no le animan chicos separar estas 3 cosas.
Es probable que tenga este archivo grande, largo, donde en la parte superior
usted hace alguna consulta SQL y tal vez hacer algo de procesamiento
en los datos que recupera de la base de datos,
y luego de tener toda su HTML en la parte inferior.
Y es posible que a medida que crea más y más páginas
que usted va a tener un poco de repetición de código, y además,
la cosa es que el archivo se pone muy grande y largo
y se convierte en difícil de manejar para gestionar.
La razón por la MVC es tan bien visto
es para un número de razones.
Lo primero es algo que se llama separación de preocupaciones
que es la idea de que cuando se tiene -
idealmente 1 trozo de código debe hacer 1 cosa y hacerlo realmente bien,
y usted no debe combinar piezas de código que hacen cosas diferentes.
Por ejemplo, ver el código y el código modelo,
que no tienen realmente estar relacionados.
Ellos no tienen que estar en los mismos archivos, por lo que cuando se puede, separarlos
por lo que es fácil de mantener.
>> La otra cosa es la reutilización de código.
Es posible que se encuentre escribiendo la misma consulta SQL o hacer
consultas similares que podrían ser abstraídos en 1 función,
y esa es la idea detrás de los modelos y controladores,
tenerlo en una función separada que se puede reutilizar en diferentes lugares en su proyecto.
Y, por último, que está atado a la desecación de su código,
o no repetir siempre lo mismo, no repita usted mismo.
Esto es muy comprensible en el desarrollo.
Siempre que pueda, no quiero repetir a ti mismo, porque si se repite a sí mismo,
que es mucho más costoso de mantener.
Si desea cambiar 1 cosa, tienes que cambiarlo en todas partes,
y que conduce a errores, y es horrible.
>> Muy bien.
Cualquier pregunta hasta ahora sobre Kohana en absoluto?
Grande.
Ahora vamos a bucear en la sesión de codificación en directo,
y esperemos que todo salga bien.
Voy a construir básicamente este sitio web
en uno de mis servidores remotos, y de esa manera ustedes también pueden
consulte el sitio web y acceder a la página web,
y también el medio ambiente es mejor configurado que mi máquina remota,
porque se está ejecutando Linux en lugar de OS X.
Estamos, literalmente, va a empezar.
KohanaFramework.org.
Voy a descargar el código de la página web.
Voy a copiar la dirección del enlace,
ir a mi servidor, descargarlo,
y yo voy a extraerlo.
>> [Estudiante] ¿Qué es lo más grande que usted puede hacer que el texto?
[Brandon Liu] ¿Es eso mejor?
[Estudiante] ¿Es eso factible? >> [Brandon Liu] Sí, eso está bien.
He descargado un archivo ZIP y descomprimido que en un directorio llamado Kohana,
y vamos a cambiar el nombre que CS50-Kohana,
y vamos pulg
Impresionante.
Aquí puede ver un montón de archivos diferentes.
La mayoría de ustedes se puede ignorar - We no va a pasar por cada archivo que está aquí
debido a nuestras limitaciones de tiempo,
pero por lo general al instalar Kohana, el primero que se hace
es que usted vaya al directorio,
y usted básicamente hacer algunas pruebas ambientales y otras cosas
asegurarse de que su entorno está configurado correctamente para ejecutar Kohana
y asegurarse de que todo está bien.
Usted puede ver la mayoría de las cosas pasan, pero por lo general siempre se encuentra con este problema 1
donde se queja de que algún directorio no tiene permisos de escritura,
y eso es porque de algunos permisos.
No sé cuánto que ustedes han aprendido acerca de los permisos de archivos en CS50,
pero si lo hace el desarrollo web, que va a encontrarse con este problema mucho.
Voy a hacer que sea escribible
y pienso que también yo tengo que - allá vamos.
>> Bien, ahora usted puede ver todo lo que pasaba,
y ahora le dirá que renombrar el archivo install.php.
Voy a mover el archivo install.php para installed.php,
y ahora si restauro,
me da un error, y aquí es donde entra en juego la depuración
Aquí es donde se puede ver lo que realmente va a suceder.
La cosa es que, por defecto, Kohana asume que
el proyecto se encuentra en el directorio raíz de tu dominio,
así que está esperando que usted esté en demo.brandonkliu.com.
Tenemos que decirle que en realidad está en una subcarpeta.
Está en una subcarpeta llamada CS50 Kohana.
Lo que pasa es que está malinterpretando CS50-Kohana
como algo más, que voy a explicar a usted en un segundo.
Pero debo decirte que eso es algo que es de esperar.
Lo que vamos a hacer es que vamos a entrar en esta carpeta llamada Bootstrap.php,
que es la carpeta de configuración donde hay un montón de cosas diferentes se configuran.
Abro eso.
Entonces, tal vez una de las primeras cosas que voy a hacer es cambiar el huso horario.
>> Y luego vamos a ver.
¡Ajá! Justo aquí.
Hay un montón de diferentes refranes de configuración aquí,
pero el que yo estoy buscando es esta cosa llamada URL base,
y por defecto lo tengo configurado en Kohana,
pero yo voy a cambiar eso a CS50-Kohana,
y creo que eso debería arreglarlo.
Sí, muy bien.
Por defecto, para ver que está funcionando, que dice: "Hola Mundo".
¿De dónde viene? ¿Cómo hemos llegado a Hello World?
¿Dónde está exactamente el código que realmente escribió que?
Para entender eso, voy a introducir este concepto llamado enrutamiento.
Casi todos los frameworks web tienen el concepto llamado enrutamiento,
que es la pieza del software que va a asignar una determinada URL
a una cierta porción de código dentro de su marco.
Por ejemplo, si usted tiene alguna URL y te vas a algún URL como foo.com / blog / todos
entonces lo que el marco va a hacer - o por lo menos lo que Kohana va a hacer -
se va a encontrar una clase llamada el blog de controlador,
y que va a ejecutar la función denominada acción de todo.
Sé que estoy hablando de la clase y las funciones,
y yo sé que ustedes no tienen clases y funciones cubierto
en CS50 todavía, pero por ahora,
se puede pensar en las clases como un simple grupo de funciones,
una forma de agrupar funciones juntas.
Eso es realmente todo lo que necesita saber.
>> Ahora bien, si nos fijamos en nuestra estructura de carpetas,
dentro de la carpeta de la aplicación hay otra carpeta llamada clases,
y las otras carpetas se llaman controlador y modelo.
Si se mira el interior de la carpeta Controller,
vemos que hay un archivo llamado Bienvenido,
y se puede ver aquí es una clase llamada Controller Bienvenido,
y hay una función llamada Índice de Acción,
y lo que hace es que pone el cuerpo de su respuesta a Hello World.
Ahí es donde se escribe el código.
La otra pregunta es, bueno, yo no iba a la
bla, bla, bla, / welcome / index.
¿Cómo fue que terminé aquí?
Bueno, eso es simplemente porque
aquí, en la parte inferior de nuestro archivo de arranque
donde establecemos nuestras rutas
se puede ver que se establecen algunos valores predeterminados para usted.
El controlador por defecto es bienvenida. La acción predeterminada es Index.
Es por eso que cuando ponemos nada allí pasó automáticamente al controlador Bienvenido
y la Acción índice.
>> Todo tiene sentido hasta ahora?
Ahora, usted puede hacer algo más que ir al Controlador
y una acción específica.
También es posible enviar parámetros al controlador.
Sólo como ejemplo,
Voy a añadir otra acción para este controlador se puede mostrar.
Vamos a llamar a esta acción Eco, porque va a decirle lo que le des,
y por lo que estoy básicamente va a agarrar
un parámetro que va a ser enviado a través de mí en el programa de enrutamiento,
y como se puede ver aquí,
esta línea de aquí, se puede ver que
esto básicamente significa que usted tiene control, y usted tiene un /,
y usted tiene la acción, y usted tiene otro /,
y eso va a ser parámetros, y porque tenemos este nombre ID
entre corchetes angulares, eso significa que estamos nombrando este parámetro ID.
Más tarde, en mi código de controlador si quiero tomar una bodega de ese parámetro,
Puedo usar el código que he escrito, encontrar el parámetro denominado ID.
Eso es lo que he hecho aquí, y voy a regresar y decir:
"Usted dijo que" eso.
Y ahora si me voy en nuestro sitio web,
Voy a cs50-kohana/welcome/echo/Helloooo--
oh, eso es correcto.
Hay 1 paso dejé fuera.
Esto es parte de la idea de codificación en directo.
>> Aquí hay 1 cosa. Vamos a ver.
Así que normalmente por defecto con una gran cantidad de estas aplicaciones web
usted tiene que incluir esto index.php en su URL,
porque la idea se index.php es una especie de punto de entrada
de su aplicación, pero por supuesto,
que es una especie de molesto tener.
Usted no quiere tener index.php aparecen en su URL,
y casi todos los framework web de la caja
tiene este problema index.php,
y así que usted tiene que tomar algunas medidas para ser capaz de eliminar eso.
Y así, en este caso,
lo que vamos a hacer es que vamos a utilizar un archivo llamado. htaccess,
y esto es algo que es específico para el servidor web Apache,
y puede hacer cosas como reescritura de direcciones URL
y redirigir URLs y así sucesivamente y así sucesivamente,
y Kohana es lo suficientemente bueno para proporcionar un archivo htaccess plantilla. que podemos utilizar.
>> Como puede ver, hay un archivo llamado allí example.htaccess,
y vamos a copiar eso. htaccess.
Voy a abrir este y editarlo,
y, básicamente, hace un montón de cosas diferentes.
La línea clave es posible que desee tener en cuenta es justo aquí.
La idea es que este establece una regla que dice que,
"Está bien, lo que se ingrese en, index.php anteponer a eso."
Usted puede ver eso.
La. * Destaca por nada, coincide con nada,
y la segunda parte es index.php / $ 0,
y $ 0 hace referencia a lo que fue emparejado previamente.
¿Eso tiene sentido?
Pero lo realmente clave que quiero cambiar es cambiar esta base de reescritura,
que es la base de la URL.
De alguna manera se asume en el que está trabajando desde.
Voy a añadir CS50 Kohana a eso,
y de esa manera ahora si me quita el index.php,
que debería funcionar, y voy a agregar algunos números
se puede mostrar que, efectivamente, funcionó.
Suena bien.
>> ¿Preguntas hasta ahora?
[Estudiante] ¿Cómo se sabe para hacer el 123?
¿Eso es un argumento?
Exactamente. Usted puede pensar en él como un argumento.
Pero lo más extraño, sin embargo, es que la forma en Kohana hace
es que no lo hace exactamente como un argumento.
Tienes que agarrar así.
Tienes que agarrar el objeto de la petición y pedir el parámetro que se denomina ID,
y que el nombre ID viene de ese archivo de arranque
que mostré antes, y el nombre de ID estaba en esos paréntesis angulares,
y así es como agarrar esos parámetros.
Impresionante.
¿Alguna otra pregunta?
Como he dicho, los controladores, que manejan la lógica de aplicación,
así que eso es 1 caso en el que se puede ver eso es -
es muy básico, pero aún así es la lógica de aplicación,
la idea de agarrar el parámetro y la creación de una nueva cadena
que dice: "Usted ha dicho, bla", y luego escupir que volver a usted.
Y en general, lo que se hace es crear diferentes controladores.
Puede crear controladores separados para diferentes partes de su sitio web.
>> Hoy vamos a hacer un sitio web muy simple,
y que va a ser un blog muy básico.
Vamos a hacer un nuevo controlador sólo para los mensajes en un blog.
Pero si tuviera que añadir también comentarios a la entrada del blog,
entonces probablemente quiera hacer un nuevo controlador para esos comentarios.
Si quisiera agregar usuarios, probablemente añadir un nuevo controlador para los usuarios,
y, en general, la idea es que cada vez que tenga un nuevo modelo,
un nuevo objeto de datos que se está tratando,
usted tiene un único controlador para ese objeto de datos.
Hoy sólo vamos a trabajar con 1 objeto de datos,
y que va a haber puestos de trabajo,
y también se puede pensar en los objetos de datos que corresponde a las tablas.
Generalmente cada tabla corresponde a 1 tipo de objeto de datos,
por lo que la tabla de puesto tendrá 1 modelo post,
que contará con 1 controlador de puesto de trabajo correspondiente a ese,
y lo mismo para comentarios, la misma para los usuarios, y así sucesivamente y así sucesivamente.
Y eso es una regla general.
No van a haber casos especiales en los que puede diferir de la,
pero el 90% de las veces eso es lo que vas a hacer,
y yo te voy a mostrar que eso es lo que vamos a hacer hoy.
1 más concepto antes de sumergirse de nuevo en el código,
esta idea de mapeo relacional de objetos.
>> Ustedes ya han hecho un desarrollo conjunto de procesadores web,
y has visto que haga una consulta SQL,
y todo lo devuelve a usted son filas.
Usted recibe estas filas, y el índice de ellos por algún nombre,
el nombre de la columna y la tabla,
y así es como se trabaja con ella,
y puede ser un poco engorroso.
Pero además, si tiene relaciones dentro de su base de datos,
como por ejemplo si tengo comentarios y mensajes,
entonces tal vez quiero agarrar el mensaje de los padres de un comentario.
Si utilizo sólo filas en SQL, entonces todo lo que puedo conseguir es el ID de
del puesto de los padres y no el mensaje real.
Pero cuando estamos de codificación, lo que realmente queremos es captar realmente
el padre puesto en sí veces.
¿Qué objeto de asignación relacional hace es
que toma los resultados de la consulta de base de datos
y lo pone en objetos para usted, que son mucho más agradable para trabajar con
que los arrays planos y filas.
>> Por ejemplo, ahora cuando tengo un comentario tal vez,
y quiero agarrar su mensaje principal,
y yo tal vez comento flecha post,
entonces lo que realmente me dará el objeto mensaje
correspondiente al puesto actual de los padres, no sólo un documento de identidad,
la que de otro modo habrían de usar y hacer otra consulta SQL para tomar el puesto,
que es engorroso e innecesario.
Y por otra parte, mediante la asignación de todas estas filas de datos en objetos,
también puede adjuntar más funciones a los objetos,
así por ejemplo, hablé de cómo las clases son esencialmente grupos de funciones.
Usted puede pensar que es así.
Por ejemplo, tal vez tengo este objeto post,
y tal vez me gustaría tener algún tipo de función que se le atribuye
que en el fondo me dice que fue Últimos?
Fue publicado en la última semana, cierto o falso?
Y eso es una función que pueda adjuntar a dicho objeto,
y es muy conveniente tenerlo en el mismo lugar,
y hay una gran cantidad de funciones diferentes que se pueden crear
para estos objetos, y es realmente agradable para poder conectarlo a una clase,
a un objeto, mientras que si usted acaba de tener filas que provienen de su base de datos,
entonces realmente no se puede adjuntar cualquier funcionalidad a eso.
Es, literalmente, sólo datos.
¿Una pregunta sobre eso en absoluto?
ORM son el desarrollo web muy común,
y hay un montón de diferentes tipos de ORM,
Kohana y tiene su propio ORM.
Es muy básico, pero obtendrá una idea de lo que parece.
>> Vamos a crear un modelo para nuestro blog,
y la primera cosa que obviamente tenemos que hacer es crear una tabla real
dentro de nuestra base de datos para almacenar los datos de hecho para esos puestos.
Lo primero que voy a hacer es ir a phpMyAdmin.
¿Han utilizado phpMyAdmin antes?
Bueno, impresionante, así que ustedes ya saben lo que es eso,
y yo voy a crear una nueva tabla llamada Kohana Mensajes,
y que va a ser muy simple.
Voy a tener que volver a iniciar sesión
Todo lo que vamos a hacer hoy es tener un autor y un cuerpo,
si prefieres algo más simple.
Voy a crear esa mesa,
y ahora sólo tenemos una tabla que representa nuestros mensajes
con 2 campos de nuestro autor y nuestro cuerpo.
La otra cosa que voy a hacer ahora es
configurar mi aplicación web para que sepa cómo conectarse a la base de datos,
y esto, de nuevo, es algo que tendrá que ver con todas las aplicaciones Web.
Usted tiene que decirle el nombre de usuario y la contraseña
y el nombre de la base de datos y así sucesivamente y así sucesivamente
para averiguar cómo conectar realmente a su base de datos.
>> En Kohana, tenemos algo que se llama un módulo de base de datos,
y en la carpeta de configuración que tenemos esta carpeta llamada base de datos,
y como se puede ver, hay un montón de ajustes que tiene que establecer aquí
para decirle cuál es el nombre de usuario y la contraseña
para la base de datos para que pueda conectarse a la misma realidad.
Y como no quiero que sepan realmente
el nombre de usuario y la contraseña de mi base de datos,
Tengo un archivo que ya me puse todo, y yo voy a copiar y pegar la vuelta.
Impresionante.
Okay. Creo que esa es toda la configuración que tengo que hacer,
pero vamos a ver.
Vamos a seguir trabajando en ella, y si algo falla,
luego lo arreglaremos.
Ahora lo que voy a hacer es que voy a crear un nuevo controlador.
O en realidad, lo siento.
En primer lugar tengo que crear un nuevo modelo.
Voy a crear un nuevo modelo llamado Post.php,
y lo que vamos a hacer es que vamos a llamarlo clase Model_Post.
Obtener algunos resaltado de sintaxis en,
y así que cuando digo, "se extiende ORM," eso es, básicamente,
un poco de programación más orientada a objetos,
que, desgraciadamente, ustedes no han aprendido en CS50, sin embargo,
pero es bastante fácil de aprender.
Me da toda esta funcionalidad extra que viene en este paquete ORM,
y por lo que obtener un montón de funciones y otras cosas gratis extra,
que verá un poco en un segundo.
>> En este momento en realidad todo lo que necesito hacer es crear esta clase.
Ni siquiera necesito hacer ninguna función ni nada,
pero yo he creado una clase que representa la tabla,
y porque me he extendido esta clase ORM,
Puedo conseguir un montón de cosas gratis, así que por ahora no tienes que configurar nada más arriba.
Y ahora lo que voy a hacer es que voy a crear un nuevo controlador,
que voy a nombrar blog.php,
y yo voy a copiar el controlador Bienvenido
así que no tengo que volver a escribir algunas cosas,
y ahora tengo que cambiar el nombre de este.
Ahora lo que voy a hacer para poner a prueba para asegurarse de que todo está funcionando,
Voy a agarrar el primer post de mi base de datos
e imprimir el cuerpo del mensaje en la pantalla.
Para hacer eso lo que voy a hacer en primer lugar es que voy a guardar los mensajes
a una variable por lo que lo que vamos a hacer es -
Kohana en lo que haces es para agarrar el objeto mensaje
que es algo engorroso, pero usted tiene que hacer esta cosa llamada ORM :: factory,
y luego se pasa en el nombre del modelo que desea,
y devuelve el objeto ORM que representa ese modelo.
Y luego, como he dicho, cuando extendemos el objeto ORM,
tenemos todos estos métodos de forma gratuita, así que por ejemplo,
tenemos esta nueva función llamada "encontrar todos"
que devuelve automáticamente cada mensaje individual en la base de datos,
lo cual es bastante conveniente.
>> Y ahora en el cuerpo que voy a regresar
el primer post y devolver su cuerpo.
Y, por supuesto, tengo que crear un post,
así que vamos a insertar un nuevo post.
Voy a decir, "Brandon, mi primer mensaje."
Impresionante.
Y ahora vamos a ir a los blogs
y si todo funciona bien - oh, esto es de nuevo alguna otra cosa de permisos de ficheros tonto.
Espera 1 segundo. Es un poco absurdo.
Eso es. Okay.
Me fijo que problema de permisos.
Se estaba tratando de crear algunos archivos y algunos de registro,
y los permisos, una vez más, no fueron adecuadamente establecidos, por lo que hicieron
por lo que los archivos estaban escribible y ejecutable
por lo que en realidad podría iniciar a las cosas.
Ahora me está dando otro dicho excepción, "clase ORM no encontrado"
y eso es porque se me olvidó un paso más.
Eso es muy malo.
En el archivo de la carpeta de arranque, hay estos módulos aquí,
que se puede optar por activar o desactivar.
Son un montón de diferentes características que usted puede optar por utilizar
dentro de Kohana, que es una especie de agradable.
>> Por ejemplo, tienen un módulo de autenticación
que se puede utilizar para la autenticación de usuarios.
Tienen un módulo de almacenamiento en caché si desea implementar
algún tipo de almacenamiento en caché de back-end para que la aplicación funcione más rápido y otras cosas.
Tenemos que permitir que la base de datos y el módulo de ORM,
porque como he dicho, estamos usando la base de datos, obviamente,
y también tenemos que habilitar el módulo ORM,
porque nos gustaría tener la funcionalidad adicional, que es bueno tener.
Todo lo que tengo que hacer es descomentar estas 2 líneas,
y ahora si restauro, me dio otro error.
Dice: "Clase Model_Post no se encuentra."
Ahora bien, este es un buen problema para tener.
Vamos a ver.
Que sea público.
No. Espera.
Oh, querido.
No sé por qué no es capaz de encontrar eso.
Eso es realmente extraño.
Tengo esta clase aquí.
Supongo que voy a tener que - oh.
Yo soy tan tonto. Se me olvidó añadir una etiqueta PHP.
Por eso.
Ahora tengo que deshacer ese 1 cambio que acaba de hacer.
>> Okay. Eso es.
Eso fue realmente tonto. Yo no tenía una etiqueta PHP apertura.
Pero como se puede ver, ahora que está funcionando correctamente, ¿no?
Tenemos 1 mensaje.
Nos agarró el primer puesto, y ahora imprimimos su cuerpo.
Grande. Fantástico.
Cualquier pregunta hasta ahora?
Nope? ¿Alguna pregunta?
Bueno, por lo que acabamos de crear el modelo posterior, muy básico,
y vamos a añadir algunas funciones más adelante.
Podemos añadir validaciones y filtrado.
Validaciones son una de las cosas
que los marcos de resolver para usted muy, muy bien,
y no creo que ustedes tenían que hacer esto para su pset CS50,
pero si lo hace el desarrollo web para su proyecto final,
usted está probablemente va a querer hacer algún tipo de validación,
como no tener los nombres de usuario en blanco,
tal vez tener una contraseña con al menos alguna extensión, cosas así.
Y es muy engorroso para poner en práctica estas cosas por nosotros mismos,
y casi todos los framework web solo lo hace por usted
y le permite hacerlo de una manera muy limpia.
Y el modelo es donde se suelen expresar esas reglas de validación,
porque está validando si un modelo es válido o no.
>> Pero por ahora, vamos a poner eso para más tarde,
y por ahora vamos a trabajar en otra parte,
y vamos a tratar de hacer una nueva vista
que muestra todos los mensajes.
Los pasos necesarios para realizar una nueva acción para la inclusión de todos los puestos
es para tomar una lista de todos los mensajes
y luego hacer la lista de todos los mensajes a través de un punto de vista.
Aquí, afortunadamente, ya agarramos todos los puestos
utilizando esta primera línea, el encontrar todas las funciones,
y ahora lo que vamos a hacer es lo que va
He estado fijando directamente el cuerpo de la respuesta
pasando la cadena, pero ahora quiero usar una vista,
y la diferencia entre una vista y haciendo esto
Es con el fin puedo tener una agradable gran plantilla, HTML,
y lo que puedo hacer es pasarlo ciertas variables
y luego tener la vista rellenar automáticamente su plantilla
el uso de esas variables.
¿Qué voy a hacer es que voy a crear un nuevo punto de vista,
y yo te nombro la vista algo así como "el blog / índice"
y yo voy a obligar básicamente esto - oh, ¿qué estoy escribiendo?
Mi cerebro está en otra parte.
Voy a enlazar los puestos variables a la vista,
de manera de que la vista tiene acceso a esta variable puesto.
>> Y así que ahora tengo que crear este punto de vista,
así que aquí tenemos esta carpeta llamada "puntos de vista"
y en primer lugar, voy a crear una nueva carpeta en el que llama "Blog".
Esto es bueno. De esta manera podemos tener un buen jerarquía para nuestros puntos de vista.
Y luego voy a crear otro archivo de allí llamado "index.php".
Impresionante.
En realidad, vamos a tener a los dos aquí.
Hacer un archivo de vista es probablemente la parte más sencilla de todo esto,
y estos son probablemente cosas que usted ya está familiarizado con.
Vamos a hacer algo muy simple,
empezar a decir: "Mi lista de entradas de blog."
Luego podemos ir a través de,
y podemos recorrer el array mensajes,
agarrar cada puesto y decir algo como -
tal vez añadir una línea
y luego imprimir el autor y el cuerpo.
Eso tiene sentido hasta ahora?
Y vamos a ver si funciona.
No ocurrió nada.
Me pregunto por qué.
Oh, me perdí 1 paso. Muy tonto de mi parte.
He creado un punto de vista, pero no me puse la vista como la respuesta,
por lo que tiene que hacer 1 cosa más.
Usted tiene que hacer "este cuerpo de la respuesta" y ajustarlo para que sea la vista.
Eso es.
Tenemos nuestra partida, y luego tenemos un post,
y, sólo por diversión, vamos a insertar otro post
para que podamos ver una lista.
Y insertar estos 2 postes,
y ahora si me refresque la página,
vemos todos estos puestos aquí.
>> ¿Eso tiene sentido hasta ahora?
Sí, una pregunta? Oh, está bien.
Como puede ver, hemos sido capaces de separar todos estos códigos cabo
en diferentes secciones, y entonces usted puede ver que es más claro con el código de la vista.
Este archivo de aquí que representa la vista,
que sólo se preocupa por la representación de datos, la visualización de datos.
Esto se pasa algún tipo de datos, y lo único que hace es sólo mostrar a usted.
En todas las otras partes de su código, usted no tendrá que preocuparse por nada de eso,
y del mismo modo, su código de la vista no tiene que preocuparse acerca de cualquier cosa
cómo acceder a la base de datos y así sucesivamente y así sucesivamente,
que es muy bueno y hace el código mucho más fácil de mantener.
Como he dicho, las vistas, que son dinámicos en ese
es 1 archivo, pero sería generar diferentes puntos de vista
función de las variables que realmente pase en,
y además, hay una gran cantidad de diferentes funciones de ayuda
que puede utilizar para ayudarle a escribir su código más rápido,
el que yo te mostraré en tan sólo unos segundos.
Sí.
>> [Estudiante] Así que $ 0 es un controlador, ¿no?
Esa segunda cosa.
La pregunta es es de $ 0 un controlador?
$ 0 es una variable que he creado aquí.
He creado una vista en primer lugar. He asignado a alguna variable.
Luego pasé a esta función, haga lo que el cuerpo de la respuesta.
¿Eso tiene sentido?
[Estudiante] Así es vista :: factory, es vista como una clase
o un [inaudible] Función fábrica biblioteca?
La pregunta se refiere a la función de vista :: factory,
y básicamente se trata de un poco más de la programación orientada a objetos en esencia.
Vista es la clase de vista, y tiene un método llamado "Factory"
y eso es una manera de captar el objeto que se llama "el blog / índice."
Y eso es un poco más de cosas de programación orientada a objetos
que yo no voy a entrar aquí demasiado.
Ahora, obviamente, queremos crear nuevos puestos de trabajo,
pero no quiero tener que hacerlo a través de una base de datos,
así que vamos a crear una nueva acción para la creación de un nuevo puesto,
y hay un montón de cosas que tenemos que hacer.
>> Lo primero que vamos a hacer - vamos a abordar estas cosas una por una.
Lo primero que vamos a hacer es que tenemos que crear un formulario
para la inserción de un nuevo puesto,
pero yo también voy a añadir una nueva acción en primer lugar,
por lo que añadir una nueva acción es tan fácil como
añadiendo una nueva función con el controlador,
y por ahora me voy a hacer algo muy básico,
sólo tienes que tomar este punto de vista y que lo ponga, simplemente mostrarlo para usted.
Y entonces ahora voy a crear un nuevo archivo de vista,
y yo voy a empezar a escribir algunas cosas.
Lo bueno de Kohana es que proporcionan una gran cantidad de funciones de ayuda
para que usted escriba la vista de código más fácilmente,
y 1 de las funciones auxiliares o módulos de ayuda
está alrededor de la escritura formas.
Para la escritura de formas, yo realmente no tengo que escribir directamente cualquier código HTML mí mismo.
Ustedes han escrito los formularios HTML.
Ya sabes lo que puede ser muy, muy doloroso e incómodo para escribir formas.
No es divertido, así que afortunadamente,
que, básicamente, se puede escribir un formulario utilizando Kohana de
formar funciones auxiliares para que lo haga por nosotros.
Vamos a tener básicamente campos por cada cosa que tenemos,
por lo que uno de los autores y la otra para los cuerpos.
Vamos a tener una etiqueta, y vamos a tener una entrada.
>> Y finalmente, vamos a tener una presentación.
Y como se puede ver, esto es mucho más limpio para escribir
que todo lo que HTML desordenado, que es un poco agradable.
Por supuesto, hay otros frameworks web que lo tienen aún más limpio que eso,
pero al menos esto es mejor que escribir el código HTML usted mismo.
Impresionante, así que esto es lo que se ve.
Eso es un poco desordenado,
así que voy a añadir un salto de línea no
para hacer esa mirada un poco más agradable.
Bueno, por supuesto, todavía se ve muy, muy mal, pero nosotros sólo estamos concentrados
en la funcionalidad por ahora y no en la estética.
No hay tiempo para hacerlo todo.
Y como pueden ver, ahora tenemos una forma muy básica,
que es una especie de agradable.
Este código, diría que es más limpio que el que intenta escribir un archivo HTML formar a ti mismo,
así que eso es bueno.
¿Qué sigue?
Ahora tenemos que hacer las cosas con la acción.
Normalmente, cuando usted escribe los formularios HTML,
usted tiene que decirle por dónde se va a enviar el formulario al.
De forma predeterminada en la mayoría de los frameworks web,
se somete a la misma URL exacta, por lo que la cosa es,
si envía una solicitud GET a / blog / nueva,
que debe mostrar el formulario,
pero si usted envía una solicitud POST a / blog / nueva con los datos,
lo que realmente debe tratar de salvar a ese puesto
y hacer algo con él.
>> Lo que vamos a hacer es
básicamente todo lo que tenemos que hacer para comprobar si se trata de una solicitud posterior o una petición get
es comprobar cuáles son las variables de correos que se pueden establecer.
Y si la variable mensaje se establece, entonces vamos a tratar de crear un nuevo puesto.
Una vez más, acabamos de hacer esto,
y que crea un nuevo puesto, y estamos, literalmente, va a
establecer sus campos como éste,
y luego vamos a guardarlo.
Y luego voy a redirigir
a la página de índice para que puedan ver nuestra lista de puestos de nuevo.
Vamos a intentarlo.
Voy a decir, "Brandon"
y luego enviar el correo, y si todo va bien,
como se puede ver, se me redirige a la página de índice,
y si me desplazo hasta el fondo, tenemos un mensaje que acaba de insertar.
Yay!
Sí, se trata.
>> [Estudiante] ¿Qué pasa si usted la hubiera hecho exactamente lo mismo
que ingresó antes?
¿Se comprueba para asegurarse de que no haya duplicados
la misma comunicación?
Sea por defecto, no, porque por defecto -
Lo sentimos, la pregunta es si se introduce en los mismos datos en la forma
y lo presentarán, ¿se permitirá insertar un objeto duplicado,
una entrada duplicada, esencialmente?
Ahora mismo, sí, va a permitir que usted haga eso,
porque en las bases de datos es perfectamente válido tener filas completamente duplicados,
pero si eso es una preocupación, entonces usted puede agregar validaciones, por ejemplo,
para asegurarse de que si esto es exactamente lo mismo que algo que ya existe,
luego decir que es un objeto no válido,
y después, se puede especificar el mensaje de error
y decir: "no válido porque este ya existe" o algo por el estilo.
Pero en este caso, yo sólo podía crear algo duplicado.
Ahora vamos a tratar de agregar algunas validaciones.
El problema con esto ahora mismo es que
Yo, literalmente, podía presentar un mensaje completamente en blanco.
Puedo hacer clic en este botón en este momento, y hay que ir.
Realmente no se puede ver, pero esta línea adicional aquí
indica que, literalmente, tengo un nuevo puesto.
Apenas tiene un autor en blanco y un cuerpo en blanco,
y nosotros no queremos permitir que la gente haga eso.
Aquí es donde entra en juego la validación
>> Yo puedo ir a mi objeto de modelo,
y ahora puedo añadir una nueva función que especifica
qué reglas de validación Debo añadir que este modelo
para asegurarse de que es válido o para especificar qué es lo que significa ser un mensaje válido?
Y quiero decir que es sólo un mensaje válido si tanto el autor y el cuerpo
no están en blanco, y así es como lo haces en Kohana.
Se crea una nueva función llamada "Reglas"
y entonces, básicamente devuelve una matriz asociativa
que define las reglas de validación para este objeto.
Vamos a devolver la matriz, y luego lo que vamos a hacer es
decir "autor", que va a una matriz,
que va a otra matriz llamada "no está vacío."
Y luego voy a decir "cuerpo".
Está bien, y la sintaxis de esta y la estructura de este
puede parecer un poco complicado y un poco complicado.
Si usted lee la documentación, que es bastante sencillo de entender,
Pero, en esencia esto es lo que hay que hacer para especificar
algunas reglas de validación, y hay una gran cantidad de normas diferentes
Kohana que le dará de forma gratuita, al igual que se pueden agregar reglas de decir
debe ser por lo menos de esta longitud.
Tal vez tiene que ser numérico. Tal vez tiene que ser numérico alfa.
Tal vez tiene que ser como máximo de esta longitud, así sucesivamente y así sucesivamente.
Hay un montón de diferentes reglas que Kohana ofrece para usted,
y se puede ir en su página web, mirar la documentación,
y se puede ver todas las diferentes cosas que usted puede hacer.
>> Pero esto es todo lo que tengo que hacer,
y ahora vamos a ver qué pasa
si presento una entrada en blanco.
¿Qué va a pasar? Oh, no, me da un error.
Recibo una excepción de validación.
Bueno, es bueno.
Me dijo que mi modelo no es válido,
pero yo no quiero mostrar una excepción
a mis usuarios cuando tratan de presentar algo válido, ¿no?
Quiero darles algún tipo de mensaje de error más amigable
cuando algo va mal.
Lo que vamos a hacer es que vamos a
envolver todo en un bucle intento de captura.
En realidad, creo que esto también es algo que no has aprendido todavía
en CS50, porque C, el lenguaje de programación C,
no tiene excepciones, pero casi todos los demás solo idioma
tiene excepciones, así que realmente, realmente brevemente,
una excepción es algo que una pieza de código puede
una excepción cuando algo sale mal,
pero entonces tal vez alguna otra pieza de código más arriba
puede atrapar esta excepción y hacer algo con él.
>> Por ejemplo, en este caso,
el trozo de código que intenta salvar a un modelo,
que valida el modelo, y si dice: "Está bien, este modelo no es válido"
que va a lanzar una excepción, y esto es una especie de equivalente a
en C es posible devolver un -1 o algo por el estilo.
Y luego, para mí, esta función, mi código
en un nivel superior, puedo tratar de atrapar esa excepción
y básicamente dije: "Bueno, si yo cojo la excepción, ¿qué voy a hacer?"
O podría elegir no tomar esa excepción y dejar que alguien más arriba
detectar la excepción, o si nadie lo coge,
entonces todo el programa se bloquea y dice:
"Algo salió mal, y yo no podía soportarlo."
>> Pero lo que hacemos es que se coloca una pieza de código en un bloque try,
y luego también se añade algo llamado un bloque catch,
que es el tipo de código que tratar de capturar las excepciones que se puedan producir.
Y por lo que si cojo esta excepción en particular
o excepción de nulidad, entonces lo que voy a hacer es
Me voy a fijar los errores - Creo que así es como lo hago -
y yo voy a poner los errores a algún objeto.
Y entonces lo que voy a hacer es si golpea esta excepción,
no va a redirigir y, si no redirige,
que va a salir de la si el blog
y golpear este blog / nueva, que se quiero lo que quiero hacer.
Si hay un error, entonces yo quiero volver a la forma
y visualizar esos errores.
Ahora lo que quiero hacer es que quiero pasar en esos errores
a la vista.
Bueno, creo que tengo la vista aquí,
y básicamente quiero mostrar los errores si es que existen.
Antes de escribir el código HTML para eso, voy a realmente rápido
mostrar lo que la estructura de este error se ve como variables,
y esta es una buena práctica en general.
Muchas veces te dan algo a cambio de algún método,
alguna función en el marco de web,
y usted no sabe lo que la variable se parece,
por lo que usted no sabe cómo trabajar con él.
Voy a utilizar un método de impresión r básicamente imprimirlo.
>> Y como se puede ver, se me dice que es una matriz asociativa,
y tiene una clave, autor, puntos de esta cadena,
autor no debe estar vacío, y otra tecla, el cuerpo,
apunta a otra cadena, el cuerpo no debe estar vacío.
Yo soy como, bien, fresco.
Entonces puedo recorrer el array e imprimir cada mensaje.
Es básicamente como un array asociativo con un montón de mensajes.
Lo que voy a hacer es "si los errores"
y yo voy a crear una lista desordenada,
y yo voy a recorrer todos los errores.
Y esto, y ahora voy a tratar de enviar de nuevo,
y vamos a ver lo que tenemos.
Ahora tenemos esta bonita lista de errores,
y esto sigue siendo bastante feo, pero esto, obviamente, se puede formatear para verte bien,
pero la idea básica es sólo en unas pocas líneas de código,
hemos sido capaces de validar nuestro modelo,
asegurarse de que ciertos campos no estaban vacías,
y si algo salió mal, y luego volver algún tipo de mensaje de error
Entonces yo podría presentar de nuevo al usuario.
También puede personalizar su validación
de modo que usted puede tener un mensaje de error
que es más específico para su aplicación o algo por el estilo.
Todo lo que es en general adaptable.
>> Lamentablemente, nos estamos quedando sin tiempo,
así que voy a tener que cortar la sesión de codificación en vivo aquí.
Hay un montón de otras características que quiero demostrar a usted
en este ejemplo.
Por ejemplo, puede agregar plantillas a su sitio,
así que tal vez hay algún tipo de código HTML que desea aplicar
a cada página en su sitio, y en vez de pegar que
en cada archivo de vista único que tienes, lo que obviamente sería una mala práctica,
básicamente se puede definir estas plantillas,
y luego en su controlador digo: "Bueno, estoy usando esta plantilla."
"¿Todos mis opiniones utilizar esta plantilla."
Y la última cosa que quiero demostrar a usted también
que no tenemos tiempo para es cross-site scripting,
y, básicamente, creo que ustedes han visto probablemente en CS50 -
Creo que David Malan probablemente habló de lo que normalmente se puede inyectar
El código JavaScript en - ¿Has hablado de esto?
¿Quizás? Tal vez no?
>> Sin embargo, una gran cantidad de veces que se puede inyectar código JavaScript malicioso
en base de datos de alguien, y si ellos no escapan que correctamente,
a continuación, cuando se presentan a que los datos de vuelta al usuario,
entonces puede ejecutar algún tipo de código JavaScript aleatorio que no quiere que suceda,
y que iba a demostrar cómo harías que dentro de Kohana.
En realidad es muy, muy fácil.
Yo podría hacerlo ahora mismo en 2 segundos, literalmente.
Todo lo que tienes que hacer es básicamente envuelven estas cosas
en esta cosa llamada entidades HTML.
Y eso va a escapar de forma automática todos los caracteres correctamente
y asegúrese de que usted no consigue este problema.
[Estudiante] ¡Escribieron la primera prueba de forma incorrecta.
[Brandon Liu] Oh, perdón.
>> Bueno, eso es todo lo que tenía que compartir con ustedes hoy.
Estas diapositivas van a ser publicado, pero estos son generalmente
los únicos recursos que deberían realmente necesita para empezar con Kohana.
Usted puede ir a la página web. Tienen una guía del usuario, y también tienen un explorador API.
Podemos explorar todas las diferentes funciones y funciones de ayuda que tienen para ti.
En general, tienen suficiente información en el sitio web
que puede utilizar para empezar y ponerse en marcha con Kohana.
Allí no hay muchos tutoriales, creo, por Kohana, fuera del
lo que tienen en el sitio web aquí, así que esta es probablemente su mejor apuesta.
Pero si quieres ir con el framework web
y no quiero tener que recoger a un nuevo idioma,
y usted quiere algo que es relativamente ligero y tiene una curva de aprendizaje fácil,
Sin duda recomiendo Kohana.
Esa es probablemente la mejor oferta para eso.
Lo curioso, sin embargo, es si estábamos usando Ruby on Rails,
podríamos haber replicado lo que acabamos de hacer
y probablemente más en menos de 3 minutos.
No es broma, pero el aprendizaje de Ruby on Rails necesita mucho más tiempo
de lo que se necesitaría para aprender Kohana.
Se trata básicamente de su elección en lo que se quiere optar por aprender,
pero si usted quiere poner en marcha rápidamente,
Kohana es sin duda una muy buena elección.
>> ¿Unas últimas preguntas antes de terminar? Sí.
[Estudiante] ¿Cómo podemos integrar esa
en un marco de CSS como si utilizara cuando estabas dando instrucciones?
La pregunta es ¿cómo podemos integrar eso con un marco de CSS?
Lo que probablemente nos volveríamos a hacer es que probablemente incluirá
una nueva carpeta donde queremos volcar todos nuestros archivos CSS,
y luego también nos sumamos una nueva plantilla.
En la plantilla que habíamos incluimos esos archivos CSS
para asegurarse de que están referenciadas en cada página,
y luego, cuando en realidad se está escribiendo HTML,
que acaba de agregar clases y otras cosas apropiadas,
y, por ejemplo, cuando usted está usando algo como la forma
función auxiliar, puede agregar más parámetros después
para especificar qué clases desea que se adjunta a varias cosas
para que pudieran diseñarlo correctamente, y eso es básicamente cómo va a ir.
>> ¿Alguna otra pregunta?
Impresionante.
Gracias por su tiempo y gracias por venir.
Yo no iba a añadir mucho más,
pero 1 cosa muy rápida es que no tenemos un vínculo
a la forma.
Realmente tonto.
Vamos a añadir un - en realidad en la vista, blog, índice,
vamos muy rápido añadir un enlace que va a la nueva página,
la página donde podemos insertar un nuevo puesto.
Vamos a hacer esto.
Lo bueno es que hay todo este grupo de funciones de ayuda HTML
que hacer cosas diferentes para usted, por lo que ya se vio las entidades
funcionar aquí, pero también tienen una función llamada "ancla"
el que puede escribir en el blog / nuevo
y decir: "Publicar un nuevo blog."
Y sería crear ese vínculo para ti,
y esto parece muy trivial que hacer, pero esto es bueno,
porque supones que está trasladando su sitio web a partir del 1 de dominio a otro.
Y si usted acaba de escribir las direcciones URL a ti mismo,
entonces usted tendría que cambiar todas las direcciones URL.
O tal vez usted se mudó desde 1 subcarpeta a otra subcarpeta.
Usted tendría que cambiar todas las direcciones URL a ti mismo,
y eso no es divertido.
Puede usar esta ancla aquí,
y usted puede cambiar el dominio o el prefijo subcarpeta
en el archivo de configuración una vez,
y luego se aplica que en todas partes, y esto es, de nuevo,
un gran ejemplo de no repetir a ti mismo, el secado de su código de salida.
Dondequiera que estás repitiendo, tratar de extraer en una especie de archivo de configuración
o para una función diferente y tienen que manejar eso para usted.
>> Y la última cosa que yo quería mostrar era
Supongamos que estamos de vuelta en este post, y yo había compuesto algunos realmente largo ensayo,
pero me olvidé de incluir mi autor.
Ahora, cuando hago clic en "Enviar mensaje"
Acabo de perder todo.
¡No! Muy triste.
Así que, ¿cómo lidiar con eso?
Esto es lo que hacemos.
Lo que hacemos es aquí por estas funciones de entrada y área de texto,
Si se incluye un segundo parámetro, entonces el valor de ese segundo parámetro
va a ser lo que el campo va a ser inicialmente poblada.
Lo que podríamos hacer es en nuestro controlador blog,
podríamos enlazar otra variable.
Llámelo "valores" tal vez.
Y acontecerá en la matriz post, literalmente.
Eso significa que si la validación no,
pasar a mí la matriz post que he presentado desde la última solicitud,
y de esa manera puede utilizar los valores de mi última presentación
para repoblar los campos.
Ahora puedo hacer algo como valores de autor
y valores del cuerpo, y de esa manera ahora si hago algunas cosas al azar
y haga clic en "Enviar Mensaje", entonces se queda allí.
Pero nos vamos a quedar en otro problema.
Eso funciona, pero si voy a la página de la primera vez,
que va a chocar, y eso es porque la primera vez
nos vamos a la página, esta variable mensaje no se ha definido todavía.
Es nulo. No existe.
>> Y lo que queremos decir es que si existe esta clave,
a continuación, devolver el valor de esta matriz,
pero si no existe la clave, a continuación, devolver una cadena en blanco.
Esa es la funcionalidad que queremos aquí.
Queremos comprobar si la clave existe antes de intentar acceder a la matriz,
y afortunadamente,
Kohana también nos da una función auxiliar para eso.
Tienen todo este conjunto de funciones
bajo el nombre de ARR, acrónimo de matriz,
y tienen 1 función llamada "conseguir"
y se puede pasar de la matriz,
y usted puede pasar el nombre de la clave.
Entonces, básicamente, lo que hará es que se trate de obtener esa clave,
pero si esa clave no existe en la matriz,
luego volverá blanco, o también se puede especificar un valor predeterminado, creo yo,
lo cual es bueno.
Ahora bien, si hacemos lo mismo otra vez,
luego ves ahora funciona la primera vez,
y de nuevo, si escribimos en algunas cosas al azar
y tratar de presentar, a continuación, se queda allí.
>> Y supongo que también te puedo mostrar cómo añadir una plantilla muy rápido.
Lo que podemos hacer en primer lugar es que podemos añadir una nueva vista llamada "template.php"
dentro de la carpeta Views,
y lo que voy a hacer es que voy a imprimir algo que se llama "contenido"
que va a ser mi página principal.
Y tal vez en el mismo fondo que voy a añadir, por ejemplo,
los derechos de autor.
[Pregunta estudiante inaudible]
[Brandon Liu] Tal vez esta es una plantilla muy básica que quiero usar.
Quiero tener una carpeta con mis derechos de autor en cada página,
y ahora lo que voy a hacer dentro de mi controlador
es que ahora en lugar de decir, "se extiende Controller"
Voy a decir, "se extiende Controller_Template"
y ahora en vez de decir, "cuerpo de la respuesta es igual a este punto de vista,"
Voy a decir, "este contenido de la plantilla es -"
y creo - Cómo pongo un signo igual?
Me olvide. Sí, eso pensé.
Y ahora me puse esa variable el contenido sea igual a la vista.
Yo puedo hacer lo mismo aquí.
Y ahora si me refresque, se puede ver ahora este copyright se añade allí,
y acaba de hacer un post al azar,
y luego, de nuevo, usted debe ver que el derecho de autor está en la parte inferior de la página.
>> Gran. Eso es todo lo que quería mostrarles.
[Aplausos]
¿Alguna pregunta?
[CS50.TV]