1 00:00:00,000 --> 00:00:02,150 >> [Seminario] [Kohana: Un PHP Framework ligero] 2 00:00:02,150 --> 00:00:04,000 [Brandon Liu] [Harvard University] 3 00:00:04,000 --> 00:00:07,270 [Este es CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Hola a todos. Mi nombre es Brandon. 5 00:00:09,130 --> 00:00:11,000 Soy un joven aquí en la ciencia de la computación de la universidad haciendo, y hoy vamos a hablar de 6 00:00:11,000 --> 00:00:14,460 Kohana, que es un marco de desarrollo web PHP. 7 00:00:14,460 --> 00:00:17,260 Hoy va a ser un seminario de codificación en directo, 8 00:00:17,260 --> 00:00:21,000 así que estoy básicamente va a pasar 5-10 minutos explicando lo Kohana es, 9 00:00:21,000 --> 00:00:25,000 y entonces yo estoy literalmente va a construir un super simple blog 10 00:00:25,000 --> 00:00:28,570 para usted aquí, literalmente desde cero. 11 00:00:28,570 --> 00:00:32,229 Vamos a descargar el código de la página web Kohana, 12 00:00:32,229 --> 00:00:35,000 y vamos a empezar a construir un blog, y es de esperar que va a ser muy instructivo, 13 00:00:35,000 --> 00:00:37,000 porque verá quizá tal vez voy a cometer algunos errores, 14 00:00:37,000 --> 00:00:39,000 y verás a recuperar de ellos, 15 00:00:39,000 --> 00:00:42,040 o verás mi proceso de pensamiento como yo construyo a través de este blog, 16 00:00:42,040 --> 00:00:44,000 y mientras tanto, también se familiarizará con el propio marco. 17 00:00:44,000 --> 00:00:48,000 Esperemos que va a ser un ejercicio muy instructivo. 18 00:00:48,000 --> 00:00:51,370 >> En primer lugar, ¿qué es exactamente un marco? 19 00:00:51,370 --> 00:00:54,000 Si usted ha estado tomando CS50 hasta el momento, realmente no ha funcionado con cualquier 20 00:00:54,000 --> 00:00:56,000 marcos todavía, y la cosa es esta. 21 00:00:56,000 --> 00:01:00,000 Usted probablemente ha hecho 1 desarrollo web pset ya, 22 00:01:00,000 --> 00:01:03,000 y digamos que continúe la construcción de sitios web y mantener sitios web de construcción. 23 00:01:03,000 --> 00:01:05,000 Usted comenzará a notar un par de cosas. 24 00:01:05,000 --> 00:01:07,000 La primera cosa que usted notará es que te estás haciendo las mismas cosas 25 00:01:07,000 --> 00:01:09,150 una y otra vez todo el tiempo, 26 00:01:09,150 --> 00:01:13,000 cosas como la limpieza de los datos de entrada del usuario, 27 00:01:13,000 --> 00:01:17,250 cosas como la organización de sus archivos de una manera determinada. 28 00:01:17,250 --> 00:01:19,000 La otra cosa que también probablemente notará es que su código 29 00:01:19,000 --> 00:01:21,000 pueden empezar a ser muy, muy sucio, 30 00:01:21,000 --> 00:01:24,000 y es posible que deje desordenado y apenas tiene un tiempo muy difícil mantenerlo, 31 00:01:24,000 --> 00:01:26,000 o puede comenzar a estructurar su código y lo que es modular 32 00:01:26,000 --> 00:01:28,510 de cierta manera para que sea más fácil de mantener. 33 00:01:28,510 --> 00:01:31,020 >> Aquí es donde los frameworks web, básicamente, entró 34 00:01:31,020 --> 00:01:33,680 Estas personas que habían construido una gran cantidad de sitios web, dijeron, 35 00:01:33,680 --> 00:01:35,820 "No necesitamos volver a hacer esto cada vez que construimos un sitio web." 36 00:01:35,820 --> 00:01:39,050 "¿Por qué no nos limitamos a hacer un paquete que hace todas estas cosas para usted 37 00:01:39,050 --> 00:01:41,250 cada vez que quieren construir un sitio web? " 38 00:01:41,250 --> 00:01:43,030 Así que cuando usted hace una nueva página web, 39 00:01:43,030 --> 00:01:45,880 sólo se centran en lo que exactamente este sitio web en particular se trata. 40 00:01:45,880 --> 00:01:48,630 No es necesario repetir todo el varias configuraciones 41 00:01:48,630 --> 00:01:53,070 y la separación de los códigos y la reescritura del código 42 00:01:53,070 --> 00:01:56,180 que a menudo tienen que ver cuando estás haciendo sitios web. 43 00:01:56,180 --> 00:01:59,410 La idea es que un marco le permite escribir un código de nivel superior 44 00:01:59,410 --> 00:02:01,030 sin tener que preocuparse por los detalles de nivel inferior. 45 00:02:01,030 --> 00:02:03,670 Un detalle de nivel inferior puede ser algo como 46 00:02:03,670 --> 00:02:07,250 tratar con la limpieza de los datos de entrada de usuario. 47 00:02:07,250 --> 00:02:09,320 Eso es algo que usted no debe realmente necesidad de preocuparse. 48 00:02:09,320 --> 00:02:12,370 Usted debe centrarse en lo que su asignación web es realmente acerca. 49 00:02:12,370 --> 00:02:14,790 Se elimina una gran cantidad de código repetitivo. 50 00:02:14,790 --> 00:02:16,640 Es una arquitectura para su proyecto. 51 00:02:16,640 --> 00:02:18,680 >> La más popular sería Modelo-Vista-Controlador, 52 00:02:18,680 --> 00:02:20,380 que voy a hablar en un segundo. 53 00:02:20,380 --> 00:02:22,790 Y muchas veces estos marcos encarnan un conjunto de procedimientos, 54 00:02:22,790 --> 00:02:25,750 normas y mejores prácticas para que usted utilice 55 00:02:25,750 --> 00:02:28,190 de manera que cuando se adopta el marco web 56 00:02:28,190 --> 00:02:30,050 usted tiene que escribir el código de una determinada manera, 57 00:02:30,050 --> 00:02:32,430 y es en general un conjunto acordado de principios 58 00:02:32,430 --> 00:02:34,290 por la comunidad que es generalmente aceptado ser 59 00:02:34,290 --> 00:02:36,230 una buena manera de escribir código. 60 00:02:36,230 --> 00:02:38,260 Esto hace que su código sea más fácil de mantener, más usable, 61 00:02:38,260 --> 00:02:40,030 así sucesivamente y así sucesivamente. 62 00:02:40,030 --> 00:02:42,740 Y, por último, lo que quiero hacer hincapié sobre los marcos 63 00:02:42,740 --> 00:02:45,980 frente a las bibliotecas es esta idea acerca de la inversión de control, y la cosa es esta. 64 00:02:45,980 --> 00:02:48,430 La diferencia entre una biblioteca y un marco es que con una biblioteca 65 00:02:48,430 --> 00:02:51,990 usted todavía está escribiendo el programa principal, 66 00:02:51,990 --> 00:02:54,460 y que está especie de invocación de la biblioteca 67 00:02:54,460 --> 00:02:56,810 y exhortando a la biblioteca a hacer algo por ti. 68 00:02:56,810 --> 00:02:58,180 La diferencia entre una biblioteca y un marco 69 00:02:58,180 --> 00:03:01,620 es que el marco comienza con el control, 70 00:03:01,620 --> 00:03:03,260 y se invoca su código, 71 00:03:03,260 --> 00:03:06,190 así que usted puede pensar en él como - es por eso que se llama un marco - 72 00:03:06,190 --> 00:03:09,700 el marco proporciona este marco y estructura de su código, 73 00:03:09,700 --> 00:03:11,320 y rellenar los agujeros, 74 00:03:11,320 --> 00:03:13,990 y esto se hará más aparente en un segundo 75 00:03:13,990 --> 00:03:16,670 cuando ves a comenzar a escribir código en el contexto del marco. 76 00:03:16,670 --> 00:03:19,130 Vas a ver que me estoy llenando los vacíos, 77 00:03:19,130 --> 00:03:22,450 y el marco es una especie de control de todas las piezas en movimiento, 78 00:03:22,450 --> 00:03:27,420 y tengo que poner las piezas en los lugares correctos. 79 00:03:27,420 --> 00:03:29,360 >> Hoy vamos a hablar de Kohana, 80 00:03:29,360 --> 00:03:31,610 que es uno de los muchos marcos de PHP. 81 00:03:31,610 --> 00:03:34,550 Hay frameworks web, y los hay en casi todos los idiomas, 82 00:03:34,550 --> 00:03:38,330 y estoy recogiendo Kohana Kohana, porque es sin duda 83 00:03:38,330 --> 00:03:43,250 y generalmente reconocido como el framework PHP más fácil de recoger. 84 00:03:43,250 --> 00:03:45,940 Es el más ligero. 85 00:03:45,940 --> 00:03:48,470 Hay otros por ahí que vienen con muchas, muchas más características, 86 00:03:48,470 --> 00:03:51,590 pero tienden a ser más difícil de recoger. 87 00:03:51,590 --> 00:03:54,920 Y, por último, Kohana utiliza la arquitectura MVC. 88 00:03:54,920 --> 00:03:57,780 Es lo suficientemente ligero que podemos construir, literalmente, un proyecto 89 00:03:57,780 --> 00:03:59,620 aquí justo en frente de tus ojos, y usted puede casi 90 00:03:59,620 --> 00:04:02,780 seguir adelante con bastante facilidad. 91 00:04:02,780 --> 00:04:04,420 >> ¿Qué es la arquitectura MVC? 92 00:04:04,420 --> 00:04:06,540 Es sinónimo de Modelo-Vista-Controlador, 93 00:04:06,540 --> 00:04:09,560 y tal vez si se piensa en el código que has escrito hasta ahora 94 00:04:09,560 --> 00:04:11,280 para algunos de sus conjuntos de procesadores de desarrollo web 95 00:04:11,280 --> 00:04:14,710 usted puede ser capaz de ver algo de esto, pero por lo general cuando se inicia la escritura 96 00:04:14,710 --> 00:04:16,500 una aplicación web más complejos, 97 00:04:16,500 --> 00:04:21,209 la división entre estos segmentos 3 se hace más y más evidente. 98 00:04:21,209 --> 00:04:26,740 Presenté el MVC aquí una especie de como una pila, 99 00:04:26,740 --> 00:04:29,920 y, a menudo se le oye hablar de las pilas en el desarrollo web, 100 00:04:29,920 --> 00:04:33,760 y esto es para ilustrar la idea de que 101 00:04:33,760 --> 00:04:37,510 cada capa, cada componente se esfuerza para comunicarse sólo 102 00:04:37,510 --> 00:04:40,750 entre otros 2 componentes. 103 00:04:40,750 --> 00:04:44,550 Alguien tiene acceso a su sitio web como un cliente o un navegador. 104 00:04:44,550 --> 00:04:48,870 Ellos interactúan con el programa a través del código de la vista. 105 00:04:48,870 --> 00:04:50,500 El código de la vista interactúa con el controlador. 106 00:04:50,500 --> 00:04:52,400 El controlador interactúa con el modelo, 107 00:04:52,400 --> 00:04:55,090 y el modelo interactúa con la base de datos de SQL. 108 00:04:55,090 --> 00:04:59,670 Y no hay ningún salto en el medio si se escribe el código correctamente. 109 00:04:59,670 --> 00:05:01,670 >> ¿Qué hacen estas cosas? 110 00:05:01,670 --> 00:05:06,020 El modelo es esencialmente la parte de código que se ocupa de sus datos. 111 00:05:06,020 --> 00:05:09,100 Cualquier cosa que se ocupa de su base de datos, con los objetos que se almacenan, 112 00:05:09,100 --> 00:05:11,280 o recuperar los objetos en la base de datos, 113 00:05:11,280 --> 00:05:13,450 eso es todo manejado por el modelo. 114 00:05:13,450 --> 00:05:15,290 Tal vez usted tiene objetos en su base de datos. 115 00:05:15,290 --> 00:05:17,700 Vamos a crear un modelo que tiene que ver con los mensajes, 116 00:05:17,700 --> 00:05:19,760 por lo que un mensaje puede tener algunos atributos a la misma. 117 00:05:19,760 --> 00:05:23,900 Usted puede tener funciones en torno a almacenar esos mensajes o recuperar mensajes 118 00:05:23,900 --> 00:05:26,270 o filtrar los mensajes y así sucesivamente y así sucesivamente, 119 00:05:26,270 --> 00:05:28,880 y eso es todo el código que está a cargo de la modelo. 120 00:05:28,880 --> 00:05:31,780 El controlador es una especie de la lógica de la aplicación, 121 00:05:31,780 --> 00:05:37,910 y un montón de cosas diferentes puede ir en la lógica de la aplicación. 122 00:05:37,910 --> 00:05:39,790 Si usted está hablando con una API diferente, 123 00:05:39,790 --> 00:05:42,310 eso puede ser cuando usted está tratando con la lógica de la aplicación. 124 00:05:42,310 --> 00:05:47,990 Si usted está tratando de tener para traer los datos de varios modelos diferentes 125 00:05:47,990 --> 00:05:51,540 y tienen que combinar de alguna manera, que a menudo puede ser manejada por el controlador. 126 00:05:51,540 --> 00:05:53,820 Por ejemplo, en Facebook, si usted amigo alguien, 127 00:05:53,820 --> 00:05:58,500 entonces tal vez ese acto de establecer esa relación 128 00:05:58,500 --> 00:06:00,490 se puede realizar por el controlador. 129 00:06:00,490 --> 00:06:04,350 >> Y, por último, la vista es el código que está generando lo que se ve. 130 00:06:04,350 --> 00:06:07,410 Muchas veces creo que en los conjuntos de procesadores CS50 131 00:06:07,410 --> 00:06:10,050 que en realidad no le animan chicos separar estas 3 cosas. 132 00:06:10,050 --> 00:06:12,430 Es probable que tenga este archivo grande, largo, donde en la parte superior 133 00:06:12,430 --> 00:06:15,130 usted hace alguna consulta SQL y tal vez hacer algo de procesamiento 134 00:06:15,130 --> 00:06:17,020 en los datos que recupera de la base de datos, 135 00:06:17,020 --> 00:06:19,370 y luego de tener toda su HTML en la parte inferior. 136 00:06:19,370 --> 00:06:22,840 Y es posible que a medida que crea más y más páginas 137 00:06:22,840 --> 00:06:25,790 que usted va a tener un poco de repetición de código, y además, 138 00:06:25,790 --> 00:06:29,600 la cosa es que el archivo se pone muy grande y largo 139 00:06:29,600 --> 00:06:32,370 y se convierte en difícil de manejar para gestionar. 140 00:06:32,370 --> 00:06:34,500 La razón por la MVC es tan bien visto 141 00:06:34,500 --> 00:06:36,120 es para un número de razones. 142 00:06:36,120 --> 00:06:38,110 Lo primero es algo que se llama separación de preocupaciones 143 00:06:38,110 --> 00:06:40,370 que es la idea de que cuando se tiene - 144 00:06:40,370 --> 00:06:43,520 idealmente 1 trozo de código debe hacer 1 cosa y hacerlo realmente bien, 145 00:06:43,520 --> 00:06:47,210 y usted no debe combinar piezas de código que hacen cosas diferentes. 146 00:06:47,210 --> 00:06:49,230 Por ejemplo, ver el código y el código modelo, 147 00:06:49,230 --> 00:06:51,040 que no tienen realmente estar relacionados. 148 00:06:51,040 --> 00:06:53,290 Ellos no tienen que estar en los mismos archivos, por lo que cuando se puede, separarlos 149 00:06:53,290 --> 00:06:55,300 por lo que es fácil de mantener. 150 00:06:55,300 --> 00:06:57,130 >> La otra cosa es la reutilización de código. 151 00:06:57,130 --> 00:06:59,770 Es posible que se encuentre escribiendo la misma consulta SQL o hacer 152 00:06:59,770 --> 00:07:03,060 consultas similares que podrían ser abstraídos en 1 función, 153 00:07:03,060 --> 00:07:05,440 y esa es la idea detrás de los modelos y controladores, 154 00:07:05,440 --> 00:07:09,690 tenerlo en una función separada que se puede reutilizar en diferentes lugares en su proyecto. 155 00:07:09,690 --> 00:07:12,420 Y, por último, que está atado a la desecación de su código, 156 00:07:12,420 --> 00:07:14,700 o no repetir siempre lo mismo, no repita usted mismo. 157 00:07:14,700 --> 00:07:18,090 Esto es muy comprensible en el desarrollo. 158 00:07:18,090 --> 00:07:20,110 Siempre que pueda, no quiero repetir a ti mismo, porque si se repite a sí mismo, 159 00:07:20,760 --> 00:07:23,400  que es mucho más costoso de mantener. 160 00:07:23,400 --> 00:07:26,040 Si desea cambiar 1 cosa, tienes que cambiarlo en todas partes, 161 00:07:26,040 --> 00:07:30,230 y que conduce a errores, y es horrible. 162 00:07:30,230 --> 00:07:32,010 >> Muy bien. 163 00:07:32,010 --> 00:07:37,270 Cualquier pregunta hasta ahora sobre Kohana en absoluto? 164 00:07:37,270 --> 00:07:39,200 Grande. 165 00:07:39,200 --> 00:07:42,300 Ahora vamos a bucear en la sesión de codificación en directo, 166 00:07:42,300 --> 00:07:48,050 y esperemos que todo salga bien. 167 00:07:57,200 --> 00:08:00,050 Voy a construir básicamente este sitio web 168 00:08:00,050 --> 00:08:03,910 en uno de mis servidores remotos, y de esa manera ustedes también pueden 169 00:08:03,910 --> 00:08:06,310 consulte el sitio web y acceder a la página web, 170 00:08:06,310 --> 00:08:10,990 y también el medio ambiente es mejor configurado que mi máquina remota, 171 00:08:10,990 --> 00:08:14,580 porque se está ejecutando Linux en lugar de OS X. 172 00:08:14,580 --> 00:08:16,260 Estamos, literalmente, va a empezar. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Voy a descargar el código de la página web. 175 00:08:21,350 --> 00:08:24,610 Voy a copiar la dirección del enlace, 176 00:08:24,610 --> 00:08:29,770 ir a mi servidor, descargarlo, 177 00:08:29,770 --> 00:08:33,000 y yo voy a extraerlo. 178 00:08:38,330 --> 00:08:45,710 >> [Estudiante] ¿Qué es lo más grande que usted puede hacer que el texto? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] ¿Es eso mejor? 180 00:08:47,330 --> 00:08:50,070 [Estudiante] ¿Es eso factible? >> [Brandon Liu] Sí, eso está bien. 181 00:08:50,070 --> 00:08:54,500 He descargado un archivo ZIP y descomprimido que en un directorio llamado Kohana, 182 00:08:54,500 --> 00:08:58,820 y vamos a cambiar el nombre que CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 y vamos pulg 184 00:09:01,140 --> 00:09:03,610 Impresionante. 185 00:09:03,610 --> 00:09:06,870 Aquí puede ver un montón de archivos diferentes. 186 00:09:06,870 --> 00:09:10,140 La mayoría de ustedes se puede ignorar - We no va a pasar por cada archivo que está aquí 187 00:09:10,140 --> 00:09:13,130 debido a nuestras limitaciones de tiempo, 188 00:09:13,130 --> 00:09:16,310 pero por lo general al instalar Kohana, el primero que se hace 189 00:09:16,310 --> 00:09:23,210 es que usted vaya al directorio, 190 00:09:23,210 --> 00:09:26,050 y usted básicamente hacer algunas pruebas ambientales y otras cosas 191 00:09:26,050 --> 00:09:28,640 asegurarse de que su entorno está configurado correctamente para ejecutar Kohana 192 00:09:28,640 --> 00:09:31,450 y asegurarse de que todo está bien. 193 00:09:31,450 --> 00:09:35,510 Usted puede ver la mayoría de las cosas pasan, pero por lo general siempre se encuentra con este problema 1 194 00:09:35,510 --> 00:09:38,180 donde se queja de que algún directorio no tiene permisos de escritura, 195 00:09:38,180 --> 00:09:40,410 y eso es porque de algunos permisos. 196 00:09:40,410 --> 00:09:43,080 No sé cuánto que ustedes han aprendido acerca de los permisos de archivos en CS50, 197 00:09:43,080 --> 00:09:47,920 pero si lo hace el desarrollo web, que va a encontrarse con este problema mucho. 198 00:09:47,920 --> 00:09:58,340 Voy a hacer que sea escribible 199 00:09:58,340 --> 00:10:03,390 y pienso que también yo tengo que - allá vamos. 200 00:10:03,390 --> 00:10:07,040 >> Bien, ahora usted puede ver todo lo que pasaba, 201 00:10:07,040 --> 00:10:10,000 y ahora le dirá que renombrar el archivo install.php. 202 00:10:10,000 --> 00:10:15,630 Voy a mover el archivo install.php para installed.php, 203 00:10:15,630 --> 00:10:19,610 y ahora si restauro, 204 00:10:19,610 --> 00:10:22,810 me da un error, y aquí es donde entra en juego la depuración 205 00:10:22,810 --> 00:10:25,610 Aquí es donde se puede ver lo que realmente va a suceder. 206 00:10:25,610 --> 00:10:28,460 La cosa es que, por defecto, Kohana asume que 207 00:10:28,460 --> 00:10:31,480 el proyecto se encuentra en el directorio raíz de tu dominio, 208 00:10:31,480 --> 00:10:35,920 así que está esperando que usted esté en demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Tenemos que decirle que en realidad está en una subcarpeta. 210 00:10:37,540 --> 00:10:39,820 Está en una subcarpeta llamada CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 Lo que pasa es que está malinterpretando CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 como algo más, que voy a explicar a usted en un segundo. 213 00:10:45,680 --> 00:10:49,910 Pero debo decirte que eso es algo que es de esperar. 214 00:10:49,910 --> 00:10:53,700 Lo que vamos a hacer es que vamos a entrar en esta carpeta llamada Bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 que es la carpeta de configuración donde hay un montón de cosas diferentes se configuran. 216 00:10:59,260 --> 00:11:01,570 Abro eso. 217 00:11:01,570 --> 00:11:09,790 Entonces, tal vez una de las primeras cosas que voy a hacer es cambiar el huso horario. 218 00:11:09,790 --> 00:11:13,910 >> Y luego vamos a ver. 219 00:11:13,910 --> 00:11:15,180 ¡Ajá! Justo aquí. 220 00:11:15,180 --> 00:11:18,690 Hay un montón de diferentes refranes de configuración aquí, 221 00:11:18,690 --> 00:11:21,700 pero el que yo estoy buscando es esta cosa llamada URL base, 222 00:11:21,700 --> 00:11:24,570 y por defecto lo tengo configurado en Kohana, 223 00:11:24,570 --> 00:11:29,020 pero yo voy a cambiar eso a CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 y creo que eso debería arreglarlo. 225 00:11:32,880 --> 00:11:34,150 Sí, muy bien. 226 00:11:34,150 --> 00:11:39,530 Por defecto, para ver que está funcionando, que dice: "Hola Mundo". 227 00:11:39,530 --> 00:11:42,930 ¿De dónde viene? ¿Cómo hemos llegado a Hello World? 228 00:11:42,930 --> 00:11:47,640 ¿Dónde está exactamente el código que realmente escribió que? 229 00:11:47,640 --> 00:11:50,240 Para entender eso, voy a introducir este concepto llamado enrutamiento. 230 00:11:50,240 --> 00:11:52,590 Casi todos los frameworks web tienen el concepto llamado enrutamiento, 231 00:11:52,590 --> 00:11:57,230 que es la pieza del software que va a asignar una determinada URL 232 00:11:57,230 --> 00:12:01,550 a una cierta porción de código dentro de su marco. 233 00:12:01,550 --> 00:12:07,510 Por ejemplo, si usted tiene alguna URL y te vas a algún URL como foo.com / blog / todos 234 00:12:07,510 --> 00:12:11,170 entonces lo que el marco va a hacer - o por lo menos lo que Kohana va a hacer - 235 00:12:11,170 --> 00:12:15,540 se va a encontrar una clase llamada el blog de controlador, 236 00:12:15,540 --> 00:12:18,720 y que va a ejecutar la función denominada acción de todo. 237 00:12:18,720 --> 00:12:20,160 Sé que estoy hablando de la clase y las funciones, 238 00:12:20,160 --> 00:12:23,860 y yo sé que ustedes no tienen clases y funciones cubierto 239 00:12:23,860 --> 00:12:26,470 en CS50 todavía, pero por ahora, 240 00:12:26,470 --> 00:12:29,800 se puede pensar en las clases como un simple grupo de funciones, 241 00:12:29,800 --> 00:12:32,900 una forma de agrupar funciones juntas. 242 00:12:32,900 --> 00:12:37,690 Eso es realmente todo lo que necesita saber. 243 00:12:37,690 --> 00:12:43,120 >> Ahora bien, si nos fijamos en nuestra estructura de carpetas, 244 00:12:43,120 --> 00:12:47,110 dentro de la carpeta de la aplicación hay otra carpeta llamada clases, 245 00:12:47,110 --> 00:12:49,200 y las otras carpetas se llaman controlador y modelo. 246 00:12:49,200 --> 00:12:52,530 Si se mira el interior de la carpeta Controller, 247 00:12:52,530 --> 00:12:56,330 vemos que hay un archivo llamado Bienvenido, 248 00:12:56,330 --> 00:13:00,370 y se puede ver aquí es una clase llamada Controller Bienvenido, 249 00:13:00,370 --> 00:13:02,340 y hay una función llamada Índice de Acción, 250 00:13:02,340 --> 00:13:06,360 y lo que hace es que pone el cuerpo de su respuesta a Hello World. 251 00:13:06,360 --> 00:13:08,730 Ahí es donde se escribe el código. 252 00:13:08,730 --> 00:13:11,610 La otra pregunta es, bueno, yo no iba a la 253 00:13:11,610 --> 00:13:13,680 bla, bla, bla, / welcome / index. 254 00:13:13,680 --> 00:13:16,250 ¿Cómo fue que terminé aquí? 255 00:13:16,250 --> 00:13:20,410 Bueno, eso es simplemente porque 256 00:13:20,410 --> 00:13:22,410 aquí, en la parte inferior de nuestro archivo de arranque 257 00:13:22,410 --> 00:13:24,550 donde establecemos nuestras rutas 258 00:13:24,550 --> 00:13:26,570 se puede ver que se establecen algunos valores predeterminados para usted. 259 00:13:26,570 --> 00:13:28,990 El controlador por defecto es bienvenida. La acción predeterminada es Index. 260 00:13:28,990 --> 00:13:31,600 Es por eso que cuando ponemos nada allí pasó automáticamente al controlador Bienvenido 261 00:13:31,600 --> 00:13:33,940 y la Acción índice. 262 00:13:33,940 --> 00:13:37,460 >> Todo tiene sentido hasta ahora? 263 00:13:37,460 --> 00:13:40,850 Ahora, usted puede hacer algo más que ir al Controlador 264 00:13:40,850 --> 00:13:43,670 y una acción específica. 265 00:13:43,670 --> 00:13:48,480 También es posible enviar parámetros al controlador. 266 00:13:48,480 --> 00:13:56,390 Sólo como ejemplo, 267 00:13:56,390 --> 00:14:04,070 Voy a añadir otra acción para este controlador se puede mostrar. 268 00:14:04,070 --> 00:14:09,130 Vamos a llamar a esta acción Eco, porque va a decirle lo que le des, 269 00:14:09,130 --> 00:14:17,510 y por lo que estoy básicamente va a agarrar 270 00:14:17,510 --> 00:14:20,960 un parámetro que va a ser enviado a través de mí en el programa de enrutamiento, 271 00:14:20,960 --> 00:14:24,440 y como se puede ver aquí, 272 00:14:24,440 --> 00:14:28,440 esta línea de aquí, se puede ver que 273 00:14:28,440 --> 00:14:31,270 esto básicamente significa que usted tiene control, y usted tiene un /, 274 00:14:31,270 --> 00:14:33,480 y usted tiene la acción, y usted tiene otro /, 275 00:14:33,480 --> 00:14:39,140 y eso va a ser parámetros, y porque tenemos este nombre ID 276 00:14:39,140 --> 00:14:42,450 entre corchetes angulares, eso significa que estamos nombrando este parámetro ID. 277 00:14:42,450 --> 00:14:45,490 Más tarde, en mi código de controlador si quiero tomar una bodega de ese parámetro, 278 00:14:45,490 --> 00:14:51,790 Puedo usar el código que he escrito, encontrar el parámetro denominado ID. 279 00:14:51,790 --> 00:14:59,290 Eso es lo que he hecho aquí, y voy a regresar y decir: 280 00:14:59,290 --> 00:15:07,090 "Usted dijo que" eso. 281 00:15:07,090 --> 00:15:10,760 Y ahora si me voy en nuestro sitio web, 282 00:15:10,760 --> 00:15:19,550 Voy a cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 oh, eso es correcto. 284 00:15:21,420 --> 00:15:23,930 Hay 1 paso dejé fuera. 285 00:15:23,930 --> 00:15:27,020 Esto es parte de la idea de codificación en directo. 286 00:15:27,020 --> 00:15:36,100 >> Aquí hay 1 cosa. Vamos a ver. 287 00:15:36,100 --> 00:15:38,870 Así que normalmente por defecto con una gran cantidad de estas aplicaciones web 288 00:15:38,870 --> 00:15:42,820 usted tiene que incluir esto index.php en su URL, 289 00:15:42,820 --> 00:15:46,410 porque la idea se index.php es una especie de punto de entrada 290 00:15:46,410 --> 00:15:48,250 de su aplicación, pero por supuesto, 291 00:15:48,250 --> 00:15:50,110 que es una especie de molesto tener. 292 00:15:50,110 --> 00:15:53,790 Usted no quiere tener index.php aparecen en su URL, 293 00:15:53,790 --> 00:15:56,080 y casi todos los framework web de la caja 294 00:15:56,080 --> 00:15:58,440 tiene este problema index.php, 295 00:15:58,440 --> 00:16:03,370 y así que usted tiene que tomar algunas medidas para ser capaz de eliminar eso. 296 00:16:03,370 --> 00:16:07,540 Y así, en este caso, 297 00:16:07,540 --> 00:16:11,450 lo que vamos a hacer es que vamos a utilizar un archivo llamado. htaccess, 298 00:16:11,450 --> 00:16:13,900 y esto es algo que es específico para el servidor web Apache, 299 00:16:13,900 --> 00:16:16,290 y puede hacer cosas como reescritura de direcciones URL 300 00:16:16,290 --> 00:16:19,350 y redirigir URLs y así sucesivamente y así sucesivamente, 301 00:16:19,350 --> 00:16:24,280 y Kohana es lo suficientemente bueno para proporcionar un archivo htaccess plantilla. que podemos utilizar. 302 00:16:24,280 --> 00:16:28,300 >> Como puede ver, hay un archivo llamado allí example.htaccess, 303 00:16:28,300 --> 00:16:33,410 y vamos a copiar eso. htaccess. 304 00:16:33,410 --> 00:16:36,950 Voy a abrir este y editarlo, 305 00:16:36,950 --> 00:16:40,840 y, básicamente, hace un montón de cosas diferentes. 306 00:16:40,840 --> 00:16:45,320 La línea clave es posible que desee tener en cuenta es justo aquí. 307 00:16:45,320 --> 00:16:49,840 La idea es que este establece una regla que dice que, 308 00:16:49,840 --> 00:16:56,400 "Está bien, lo que se ingrese en, index.php anteponer a eso." 309 00:16:56,400 --> 00:16:58,710 Usted puede ver eso. 310 00:16:58,710 --> 00:17:00,370 La. * Destaca por nada, coincide con nada, 311 00:17:00,370 --> 00:17:03,300 y la segunda parte es index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 y $ 0 hace referencia a lo que fue emparejado previamente. 313 00:17:07,410 --> 00:17:09,500 ¿Eso tiene sentido? 314 00:17:09,500 --> 00:17:12,190 Pero lo realmente clave que quiero cambiar es cambiar esta base de reescritura, 315 00:17:12,190 --> 00:17:14,300 que es la base de la URL. 316 00:17:14,300 --> 00:17:17,780 De alguna manera se asume en el que está trabajando desde. 317 00:17:17,780 --> 00:17:22,560 Voy a añadir CS50 Kohana a eso, 318 00:17:22,560 --> 00:17:26,530 y de esa manera ahora si me quita el index.php, 319 00:17:26,530 --> 00:17:32,110 que debería funcionar, y voy a agregar algunos números 320 00:17:32,110 --> 00:17:36,380 se puede mostrar que, efectivamente, funcionó. 321 00:17:36,380 --> 00:17:38,130 Suena bien. 322 00:17:38,130 --> 00:17:40,260 >> ¿Preguntas hasta ahora? 323 00:17:40,260 --> 00:17:42,300 [Estudiante] ¿Cómo se sabe para hacer el 123? 324 00:17:42,300 --> 00:17:44,120 ¿Eso es un argumento? 325 00:17:44,120 --> 00:17:46,560 Exactamente. Usted puede pensar en él como un argumento. 326 00:17:46,560 --> 00:17:52,410 Pero lo más extraño, sin embargo, es que la forma en Kohana hace 327 00:17:52,410 --> 00:17:54,910 es que no lo hace exactamente como un argumento. 328 00:17:54,910 --> 00:17:56,930 Tienes que agarrar así. 329 00:17:56,930 --> 00:18:01,030 Tienes que agarrar el objeto de la petición y pedir el parámetro que se denomina ID, 330 00:18:01,030 --> 00:18:03,240 y que el nombre ID viene de ese archivo de arranque 331 00:18:03,240 --> 00:18:06,990 que mostré antes, y el nombre de ID estaba en esos paréntesis angulares, 332 00:18:06,990 --> 00:18:11,580 y así es como agarrar esos parámetros. 333 00:18:11,580 --> 00:18:14,010 Impresionante. 334 00:18:14,010 --> 00:18:17,550 ¿Alguna otra pregunta? 335 00:18:17,550 --> 00:18:20,500 Como he dicho, los controladores, que manejan la lógica de aplicación, 336 00:18:20,500 --> 00:18:22,980 así que eso es 1 caso en el que se puede ver eso es - 337 00:18:22,980 --> 00:18:24,830 es muy básico, pero aún así es la lógica de aplicación, 338 00:18:24,830 --> 00:18:27,980 la idea de agarrar el parámetro y la creación de una nueva cadena 339 00:18:27,980 --> 00:18:31,920 que dice: "Usted ha dicho, bla", y luego escupir que volver a usted. 340 00:18:31,920 --> 00:18:34,030 Y en general, lo que se hace es crear diferentes controladores. 341 00:18:34,030 --> 00:18:36,450 Puede crear controladores separados para diferentes partes de su sitio web. 342 00:18:36,450 --> 00:18:38,160 >> Hoy vamos a hacer un sitio web muy simple, 343 00:18:38,160 --> 00:18:40,420 y que va a ser un blog muy básico. 344 00:18:40,420 --> 00:18:43,780 Vamos a hacer un nuevo controlador sólo para los mensajes en un blog. 345 00:18:43,780 --> 00:18:47,060 Pero si tuviera que añadir también comentarios a la entrada del blog, 346 00:18:47,060 --> 00:18:50,140 entonces probablemente quiera hacer un nuevo controlador para esos comentarios. 347 00:18:50,140 --> 00:18:53,380 Si quisiera agregar usuarios, probablemente añadir un nuevo controlador para los usuarios, 348 00:18:53,380 --> 00:18:57,000 y, en general, la idea es que cada vez que tenga un nuevo modelo, 349 00:18:57,000 --> 00:18:59,630 un nuevo objeto de datos que se está tratando, 350 00:18:59,630 --> 00:19:02,970 usted tiene un único controlador para ese objeto de datos. 351 00:19:02,970 --> 00:19:04,370 Hoy sólo vamos a trabajar con 1 objeto de datos, 352 00:19:04,370 --> 00:19:06,250 y que va a haber puestos de trabajo, 353 00:19:06,250 --> 00:19:08,710 y también se puede pensar en los objetos de datos que corresponde a las tablas. 354 00:19:08,710 --> 00:19:12,160 Generalmente cada tabla corresponde a 1 tipo de objeto de datos, 355 00:19:12,160 --> 00:19:15,160 por lo que la tabla de puesto tendrá 1 modelo post, 356 00:19:15,160 --> 00:19:18,230 que contará con 1 controlador de puesto de trabajo correspondiente a ese, 357 00:19:18,230 --> 00:19:22,190 y lo mismo para comentarios, la misma para los usuarios, y así sucesivamente y así sucesivamente. 358 00:19:22,190 --> 00:19:24,070 Y eso es una regla general. 359 00:19:24,070 --> 00:19:27,460 No van a haber casos especiales en los que puede diferir de la, 360 00:19:27,460 --> 00:19:29,300 pero el 90% de las veces eso es lo que vas a hacer, 361 00:19:29,300 --> 00:19:32,810 y yo te voy a mostrar que eso es lo que vamos a hacer hoy. 362 00:19:32,810 --> 00:19:35,490 1 más concepto antes de sumergirse de nuevo en el código, 363 00:19:35,490 --> 00:19:37,710 esta idea de mapeo relacional de objetos. 364 00:19:37,710 --> 00:19:41,200 >> Ustedes ya han hecho un desarrollo conjunto de procesadores web, 365 00:19:41,200 --> 00:19:43,820 y has visto que haga una consulta SQL, 366 00:19:43,820 --> 00:19:46,510 y todo lo devuelve a usted son filas. 367 00:19:46,510 --> 00:19:50,040 Usted recibe estas filas, y el índice de ellos por algún nombre, 368 00:19:50,040 --> 00:19:55,480 el nombre de la columna y la tabla, 369 00:19:55,480 --> 00:19:57,630 y así es como se trabaja con ella, 370 00:19:57,630 --> 00:19:59,290 y puede ser un poco engorroso. 371 00:19:59,290 --> 00:20:01,810 Pero además, si tiene relaciones dentro de su base de datos, 372 00:20:01,810 --> 00:20:05,280 como por ejemplo si tengo comentarios y mensajes, 373 00:20:05,280 --> 00:20:11,240 entonces tal vez quiero agarrar el mensaje de los padres de un comentario. 374 00:20:11,240 --> 00:20:14,350 Si utilizo sólo filas en SQL, entonces todo lo que puedo conseguir es el ID de 375 00:20:14,350 --> 00:20:19,310 del puesto de los padres y no el mensaje real. 376 00:20:19,310 --> 00:20:21,680 Pero cuando estamos de codificación, lo que realmente queremos es captar realmente 377 00:20:21,680 --> 00:20:23,550  el padre puesto en sí veces. 378 00:20:23,550 --> 00:20:25,730 ¿Qué objeto de asignación relacional hace es 379 00:20:25,730 --> 00:20:29,480 que toma los resultados de la consulta de base de datos 380 00:20:29,480 --> 00:20:32,420 y lo pone en objetos para usted, que son mucho más agradable para trabajar con 381 00:20:32,420 --> 00:20:34,770 que los arrays planos y filas. 382 00:20:34,770 --> 00:20:37,550 >> Por ejemplo, ahora cuando tengo un comentario tal vez, 383 00:20:37,550 --> 00:20:40,900 y quiero agarrar su mensaje principal, 384 00:20:40,900 --> 00:20:43,440 y yo tal vez comento flecha post, 385 00:20:43,440 --> 00:20:45,230 entonces lo que realmente me dará el objeto mensaje 386 00:20:45,230 --> 00:20:47,940 correspondiente al puesto actual de los padres, no sólo un documento de identidad, 387 00:20:47,940 --> 00:20:52,210 la que de otro modo habrían de usar y hacer otra consulta SQL para tomar el puesto, 388 00:20:52,210 --> 00:20:57,430 que es engorroso e innecesario. 389 00:20:57,430 --> 00:21:01,840 Y por otra parte, mediante la asignación de todas estas filas de datos en objetos, 390 00:21:01,840 --> 00:21:03,760 también puede adjuntar más funciones a los objetos, 391 00:21:03,760 --> 00:21:09,700 así por ejemplo, hablé de cómo las clases son esencialmente grupos de funciones. 392 00:21:09,700 --> 00:21:11,620 Usted puede pensar que es así. 393 00:21:11,620 --> 00:21:15,290 Por ejemplo, tal vez tengo este objeto post, 394 00:21:15,290 --> 00:21:17,830 y tal vez me gustaría tener algún tipo de función que se le atribuye 395 00:21:17,830 --> 00:21:20,300 que en el fondo me dice que fue Últimos? 396 00:21:20,300 --> 00:21:23,570 Fue publicado en la última semana, cierto o falso? 397 00:21:23,570 --> 00:21:27,320 Y eso es una función que pueda adjuntar a dicho objeto, 398 00:21:27,320 --> 00:21:31,300 y es muy conveniente tenerlo en el mismo lugar, 399 00:21:31,300 --> 00:21:33,820 y hay una gran cantidad de funciones diferentes que se pueden crear 400 00:21:33,820 --> 00:21:37,990 para estos objetos, y es realmente agradable para poder conectarlo a una clase, 401 00:21:37,990 --> 00:21:41,700 a un objeto, mientras que si usted acaba de tener filas que provienen de su base de datos, 402 00:21:41,700 --> 00:21:43,790 entonces realmente no se puede adjuntar cualquier funcionalidad a eso. 403 00:21:43,790 --> 00:21:47,850 Es, literalmente, sólo datos. 404 00:21:47,850 --> 00:21:50,550 ¿Una pregunta sobre eso en absoluto? 405 00:21:50,550 --> 00:21:52,710 ORM son el desarrollo web muy común, 406 00:21:52,710 --> 00:21:56,330 y hay un montón de diferentes tipos de ORM, 407 00:21:56,330 --> 00:21:58,450 Kohana y tiene su propio ORM. 408 00:21:58,450 --> 00:22:05,050 Es muy básico, pero obtendrá una idea de lo que parece. 409 00:22:05,050 --> 00:22:08,780 >> Vamos a crear un modelo para nuestro blog, 410 00:22:08,780 --> 00:22:12,350 y la primera cosa que obviamente tenemos que hacer es crear una tabla real 411 00:22:12,350 --> 00:22:16,680 dentro de nuestra base de datos para almacenar los datos de hecho para esos puestos. 412 00:22:16,680 --> 00:22:19,260 Lo primero que voy a hacer es ir a phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 ¿Han utilizado phpMyAdmin antes? 414 00:22:21,410 --> 00:22:23,400 Bueno, impresionante, así que ustedes ya saben lo que es eso, 415 00:22:23,400 --> 00:22:32,200 y yo voy a crear una nueva tabla llamada Kohana Mensajes, 416 00:22:32,200 --> 00:22:37,820 y que va a ser muy simple. 417 00:22:37,820 --> 00:22:40,190 Voy a tener que volver a iniciar sesión 418 00:23:02,620 --> 00:23:04,640 Todo lo que vamos a hacer hoy es tener un autor y un cuerpo, 419 00:23:04,640 --> 00:23:11,930 si prefieres algo más simple. 420 00:23:11,930 --> 00:23:15,620 Voy a crear esa mesa, 421 00:23:15,620 --> 00:23:19,620 y ahora sólo tenemos una tabla que representa nuestros mensajes 422 00:23:19,620 --> 00:23:23,370 con 2 campos de nuestro autor y nuestro cuerpo. 423 00:23:23,370 --> 00:23:26,290 La otra cosa que voy a hacer ahora es 424 00:23:26,290 --> 00:23:29,820 configurar mi aplicación web para que sepa cómo conectarse a la base de datos, 425 00:23:29,820 --> 00:23:31,950 y esto, de nuevo, es algo que tendrá que ver con todas las aplicaciones Web. 426 00:23:31,950 --> 00:23:34,790 Usted tiene que decirle el nombre de usuario y la contraseña 427 00:23:34,790 --> 00:23:36,990 y el nombre de la base de datos y así sucesivamente y así sucesivamente 428 00:23:36,990 --> 00:23:40,000 para averiguar cómo conectar realmente a su base de datos. 429 00:23:40,000 --> 00:23:58,710 >> En Kohana, tenemos algo que se llama un módulo de base de datos, 430 00:23:58,710 --> 00:24:02,690 y en la carpeta de configuración que tenemos esta carpeta llamada base de datos, 431 00:24:02,690 --> 00:24:07,330 y como se puede ver, hay un montón de ajustes que tiene que establecer aquí 432 00:24:07,330 --> 00:24:09,860 para decirle cuál es el nombre de usuario y la contraseña 433 00:24:09,860 --> 00:24:13,110 para la base de datos para que pueda conectarse a la misma realidad. 434 00:24:13,110 --> 00:24:15,010 Y como no quiero que sepan realmente 435 00:24:15,010 --> 00:24:17,190 el nombre de usuario y la contraseña de mi base de datos, 436 00:24:17,190 --> 00:24:23,840 Tengo un archivo que ya me puse todo, y yo voy a copiar y pegar la vuelta. 437 00:24:33,080 --> 00:24:36,870 Impresionante. 438 00:24:36,870 --> 00:24:39,880 Okay. Creo que esa es toda la configuración que tengo que hacer, 439 00:24:39,880 --> 00:24:41,070 pero vamos a ver. 440 00:24:41,070 --> 00:24:43,720 Vamos a seguir trabajando en ella, y si algo falla, 441 00:24:43,720 --> 00:24:47,490 luego lo arreglaremos. 442 00:24:47,490 --> 00:24:51,830 Ahora lo que voy a hacer es que voy a crear un nuevo controlador. 443 00:24:51,830 --> 00:24:53,190 O en realidad, lo siento. 444 00:24:53,190 --> 00:24:55,080 En primer lugar tengo que crear un nuevo modelo. 445 00:24:55,080 --> 00:25:01,620 Voy a crear un nuevo modelo llamado Post.php, 446 00:25:01,620 --> 00:25:12,440 y lo que vamos a hacer es que vamos a llamarlo clase Model_Post. 447 00:25:12,440 --> 00:25:15,390 Obtener algunos resaltado de sintaxis en, 448 00:25:15,390 --> 00:25:19,750 y así que cuando digo, "se extiende ORM," eso es, básicamente, 449 00:25:19,750 --> 00:25:21,210 un poco de programación más orientada a objetos, 450 00:25:21,210 --> 00:25:23,340 que, desgraciadamente, ustedes no han aprendido en CS50, sin embargo, 451 00:25:23,340 --> 00:25:25,290 pero es bastante fácil de aprender. 452 00:25:25,290 --> 00:25:27,950 Me da toda esta funcionalidad extra que viene en este paquete ORM, 453 00:25:27,950 --> 00:25:31,120 y por lo que obtener un montón de funciones y otras cosas gratis extra, 454 00:25:31,120 --> 00:25:34,810 que verá un poco en un segundo. 455 00:25:34,810 --> 00:25:37,670 >> En este momento en realidad todo lo que necesito hacer es crear esta clase. 456 00:25:37,670 --> 00:25:39,160 Ni siquiera necesito hacer ninguna función ni nada, 457 00:25:39,160 --> 00:25:41,770 pero yo he creado una clase que representa la tabla, 458 00:25:41,770 --> 00:25:44,140 y porque me he extendido esta clase ORM, 459 00:25:44,140 --> 00:25:51,080 Puedo conseguir un montón de cosas gratis, así que por ahora no tienes que configurar nada más arriba. 460 00:25:51,080 --> 00:25:53,530 Y ahora lo que voy a hacer es que voy a crear un nuevo controlador, 461 00:25:53,530 --> 00:25:58,480 que voy a nombrar blog.php, 462 00:25:58,480 --> 00:26:04,350 y yo voy a copiar el controlador Bienvenido 463 00:26:04,350 --> 00:26:11,950 así que no tengo que volver a escribir algunas cosas, 464 00:26:11,950 --> 00:26:20,720 y ahora tengo que cambiar el nombre de este. 465 00:26:20,720 --> 00:26:24,710 Ahora lo que voy a hacer para poner a prueba para asegurarse de que todo está funcionando, 466 00:26:24,710 --> 00:26:27,820 Voy a agarrar el primer post de mi base de datos 467 00:26:27,820 --> 00:26:32,680 e imprimir el cuerpo del mensaje en la pantalla. 468 00:26:32,680 --> 00:26:37,920 Para hacer eso lo que voy a hacer en primer lugar es que voy a guardar los mensajes 469 00:26:37,920 --> 00:26:48,770 a una variable por lo que lo que vamos a hacer es - 470 00:26:48,770 --> 00:26:52,090 Kohana en lo que haces es para agarrar el objeto mensaje 471 00:26:52,090 --> 00:26:55,380 que es algo engorroso, pero usted tiene que hacer esta cosa llamada ORM :: factory, 472 00:26:55,380 --> 00:26:57,750 y luego se pasa en el nombre del modelo que desea, 473 00:26:57,750 --> 00:27:00,490 y devuelve el objeto ORM que representa ese modelo. 474 00:27:00,490 --> 00:27:04,860 Y luego, como he dicho, cuando extendemos el objeto ORM, 475 00:27:04,860 --> 00:27:07,320 tenemos todos estos métodos de forma gratuita, así que por ejemplo, 476 00:27:07,320 --> 00:27:09,200 tenemos esta nueva función llamada "encontrar todos" 477 00:27:09,200 --> 00:27:12,160 que devuelve automáticamente cada mensaje individual en la base de datos, 478 00:27:12,160 --> 00:27:14,850 lo cual es bastante conveniente. 479 00:27:14,850 --> 00:27:17,480 >> Y ahora en el cuerpo que voy a regresar 480 00:27:17,480 --> 00:27:24,860 el primer post y devolver su cuerpo. 481 00:27:24,860 --> 00:27:27,930 Y, por supuesto, tengo que crear un post, 482 00:27:27,930 --> 00:27:31,880 así que vamos a insertar un nuevo post. 483 00:27:31,880 --> 00:27:37,870 Voy a decir, "Brandon, mi primer mensaje." 484 00:27:37,870 --> 00:27:40,010 Impresionante. 485 00:27:40,010 --> 00:27:45,910 Y ahora vamos a ir a los blogs 486 00:27:45,910 --> 00:27:50,960 y si todo funciona bien - oh, esto es de nuevo alguna otra cosa de permisos de ficheros tonto. 487 00:27:50,960 --> 00:27:56,090 Espera 1 segundo. Es un poco absurdo. 488 00:28:06,700 --> 00:28:08,490 Eso es. Okay. 489 00:28:08,490 --> 00:28:10,040 Me fijo que problema de permisos. 490 00:28:10,040 --> 00:28:12,040 Se estaba tratando de crear algunos archivos y algunos de registro, 491 00:28:12,040 --> 00:28:15,400 y los permisos, una vez más, no fueron adecuadamente establecidos, por lo que hicieron 492 00:28:15,400 --> 00:28:18,320 por lo que los archivos estaban escribible y ejecutable 493 00:28:18,320 --> 00:28:21,090 por lo que en realidad podría iniciar a las cosas. 494 00:28:21,090 --> 00:28:24,220 Ahora me está dando otro dicho excepción, "clase ORM no encontrado" 495 00:28:24,220 --> 00:28:26,960 y eso es porque se me olvidó un paso más. 496 00:28:26,960 --> 00:28:37,010 Eso es muy malo. 497 00:28:37,010 --> 00:28:40,270 En el archivo de la carpeta de arranque, hay estos módulos aquí, 498 00:28:40,270 --> 00:28:42,480 que se puede optar por activar o desactivar. 499 00:28:42,480 --> 00:28:44,340 Son un montón de diferentes características que usted puede optar por utilizar 500 00:28:44,340 --> 00:28:46,180 dentro de Kohana, que es una especie de agradable. 501 00:28:46,180 --> 00:28:49,090 >> Por ejemplo, tienen un módulo de autenticación 502 00:28:49,090 --> 00:28:51,170 que se puede utilizar para la autenticación de usuarios. 503 00:28:51,170 --> 00:28:53,390 Tienen un módulo de almacenamiento en caché si desea implementar 504 00:28:53,390 --> 00:28:57,870 algún tipo de almacenamiento en caché de back-end para que la aplicación funcione más rápido y otras cosas. 505 00:28:57,870 --> 00:29:02,140 Tenemos que permitir que la base de datos y el módulo de ORM, 506 00:29:02,140 --> 00:29:04,280 porque como he dicho, estamos usando la base de datos, obviamente, 507 00:29:04,280 --> 00:29:08,200 y también tenemos que habilitar el módulo ORM, 508 00:29:08,200 --> 00:29:12,220 porque nos gustaría tener la funcionalidad adicional, que es bueno tener. 509 00:29:12,220 --> 00:29:14,240 Todo lo que tengo que hacer es descomentar estas 2 líneas, 510 00:29:14,240 --> 00:29:18,760 y ahora si restauro, me dio otro error. 511 00:29:18,760 --> 00:29:22,100 Dice: "Clase Model_Post no se encuentra." 512 00:29:22,100 --> 00:29:30,210 Ahora bien, este es un buen problema para tener. 513 00:29:30,210 --> 00:29:37,660 Vamos a ver. 514 00:29:37,660 --> 00:29:42,200 Que sea público. 515 00:29:42,200 --> 00:29:46,450 No. Espera. 516 00:30:11,610 --> 00:30:13,160 Oh, querido. 517 00:30:13,160 --> 00:30:18,590 No sé por qué no es capaz de encontrar eso. 518 00:30:18,590 --> 00:30:21,030 Eso es realmente extraño. 519 00:30:21,030 --> 00:30:23,820 Tengo esta clase aquí. 520 00:30:23,820 --> 00:30:28,650 Supongo que voy a tener que - oh. 521 00:30:28,650 --> 00:30:32,010 Yo soy tan tonto. Se me olvidó añadir una etiqueta PHP. 522 00:30:32,010 --> 00:30:34,670 Por eso. 523 00:30:34,670 --> 00:30:41,260 Ahora tengo que deshacer ese 1 cambio que acaba de hacer. 524 00:30:41,260 --> 00:30:44,270 >> Okay. Eso es. 525 00:30:44,270 --> 00:30:47,500 Eso fue realmente tonto. Yo no tenía una etiqueta PHP apertura. 526 00:30:47,500 --> 00:30:49,900 Pero como se puede ver, ahora que está funcionando correctamente, ¿no? 527 00:30:49,900 --> 00:30:51,240 Tenemos 1 mensaje. 528 00:30:51,240 --> 00:30:54,730 Nos agarró el primer puesto, y ahora imprimimos su cuerpo. 529 00:30:54,730 --> 00:30:58,010 Grande. Fantástico. 530 00:30:58,010 --> 00:31:01,470 Cualquier pregunta hasta ahora? 531 00:31:01,470 --> 00:31:04,100 Nope? ¿Alguna pregunta? 532 00:31:04,100 --> 00:31:08,340 Bueno, por lo que acabamos de crear el modelo posterior, muy básico, 533 00:31:08,340 --> 00:31:10,930 y vamos a añadir algunas funciones más adelante. 534 00:31:10,930 --> 00:31:13,600 Podemos añadir validaciones y filtrado. 535 00:31:13,600 --> 00:31:15,650 Validaciones son una de las cosas 536 00:31:15,650 --> 00:31:18,150 que los marcos de resolver para usted muy, muy bien, 537 00:31:18,150 --> 00:31:21,310 y no creo que ustedes tenían que hacer esto para su pset CS50, 538 00:31:21,310 --> 00:31:24,000 pero si lo hace el desarrollo web para su proyecto final, 539 00:31:24,000 --> 00:31:26,280 usted está probablemente va a querer hacer algún tipo de validación, 540 00:31:26,280 --> 00:31:28,290 como no tener los nombres de usuario en blanco, 541 00:31:28,290 --> 00:31:31,950 tal vez tener una contraseña con al menos alguna extensión, cosas así. 542 00:31:31,950 --> 00:31:34,750 Y es muy engorroso para poner en práctica estas cosas por nosotros mismos, 543 00:31:34,750 --> 00:31:37,390 y casi todos los framework web solo lo hace por usted 544 00:31:37,390 --> 00:31:41,140 y le permite hacerlo de una manera muy limpia. 545 00:31:41,140 --> 00:31:44,340 Y el modelo es donde se suelen expresar esas reglas de validación, 546 00:31:44,340 --> 00:31:48,790 porque está validando si un modelo es válido o no. 547 00:31:48,790 --> 00:31:51,350 >> Pero por ahora, vamos a poner eso para más tarde, 548 00:31:51,350 --> 00:31:53,520 y por ahora vamos a trabajar en otra parte, 549 00:31:53,520 --> 00:31:55,400 y vamos a tratar de hacer una nueva vista 550 00:31:55,400 --> 00:31:59,580 que muestra todos los mensajes. 551 00:31:59,580 --> 00:32:02,490 Los pasos necesarios para realizar una nueva acción para la inclusión de todos los puestos 552 00:32:02,490 --> 00:32:04,810 es para tomar una lista de todos los mensajes 553 00:32:04,810 --> 00:32:11,990 y luego hacer la lista de todos los mensajes a través de un punto de vista. 554 00:32:11,990 --> 00:32:16,420 Aquí, afortunadamente, ya agarramos todos los puestos 555 00:32:16,420 --> 00:32:20,310 utilizando esta primera línea, el encontrar todas las funciones, 556 00:32:20,310 --> 00:32:22,520 y ahora lo que vamos a hacer es lo que va 557 00:32:22,520 --> 00:32:25,350 He estado fijando directamente el cuerpo de la respuesta 558 00:32:25,350 --> 00:32:29,090 pasando la cadena, pero ahora quiero usar una vista, 559 00:32:29,090 --> 00:32:31,870 y la diferencia entre una vista y haciendo esto 560 00:32:31,870 --> 00:32:35,330 Es con el fin puedo tener una agradable gran plantilla, HTML, 561 00:32:35,330 --> 00:32:37,710 y lo que puedo hacer es pasarlo ciertas variables 562 00:32:37,710 --> 00:32:42,200 y luego tener la vista rellenar automáticamente su plantilla 563 00:32:42,200 --> 00:32:44,690 el uso de esas variables. 564 00:32:44,690 --> 00:32:50,780 ¿Qué voy a hacer es que voy a crear un nuevo punto de vista, 565 00:32:50,780 --> 00:32:55,940 y yo te nombro la vista algo así como "el blog / índice" 566 00:32:55,940 --> 00:33:08,480 y yo voy a obligar básicamente esto - oh, ¿qué estoy escribiendo? 567 00:33:08,480 --> 00:33:12,910 Mi cerebro está en otra parte. 568 00:33:12,910 --> 00:33:16,600 Voy a enlazar los puestos variables a la vista, 569 00:33:16,600 --> 00:33:19,950 de manera de que la vista tiene acceso a esta variable puesto. 570 00:33:19,950 --> 00:33:26,140 >> Y así que ahora tengo que crear este punto de vista, 571 00:33:26,140 --> 00:33:28,500 así que aquí tenemos esta carpeta llamada "puntos de vista" 572 00:33:28,500 --> 00:33:32,150 y en primer lugar, voy a crear una nueva carpeta en el que llama "Blog". 573 00:33:32,150 --> 00:33:35,810 Esto es bueno. De esta manera podemos tener un buen jerarquía para nuestros puntos de vista. 574 00:33:35,810 --> 00:33:43,910 Y luego voy a crear otro archivo de allí llamado "index.php". 575 00:33:43,910 --> 00:33:45,780 Impresionante. 576 00:33:45,780 --> 00:33:52,930 En realidad, vamos a tener a los dos aquí. 577 00:33:52,930 --> 00:33:56,760 Hacer un archivo de vista es probablemente la parte más sencilla de todo esto, 578 00:33:56,760 --> 00:33:59,090 y estos son probablemente cosas que usted ya está familiarizado con. 579 00:33:59,090 --> 00:34:01,240 Vamos a hacer algo muy simple, 580 00:34:01,240 --> 00:34:05,360 empezar a decir: "Mi lista de entradas de blog." 581 00:34:05,360 --> 00:34:14,860 Luego podemos ir a través de, 582 00:34:14,860 --> 00:34:17,920 y podemos recorrer el array mensajes, 583 00:34:17,920 --> 00:34:21,760 agarrar cada puesto y decir algo como - 584 00:34:21,760 --> 00:34:25,290 tal vez añadir una línea 585 00:34:25,290 --> 00:34:42,460 y luego imprimir el autor y el cuerpo. 586 00:34:42,460 --> 00:34:44,480 Eso tiene sentido hasta ahora? 587 00:34:44,480 --> 00:34:50,870 Y vamos a ver si funciona. 588 00:34:50,870 --> 00:34:53,489 No ocurrió nada. 589 00:34:53,489 --> 00:34:55,090 Me pregunto por qué. 590 00:34:55,090 --> 00:34:58,760 Oh, me perdí 1 paso. Muy tonto de mi parte. 591 00:34:58,760 --> 00:35:01,640 He creado un punto de vista, pero no me puse la vista como la respuesta, 592 00:35:01,640 --> 00:35:03,190 por lo que tiene que hacer 1 cosa más. 593 00:35:03,190 --> 00:35:12,610 Usted tiene que hacer "este cuerpo de la respuesta" y ajustarlo para que sea la vista. 594 00:35:12,610 --> 00:35:14,760 Eso es. 595 00:35:14,760 --> 00:35:17,200 Tenemos nuestra partida, y luego tenemos un post, 596 00:35:17,200 --> 00:35:20,500 y, sólo por diversión, vamos a insertar otro post 597 00:35:20,500 --> 00:35:23,390 para que podamos ver una lista. 598 00:35:31,800 --> 00:35:36,650 Y insertar estos 2 postes, 599 00:35:36,650 --> 00:35:39,500 y ahora si me refresque la página, 600 00:35:39,500 --> 00:35:42,060 vemos todos estos puestos aquí. 601 00:35:42,060 --> 00:35:44,250 >> ¿Eso tiene sentido hasta ahora? 602 00:35:44,250 --> 00:35:46,400 Sí, una pregunta? Oh, está bien. 603 00:35:46,400 --> 00:35:51,440 Como puede ver, hemos sido capaces de separar todos estos códigos cabo 604 00:35:51,440 --> 00:35:53,920 en diferentes secciones, y entonces usted puede ver que es más claro con el código de la vista. 605 00:35:53,920 --> 00:35:57,810 Este archivo de aquí que representa la vista, 606 00:35:57,810 --> 00:36:01,220 que sólo se preocupa por la representación de datos, la visualización de datos. 607 00:36:01,220 --> 00:36:04,310 Esto se pasa algún tipo de datos, y lo único que hace es sólo mostrar a usted. 608 00:36:04,310 --> 00:36:07,660 En todas las otras partes de su código, usted no tendrá que preocuparse por nada de eso, 609 00:36:07,660 --> 00:36:10,480 y del mismo modo, su código de la vista no tiene que preocuparse acerca de cualquier cosa 610 00:36:10,480 --> 00:36:13,390 cómo acceder a la base de datos y así sucesivamente y así sucesivamente, 611 00:36:13,390 --> 00:36:19,950 que es muy bueno y hace el código mucho más fácil de mantener. 612 00:36:19,950 --> 00:36:23,390 Como he dicho, las vistas, que son dinámicos en ese 613 00:36:23,390 --> 00:36:27,080 es 1 archivo, pero sería generar diferentes puntos de vista 614 00:36:27,080 --> 00:36:29,940 función de las variables que realmente pase en, 615 00:36:29,940 --> 00:36:32,370 y además, hay una gran cantidad de diferentes funciones de ayuda 616 00:36:32,370 --> 00:36:34,230 que puede utilizar para ayudarle a escribir su código más rápido, 617 00:36:34,230 --> 00:36:36,320 el que yo te mostraré en tan sólo unos segundos. 618 00:36:36,320 --> 00:36:38,050 Sí. 619 00:36:38,050 --> 00:36:42,490 >> [Estudiante] Así que $ 0 es un controlador, ¿no? 620 00:36:42,490 --> 00:36:44,000 Esa segunda cosa. 621 00:36:44,000 --> 00:36:46,090 La pregunta es es de $ 0 un controlador? 622 00:36:46,090 --> 00:36:48,610 $ 0 es una variable que he creado aquí. 623 00:36:48,610 --> 00:36:51,320 He creado una vista en primer lugar. He asignado a alguna variable. 624 00:36:51,320 --> 00:36:54,960 Luego pasé a esta función, haga lo que el cuerpo de la respuesta. 625 00:36:54,960 --> 00:36:57,260 ¿Eso tiene sentido? 626 00:36:57,260 --> 00:37:02,200 [Estudiante] Así es vista :: factory, es vista como una clase 627 00:37:02,200 --> 00:37:06,610 o un [inaudible] Función fábrica biblioteca? 628 00:37:06,610 --> 00:37:10,640 La pregunta se refiere a la función de vista :: factory, 629 00:37:10,640 --> 00:37:14,020 y básicamente se trata de un poco más de la programación orientada a objetos en esencia. 630 00:37:14,020 --> 00:37:18,000 Vista es la clase de vista, y tiene un método llamado "Factory" 631 00:37:18,000 --> 00:37:24,170 y eso es una manera de captar el objeto que se llama "el blog / índice." 632 00:37:24,170 --> 00:37:27,140 Y eso es un poco más de cosas de programación orientada a objetos 633 00:37:27,140 --> 00:37:33,010 que yo no voy a entrar aquí demasiado. 634 00:37:33,010 --> 00:37:36,400 Ahora, obviamente, queremos crear nuevos puestos de trabajo, 635 00:37:36,400 --> 00:37:38,790 pero no quiero tener que hacerlo a través de una base de datos, 636 00:37:38,790 --> 00:37:41,280 así que vamos a crear una nueva acción para la creación de un nuevo puesto, 637 00:37:41,280 --> 00:37:43,050 y hay un montón de cosas que tenemos que hacer. 638 00:37:43,050 --> 00:37:45,910 >> Lo primero que vamos a hacer - vamos a abordar estas cosas una por una. 639 00:37:45,910 --> 00:37:48,320 Lo primero que vamos a hacer es que tenemos que crear un formulario 640 00:37:48,320 --> 00:37:54,460 para la inserción de un nuevo puesto, 641 00:37:54,460 --> 00:37:57,360 pero yo también voy a añadir una nueva acción en primer lugar, 642 00:37:57,360 --> 00:38:01,050 por lo que añadir una nueva acción es tan fácil como 643 00:38:01,050 --> 00:38:03,490 añadiendo una nueva función con el controlador, 644 00:38:03,490 --> 00:38:13,710 y por ahora me voy a hacer algo muy básico, 645 00:38:13,710 --> 00:38:20,850 sólo tienes que tomar este punto de vista y que lo ponga, simplemente mostrarlo para usted. 646 00:38:20,850 --> 00:38:26,220 Y entonces ahora voy a crear un nuevo archivo de vista, 647 00:38:26,220 --> 00:38:33,690 y yo voy a empezar a escribir algunas cosas. 648 00:38:33,690 --> 00:38:36,540 Lo bueno de Kohana es que proporcionan una gran cantidad de funciones de ayuda 649 00:38:36,540 --> 00:38:38,790 para que usted escriba la vista de código más fácilmente, 650 00:38:38,790 --> 00:38:41,970 y 1 de las funciones auxiliares o módulos de ayuda 651 00:38:41,970 --> 00:38:45,860 está alrededor de la escritura formas. 652 00:38:45,860 --> 00:38:49,460 Para la escritura de formas, yo realmente no tengo que escribir directamente cualquier código HTML mí mismo. 653 00:38:49,460 --> 00:38:51,100 Ustedes han escrito los formularios HTML. 654 00:38:51,100 --> 00:38:54,850 Ya sabes lo que puede ser muy, muy doloroso e incómodo para escribir formas. 655 00:38:54,850 --> 00:38:59,970 No es divertido, así que afortunadamente, 656 00:38:59,970 --> 00:39:04,860 que, básicamente, se puede escribir un formulario utilizando Kohana de 657 00:39:04,860 --> 00:39:11,190 formar funciones auxiliares para que lo haga por nosotros. 658 00:39:11,190 --> 00:39:17,340 Vamos a tener básicamente campos por cada cosa que tenemos, 659 00:39:17,340 --> 00:39:23,160 por lo que uno de los autores y la otra para los cuerpos. 660 00:39:23,160 --> 00:39:27,090 Vamos a tener una etiqueta, y vamos a tener una entrada. 661 00:39:37,450 --> 00:39:41,360 >> Y finalmente, vamos a tener una presentación. 662 00:39:49,350 --> 00:39:52,230 Y como se puede ver, esto es mucho más limpio para escribir 663 00:39:52,230 --> 00:39:58,150 que todo lo que HTML desordenado, que es un poco agradable. 664 00:39:58,150 --> 00:40:00,930 Por supuesto, hay otros frameworks web que lo tienen aún más limpio que eso, 665 00:40:00,930 --> 00:40:04,440 pero al menos esto es mejor que escribir el código HTML usted mismo. 666 00:40:09,400 --> 00:40:11,130 Impresionante, así que esto es lo que se ve. 667 00:40:11,130 --> 00:40:13,530 Eso es un poco desordenado, 668 00:40:13,530 --> 00:40:19,720 así que voy a añadir un salto de línea no 669 00:40:19,720 --> 00:40:21,180 para hacer esa mirada un poco más agradable. 670 00:40:21,180 --> 00:40:23,330 Bueno, por supuesto, todavía se ve muy, muy mal, pero nosotros sólo estamos concentrados 671 00:40:23,330 --> 00:40:26,050 en la funcionalidad por ahora y no en la estética. 672 00:40:26,050 --> 00:40:28,010 No hay tiempo para hacerlo todo. 673 00:40:28,010 --> 00:40:30,600 Y como pueden ver, ahora tenemos una forma muy básica, 674 00:40:30,600 --> 00:40:32,080 que es una especie de agradable. 675 00:40:32,080 --> 00:40:36,730 Este código, diría que es más limpio que el que intenta escribir un archivo HTML formar a ti mismo, 676 00:40:36,730 --> 00:40:40,290 así que eso es bueno. 677 00:40:40,290 --> 00:40:42,030 ¿Qué sigue? 678 00:40:42,030 --> 00:40:49,260 Ahora tenemos que hacer las cosas con la acción. 679 00:40:49,260 --> 00:40:51,240 Normalmente, cuando usted escribe los formularios HTML, 680 00:40:51,240 --> 00:40:54,070 usted tiene que decirle por dónde se va a enviar el formulario al. 681 00:40:54,070 --> 00:40:56,050 De forma predeterminada en la mayoría de los frameworks web, 682 00:40:56,050 --> 00:40:58,200 se somete a la misma URL exacta, por lo que la cosa es, 683 00:40:58,200 --> 00:41:01,310 si envía una solicitud GET a / blog / nueva, 684 00:41:01,310 --> 00:41:03,240 que debe mostrar el formulario, 685 00:41:03,240 --> 00:41:06,810 pero si usted envía una solicitud POST a / blog / nueva con los datos, 686 00:41:06,810 --> 00:41:10,000 lo que realmente debe tratar de salvar a ese puesto 687 00:41:10,000 --> 00:41:13,300 y hacer algo con él. 688 00:41:20,630 --> 00:41:22,180 >> Lo que vamos a hacer es 689 00:41:22,180 --> 00:41:25,320 básicamente todo lo que tenemos que hacer para comprobar si se trata de una solicitud posterior o una petición get 690 00:41:25,320 --> 00:41:29,350 es comprobar cuáles son las variables de correos que se pueden establecer. 691 00:41:29,350 --> 00:41:34,560 Y si la variable mensaje se establece, entonces vamos a tratar de crear un nuevo puesto. 692 00:41:34,560 --> 00:41:38,440 Una vez más, acabamos de hacer esto, 693 00:41:38,440 --> 00:41:41,090 y que crea un nuevo puesto, y estamos, literalmente, va a 694 00:41:41,090 --> 00:41:51,150 establecer sus campos como éste, 695 00:41:51,150 --> 00:41:55,640 y luego vamos a guardarlo. 696 00:41:55,640 --> 00:41:59,200 Y luego voy a redirigir 697 00:41:59,200 --> 00:42:07,660 a la página de índice para que puedan ver nuestra lista de puestos de nuevo. 698 00:42:07,660 --> 00:42:09,620 Vamos a intentarlo. 699 00:42:09,620 --> 00:42:15,160 Voy a decir, "Brandon" 700 00:42:15,160 --> 00:42:18,140 y luego enviar el correo, y si todo va bien, 701 00:42:18,140 --> 00:42:21,390 como se puede ver, se me redirige a la página de índice, 702 00:42:21,390 --> 00:42:24,140 y si me desplazo hasta el fondo, tenemos un mensaje que acaba de insertar. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Sí, se trata. 705 00:42:28,430 --> 00:42:31,760 >> [Estudiante] ¿Qué pasa si usted la hubiera hecho exactamente lo mismo 706 00:42:31,760 --> 00:42:33,380 que ingresó antes? 707 00:42:33,380 --> 00:42:36,950 ¿Se comprueba para asegurarse de que no haya duplicados 708 00:42:36,950 --> 00:42:38,810 la misma comunicación? 709 00:42:38,810 --> 00:42:41,660 Sea por defecto, no, porque por defecto - 710 00:42:41,660 --> 00:42:46,470 Lo sentimos, la pregunta es si se introduce en los mismos datos en la forma 711 00:42:46,470 --> 00:42:50,180 y lo presentarán, ¿se permitirá insertar un objeto duplicado, 712 00:42:50,180 --> 00:42:52,550 una entrada duplicada, esencialmente? 713 00:42:52,550 --> 00:42:54,070 Ahora mismo, sí, va a permitir que usted haga eso, 714 00:42:54,070 --> 00:42:58,860 porque en las bases de datos es perfectamente válido tener filas completamente duplicados, 715 00:42:58,860 --> 00:43:02,260 pero si eso es una preocupación, entonces usted puede agregar validaciones, por ejemplo, 716 00:43:02,260 --> 00:43:06,430 para asegurarse de que si esto es exactamente lo mismo que algo que ya existe, 717 00:43:06,430 --> 00:43:08,720 luego decir que es un objeto no válido, 718 00:43:08,720 --> 00:43:11,200 y después, se puede especificar el mensaje de error 719 00:43:11,200 --> 00:43:14,390 y decir: "no válido porque este ya existe" o algo por el estilo. 720 00:43:14,390 --> 00:43:22,420 Pero en este caso, yo sólo podía crear algo duplicado. 721 00:43:22,420 --> 00:43:26,010 Ahora vamos a tratar de agregar algunas validaciones. 722 00:43:26,010 --> 00:43:30,400 El problema con esto ahora mismo es que 723 00:43:30,400 --> 00:43:34,220 Yo, literalmente, podía presentar un mensaje completamente en blanco. 724 00:43:34,220 --> 00:43:37,500 Puedo hacer clic en este botón en este momento, y hay que ir. 725 00:43:37,500 --> 00:43:40,290 Realmente no se puede ver, pero esta línea adicional aquí 726 00:43:40,290 --> 00:43:43,830 indica que, literalmente, tengo un nuevo puesto. 727 00:43:43,830 --> 00:43:46,050 Apenas tiene un autor en blanco y un cuerpo en blanco, 728 00:43:46,050 --> 00:43:48,630 y nosotros no queremos permitir que la gente haga eso. 729 00:43:48,630 --> 00:43:52,550 Aquí es donde entra en juego la validación 730 00:43:52,550 --> 00:43:57,540 >> Yo puedo ir a mi objeto de modelo, 731 00:43:57,540 --> 00:43:59,530 y ahora puedo añadir una nueva función que especifica 732 00:43:59,530 --> 00:44:02,000 qué reglas de validación Debo añadir que este modelo 733 00:44:02,000 --> 00:44:06,840 para asegurarse de que es válido o para especificar qué es lo que significa ser un mensaje válido? 734 00:44:06,840 --> 00:44:10,210 Y quiero decir que es sólo un mensaje válido si tanto el autor y el cuerpo 735 00:44:10,210 --> 00:44:15,150 no están en blanco, y así es como lo haces en Kohana. 736 00:44:15,150 --> 00:44:18,750 Se crea una nueva función llamada "Reglas" 737 00:44:18,750 --> 00:44:20,210 y entonces, básicamente devuelve una matriz asociativa 738 00:44:20,210 --> 00:44:24,230 que define las reglas de validación para este objeto. 739 00:44:24,230 --> 00:44:27,530 Vamos a devolver la matriz, y luego lo que vamos a hacer es 740 00:44:27,530 --> 00:44:32,820 decir "autor", que va a una matriz, 741 00:44:32,820 --> 00:44:37,720 que va a otra matriz llamada "no está vacío." 742 00:44:37,720 --> 00:44:41,480 Y luego voy a decir "cuerpo". 743 00:44:50,980 --> 00:44:54,120 Está bien, y la sintaxis de esta y la estructura de este 744 00:44:54,120 --> 00:44:56,530 puede parecer un poco complicado y un poco complicado. 745 00:44:56,530 --> 00:44:59,330 Si usted lee la documentación, que es bastante sencillo de entender, 746 00:44:59,330 --> 00:45:02,500 Pero, en esencia esto es lo que hay que hacer para especificar 747 00:45:02,500 --> 00:45:04,130 algunas reglas de validación, y hay una gran cantidad de normas diferentes 748 00:45:04,130 --> 00:45:06,810 Kohana que le dará de forma gratuita, al igual que se pueden agregar reglas de decir 749 00:45:06,810 --> 00:45:08,410 debe ser por lo menos de esta longitud. 750 00:45:08,410 --> 00:45:11,800 Tal vez tiene que ser numérico. Tal vez tiene que ser numérico alfa. 751 00:45:11,800 --> 00:45:14,410 Tal vez tiene que ser como máximo de esta longitud, así sucesivamente y así sucesivamente. 752 00:45:14,410 --> 00:45:17,730 Hay un montón de diferentes reglas que Kohana ofrece para usted, 753 00:45:17,730 --> 00:45:19,610 y se puede ir en su página web, mirar la documentación, 754 00:45:19,610 --> 00:45:23,150 y se puede ver todas las diferentes cosas que usted puede hacer. 755 00:45:23,150 --> 00:45:25,650 >> Pero esto es todo lo que tengo que hacer, 756 00:45:25,650 --> 00:45:30,490 y ahora vamos a ver qué pasa 757 00:45:30,490 --> 00:45:34,060 si presento una entrada en blanco. 758 00:45:34,060 --> 00:45:36,960 ¿Qué va a pasar? Oh, no, me da un error. 759 00:45:36,960 --> 00:45:39,440 Recibo una excepción de validación. 760 00:45:39,440 --> 00:45:41,070 Bueno, es bueno. 761 00:45:41,070 --> 00:45:43,200 Me dijo que mi modelo no es válido, 762 00:45:43,200 --> 00:45:45,780 pero yo no quiero mostrar una excepción 763 00:45:45,780 --> 00:45:48,720 a mis usuarios cuando tratan de presentar algo válido, ¿no? 764 00:45:48,720 --> 00:45:51,560 Quiero darles algún tipo de mensaje de error más amigable 765 00:45:51,560 --> 00:45:53,610 cuando algo va mal. 766 00:45:53,610 --> 00:46:01,830 Lo que vamos a hacer es que vamos a 767 00:46:01,830 --> 00:46:04,490 envolver todo en un bucle intento de captura. 768 00:46:04,490 --> 00:46:06,750 En realidad, creo que esto también es algo que no has aprendido todavía 769 00:46:06,750 --> 00:46:10,820 en CS50, porque C, el lenguaje de programación C, 770 00:46:10,820 --> 00:46:14,000 no tiene excepciones, pero casi todos los demás solo idioma 771 00:46:14,000 --> 00:46:16,700 tiene excepciones, así que realmente, realmente brevemente, 772 00:46:16,700 --> 00:46:19,430 una excepción es algo que una pieza de código puede 773 00:46:19,430 --> 00:46:21,430 una excepción cuando algo sale mal, 774 00:46:21,430 --> 00:46:23,410 pero entonces tal vez alguna otra pieza de código más arriba 775 00:46:23,410 --> 00:46:25,810 puede atrapar esta excepción y hacer algo con él. 776 00:46:25,810 --> 00:46:27,710 >> Por ejemplo, en este caso, 777 00:46:27,710 --> 00:46:29,940 el trozo de código que intenta salvar a un modelo, 778 00:46:29,940 --> 00:46:33,170 que valida el modelo, y si dice: "Está bien, este modelo no es válido" 779 00:46:33,170 --> 00:46:36,150 que va a lanzar una excepción, y esto es una especie de equivalente a 780 00:46:36,150 --> 00:46:39,870 en C es posible devolver un -1 o algo por el estilo. 781 00:46:39,870 --> 00:46:42,320 Y luego, para mí, esta función, mi código 782 00:46:42,320 --> 00:46:46,310 en un nivel superior, puedo tratar de atrapar esa excepción 783 00:46:46,310 --> 00:46:49,330 y básicamente dije: "Bueno, si yo cojo la excepción, ¿qué voy a hacer?" 784 00:46:49,330 --> 00:46:51,570 O podría elegir no tomar esa excepción y dejar que alguien más arriba 785 00:46:51,570 --> 00:46:54,400 detectar la excepción, o si nadie lo coge, 786 00:46:54,400 --> 00:46:56,820 entonces todo el programa se bloquea y dice: 787 00:46:56,820 --> 00:46:59,170 "Algo salió mal, y yo no podía soportarlo." 788 00:46:59,170 --> 00:47:04,490 >> Pero lo que hacemos es que se coloca una pieza de código en un bloque try, 789 00:47:04,490 --> 00:47:09,030 y luego también se añade algo llamado un bloque catch, 790 00:47:09,030 --> 00:47:17,300 que es el tipo de código que tratar de capturar las excepciones que se puedan producir. 791 00:47:17,300 --> 00:47:20,430 Y por lo que si cojo esta excepción en particular 792 00:47:20,430 --> 00:47:23,110 o excepción de nulidad, entonces lo que voy a hacer es 793 00:47:23,110 --> 00:47:31,210 Me voy a fijar los errores - Creo que así es como lo hago - 794 00:47:31,210 --> 00:47:35,370 y yo voy a poner los errores a algún objeto. 795 00:47:35,370 --> 00:47:40,920 Y entonces lo que voy a hacer es si golpea esta excepción, 796 00:47:40,920 --> 00:47:43,090 no va a redirigir y, si no redirige, 797 00:47:43,090 --> 00:47:46,160 que va a salir de la si el blog 798 00:47:46,160 --> 00:47:49,920 y golpear este blog / nueva, que se quiero lo que quiero hacer. 799 00:47:49,920 --> 00:47:53,190 Si hay un error, entonces yo quiero volver a la forma 800 00:47:53,190 --> 00:47:55,100 y visualizar esos errores. 801 00:47:55,100 --> 00:48:00,780 Ahora lo que quiero hacer es que quiero pasar en esos errores 802 00:48:00,780 --> 00:48:07,010 a la vista. 803 00:48:07,010 --> 00:48:10,360 Bueno, creo que tengo la vista aquí, 804 00:48:10,360 --> 00:48:14,660 y básicamente quiero mostrar los errores si es que existen. 805 00:48:14,660 --> 00:48:19,740 Antes de escribir el código HTML para eso, voy a realmente rápido 806 00:48:19,740 --> 00:48:21,720 mostrar lo que la estructura de este error se ve como variables, 807 00:48:21,720 --> 00:48:23,080 y esta es una buena práctica en general. 808 00:48:23,080 --> 00:48:25,070 Muchas veces te dan algo a cambio de algún método, 809 00:48:25,070 --> 00:48:27,250 alguna función en el marco de web, 810 00:48:27,250 --> 00:48:29,410 y usted no sabe lo que la variable se parece, 811 00:48:29,410 --> 00:48:31,210 por lo que usted no sabe cómo trabajar con él. 812 00:48:31,210 --> 00:48:37,790 Voy a utilizar un método de impresión r básicamente imprimirlo. 813 00:48:37,790 --> 00:48:41,100 >> Y como se puede ver, se me dice que es una matriz asociativa, 814 00:48:41,100 --> 00:48:44,880 y tiene una clave, autor, puntos de esta cadena, 815 00:48:44,880 --> 00:48:47,050 autor no debe estar vacío, y otra tecla, el cuerpo, 816 00:48:47,050 --> 00:48:49,680 apunta a otra cadena, el cuerpo no debe estar vacío. 817 00:48:49,680 --> 00:48:52,130 Yo soy como, bien, fresco. 818 00:48:52,130 --> 00:48:56,230 Entonces puedo recorrer el array e imprimir cada mensaje. 819 00:48:56,230 --> 00:49:02,150 Es básicamente como un array asociativo con un montón de mensajes. 820 00:49:02,150 --> 00:49:13,500 Lo que voy a hacer es "si los errores" 821 00:49:13,500 --> 00:49:17,140 y yo voy a crear una lista desordenada, 822 00:49:17,140 --> 00:49:20,860 y yo voy a recorrer todos los errores. 823 00:49:33,730 --> 00:49:38,710 Y esto, y ahora voy a tratar de enviar de nuevo, 824 00:49:38,710 --> 00:49:41,200 y vamos a ver lo que tenemos. 825 00:49:41,200 --> 00:49:45,370 Ahora tenemos esta bonita lista de errores, 826 00:49:45,370 --> 00:49:48,630 y esto sigue siendo bastante feo, pero esto, obviamente, se puede formatear para verte bien, 827 00:49:48,630 --> 00:49:51,620 pero la idea básica es sólo en unas pocas líneas de código, 828 00:49:51,620 --> 00:49:53,720 hemos sido capaces de validar nuestro modelo, 829 00:49:53,720 --> 00:49:56,510 asegurarse de que ciertos campos no estaban vacías, 830 00:49:56,510 --> 00:49:59,740 y si algo salió mal, y luego volver algún tipo de mensaje de error 831 00:49:59,740 --> 00:50:01,760 Entonces yo podría presentar de nuevo al usuario. 832 00:50:01,760 --> 00:50:03,910 También puede personalizar su validación 833 00:50:03,910 --> 00:50:07,590 de modo que usted puede tener un mensaje de error 834 00:50:07,590 --> 00:50:09,620 que es más específico para su aplicación o algo por el estilo. 835 00:50:09,620 --> 00:50:14,600 Todo lo que es en general adaptable. 836 00:50:14,600 --> 00:50:17,150 >> Lamentablemente, nos estamos quedando sin tiempo, 837 00:50:17,150 --> 00:50:20,040 así que voy a tener que cortar la sesión de codificación en vivo aquí. 838 00:50:20,040 --> 00:50:22,980 Hay un montón de otras características que quiero demostrar a usted 839 00:50:22,980 --> 00:50:25,650 en este ejemplo. 840 00:50:25,650 --> 00:50:27,620 Por ejemplo, puede agregar plantillas a su sitio, 841 00:50:27,620 --> 00:50:31,110 así que tal vez hay algún tipo de código HTML que desea aplicar 842 00:50:31,110 --> 00:50:35,190 a cada página en su sitio, y en vez de pegar que 843 00:50:35,190 --> 00:50:40,630 en cada archivo de vista único que tienes, lo que obviamente sería una mala práctica, 844 00:50:40,630 --> 00:50:43,020 básicamente se puede definir estas plantillas, 845 00:50:43,020 --> 00:50:46,660 y luego en su controlador digo: "Bueno, estoy usando esta plantilla." 846 00:50:46,660 --> 00:50:50,130 "¿Todos mis opiniones utilizar esta plantilla." 847 00:50:50,130 --> 00:50:52,470 Y la última cosa que quiero demostrar a usted también 848 00:50:52,470 --> 00:50:57,800 que no tenemos tiempo para es cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 y, básicamente, creo que ustedes han visto probablemente en CS50 - 850 00:51:01,430 --> 00:51:03,770 Creo que David Malan probablemente habló de lo que normalmente se puede inyectar 851 00:51:03,770 --> 00:51:08,040 El código JavaScript en - ¿Has hablado de esto? 852 00:51:08,040 --> 00:51:10,220 ¿Quizás? Tal vez no? 853 00:51:10,220 --> 00:51:12,670 >> Sin embargo, una gran cantidad de veces que se puede inyectar código JavaScript malicioso 854 00:51:12,670 --> 00:51:15,630 en base de datos de alguien, y si ellos no escapan que correctamente, 855 00:51:15,630 --> 00:51:18,280 a continuación, cuando se presentan a que los datos de vuelta al usuario, 856 00:51:18,280 --> 00:51:21,310 entonces puede ejecutar algún tipo de código JavaScript aleatorio que no quiere que suceda, 857 00:51:21,310 --> 00:51:23,050 y que iba a demostrar cómo harías que dentro de Kohana. 858 00:51:23,050 --> 00:51:25,380 En realidad es muy, muy fácil. 859 00:51:25,380 --> 00:51:31,920 Yo podría hacerlo ahora mismo en 2 segundos, literalmente. 860 00:51:31,920 --> 00:51:34,560 Todo lo que tienes que hacer es básicamente envuelven estas cosas 861 00:51:34,560 --> 00:51:46,920 en esta cosa llamada entidades HTML. 862 00:51:46,920 --> 00:51:51,180 Y eso va a escapar de forma automática todos los caracteres correctamente 863 00:51:51,180 --> 00:51:54,730 y asegúrese de que usted no consigue este problema. 864 00:51:54,730 --> 00:51:57,220 [Estudiante] ¡Escribieron la primera prueba de forma incorrecta. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Oh, perdón. 866 00:52:01,030 --> 00:52:06,420 >> Bueno, eso es todo lo que tenía que compartir con ustedes hoy. 867 00:52:06,420 --> 00:52:09,930 Estas diapositivas van a ser publicado, pero estos son generalmente 868 00:52:09,930 --> 00:52:13,900 los únicos recursos que deberían realmente necesita para empezar con Kohana. 869 00:52:13,900 --> 00:52:16,770 Usted puede ir a la página web. Tienen una guía del usuario, y también tienen un explorador API. 870 00:52:16,770 --> 00:52:20,630 Podemos explorar todas las diferentes funciones y funciones de ayuda que tienen para ti. 871 00:52:20,630 --> 00:52:22,070 En general, tienen suficiente información en el sitio web 872 00:52:22,070 --> 00:52:25,310 que puede utilizar para empezar y ponerse en marcha con Kohana. 873 00:52:25,310 --> 00:52:30,840 Allí no hay muchos tutoriales, creo, por Kohana, fuera del 874 00:52:30,840 --> 00:52:33,880 lo que tienen en el sitio web aquí, así que esta es probablemente su mejor apuesta. 875 00:52:33,880 --> 00:52:35,600 Pero si quieres ir con el framework web 876 00:52:35,600 --> 00:52:37,120 y no quiero tener que recoger a un nuevo idioma, 877 00:52:37,120 --> 00:52:39,780 y usted quiere algo que es relativamente ligero y tiene una curva de aprendizaje fácil, 878 00:52:39,780 --> 00:52:41,570 Sin duda recomiendo Kohana. 879 00:52:41,570 --> 00:52:44,040 Esa es probablemente la mejor oferta para eso. 880 00:52:44,040 --> 00:52:46,830 Lo curioso, sin embargo, es si estábamos usando Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 podríamos haber replicado lo que acabamos de hacer 882 00:52:48,550 --> 00:52:51,430 y probablemente más en menos de 3 minutos. 883 00:52:51,430 --> 00:52:54,710 No es broma, pero el aprendizaje de Ruby on Rails necesita mucho más tiempo 884 00:52:54,710 --> 00:52:56,780 de lo que se necesitaría para aprender Kohana. 885 00:52:56,780 --> 00:52:58,840 Se trata básicamente de su elección en lo que se quiere optar por aprender, 886 00:52:58,840 --> 00:53:01,260 pero si usted quiere poner en marcha rápidamente, 887 00:53:01,260 --> 00:53:03,870 Kohana es sin duda una muy buena elección. 888 00:53:03,870 --> 00:53:06,730 >> ¿Unas últimas preguntas antes de terminar? Sí. 889 00:53:06,730 --> 00:53:08,020 [Estudiante] ¿Cómo podemos integrar esa 890 00:53:08,020 --> 00:53:13,120 en un marco de CSS como si utilizara cuando estabas dando instrucciones? 891 00:53:13,120 --> 00:53:16,700 La pregunta es ¿cómo podemos integrar eso con un marco de CSS? 892 00:53:16,700 --> 00:53:18,740 Lo que probablemente nos volveríamos a hacer es que probablemente incluirá 893 00:53:18,740 --> 00:53:21,090 una nueva carpeta donde queremos volcar todos nuestros archivos CSS, 894 00:53:21,090 --> 00:53:23,010 y luego también nos sumamos una nueva plantilla. 895 00:53:23,010 --> 00:53:26,090 En la plantilla que habíamos incluimos esos archivos CSS 896 00:53:26,090 --> 00:53:28,410 para asegurarse de que están referenciadas en cada página, 897 00:53:28,410 --> 00:53:32,220 y luego, cuando en realidad se está escribiendo HTML, 898 00:53:32,220 --> 00:53:34,010 que acaba de agregar clases y otras cosas apropiadas, 899 00:53:34,010 --> 00:53:36,100 y, por ejemplo, cuando usted está usando algo como la forma 900 00:53:36,100 --> 00:53:40,710 función auxiliar, puede agregar más parámetros después 901 00:53:40,710 --> 00:53:42,830 para especificar qué clases desea que se adjunta a varias cosas 902 00:53:42,830 --> 00:53:47,820 para que pudieran diseñarlo correctamente, y eso es básicamente cómo va a ir. 903 00:53:47,820 --> 00:53:50,100 >> ¿Alguna otra pregunta? 904 00:53:50,100 --> 00:53:52,090 Impresionante. 905 00:53:52,090 --> 00:53:58,540 Gracias por su tiempo y gracias por venir. 906 00:53:58,540 --> 00:54:05,170 Yo no iba a añadir mucho más, 907 00:54:05,170 --> 00:54:08,560 pero 1 cosa muy rápida es que no tenemos un vínculo 908 00:54:08,560 --> 00:54:12,590 a la forma. 909 00:54:12,590 --> 00:54:14,310 Realmente tonto. 910 00:54:14,310 --> 00:54:20,110 Vamos a añadir un - en realidad en la vista, blog, índice, 911 00:54:20,110 --> 00:54:23,890 vamos muy rápido añadir un enlace que va a la nueva página, 912 00:54:23,890 --> 00:54:26,770 la página donde podemos insertar un nuevo puesto. 913 00:54:26,770 --> 00:54:29,950 Vamos a hacer esto. 914 00:54:29,950 --> 00:54:34,020 Lo bueno es que hay todo este grupo de funciones de ayuda HTML 915 00:54:34,020 --> 00:54:37,090 que hacer cosas diferentes para usted, por lo que ya se vio las entidades 916 00:54:37,090 --> 00:54:41,980 funcionar aquí, pero también tienen una función llamada "ancla" 917 00:54:41,980 --> 00:54:45,400 el que puede escribir en el blog / nuevo 918 00:54:45,400 --> 00:54:49,550 y decir: "Publicar un nuevo blog." 919 00:54:49,550 --> 00:54:51,850 Y sería crear ese vínculo para ti, 920 00:54:51,850 --> 00:54:54,120 y esto parece muy trivial que hacer, pero esto es bueno, 921 00:54:54,120 --> 00:54:58,720 porque supones que está trasladando su sitio web a partir del 1 de dominio a otro. 922 00:54:58,720 --> 00:55:01,390 Y si usted acaba de escribir las direcciones URL a ti mismo, 923 00:55:01,390 --> 00:55:04,350 entonces usted tendría que cambiar todas las direcciones URL. 924 00:55:04,350 --> 00:55:06,850 O tal vez usted se mudó desde 1 subcarpeta a otra subcarpeta. 925 00:55:06,850 --> 00:55:08,790 Usted tendría que cambiar todas las direcciones URL a ti mismo, 926 00:55:08,790 --> 00:55:12,180 y eso no es divertido. 927 00:55:12,180 --> 00:55:14,510 Puede usar esta ancla aquí, 928 00:55:14,510 --> 00:55:18,950 y usted puede cambiar el dominio o el prefijo subcarpeta 929 00:55:18,950 --> 00:55:20,640 en el archivo de configuración una vez, 930 00:55:20,640 --> 00:55:22,980 y luego se aplica que en todas partes, y esto es, de nuevo, 931 00:55:22,980 --> 00:55:26,930 un gran ejemplo de no repetir a ti mismo, el secado de su código de salida. 932 00:55:26,930 --> 00:55:30,370 Dondequiera que estás repitiendo, tratar de extraer en una especie de archivo de configuración 933 00:55:30,370 --> 00:55:34,160 o para una función diferente y tienen que manejar eso para usted. 934 00:55:34,160 --> 00:55:42,930 >> Y la última cosa que yo quería mostrar era 935 00:55:42,930 --> 00:55:50,250 Supongamos que estamos de vuelta en este post, y yo había compuesto algunos realmente largo ensayo, 936 00:55:50,250 --> 00:55:52,670 pero me olvidé de incluir mi autor. 937 00:55:52,670 --> 00:55:55,210 Ahora, cuando hago clic en "Enviar mensaje" 938 00:55:55,210 --> 00:55:57,270 Acabo de perder todo. 939 00:55:57,270 --> 00:56:00,000 ¡No! Muy triste. 940 00:56:00,000 --> 00:56:03,870 Así que, ¿cómo lidiar con eso? 941 00:56:03,870 --> 00:56:06,070 Esto es lo que hacemos. 942 00:56:06,070 --> 00:56:09,340 Lo que hacemos es aquí por estas funciones de entrada y área de texto, 943 00:56:09,340 --> 00:56:12,700 Si se incluye un segundo parámetro, entonces el valor de ese segundo parámetro 944 00:56:12,700 --> 00:56:16,620 va a ser lo que el campo va a ser inicialmente poblada. 945 00:56:16,620 --> 00:56:23,570 Lo que podríamos hacer es en nuestro controlador blog, 946 00:56:23,570 --> 00:56:25,360 podríamos enlazar otra variable. 947 00:56:25,360 --> 00:56:27,050 Llámelo "valores" tal vez. 948 00:56:27,050 --> 00:56:30,620 Y acontecerá en la matriz post, literalmente. 949 00:56:30,620 --> 00:56:32,620 Eso significa que si la validación no, 950 00:56:32,620 --> 00:56:36,570 pasar a mí la matriz post que he presentado desde la última solicitud, 951 00:56:36,570 --> 00:56:38,420 y de esa manera puede utilizar los valores de mi última presentación 952 00:56:38,420 --> 00:56:44,540 para repoblar los campos. 953 00:56:44,540 --> 00:56:49,600 Ahora puedo hacer algo como valores de autor 954 00:56:49,600 --> 00:56:55,180 y valores del cuerpo, y de esa manera ahora si hago algunas cosas al azar 955 00:56:55,180 --> 00:57:01,490 y haga clic en "Enviar Mensaje", entonces se queda allí. 956 00:57:01,490 --> 00:57:03,830 Pero nos vamos a quedar en otro problema. 957 00:57:03,830 --> 00:57:07,670 Eso funciona, pero si voy a la página de la primera vez, 958 00:57:07,670 --> 00:57:09,720 que va a chocar, y eso es porque la primera vez 959 00:57:09,720 --> 00:57:13,730 nos vamos a la página, esta variable mensaje no se ha definido todavía. 960 00:57:13,730 --> 00:57:18,170 Es nulo. No existe. 961 00:57:18,170 --> 00:57:21,630 >> Y lo que queremos decir es que si existe esta clave, 962 00:57:21,630 --> 00:57:27,750 a continuación, devolver el valor de esta matriz, 963 00:57:27,750 --> 00:57:30,450 pero si no existe la clave, a continuación, devolver una cadena en blanco. 964 00:57:30,450 --> 00:57:32,150 Esa es la funcionalidad que queremos aquí. 965 00:57:32,150 --> 00:57:34,690 Queremos comprobar si la clave existe antes de intentar acceder a la matriz, 966 00:57:34,690 --> 00:57:36,580 y afortunadamente, 967 00:57:36,580 --> 00:57:38,570 Kohana también nos da una función auxiliar para eso. 968 00:57:38,570 --> 00:57:41,040 Tienen todo este conjunto de funciones 969 00:57:41,040 --> 00:57:43,660 bajo el nombre de ARR, acrónimo de matriz, 970 00:57:43,660 --> 00:57:45,800 y tienen 1 función llamada "conseguir" 971 00:57:45,800 --> 00:57:48,690 y se puede pasar de la matriz, 972 00:57:48,690 --> 00:57:50,740 y usted puede pasar el nombre de la clave. 973 00:57:50,740 --> 00:57:54,330 Entonces, básicamente, lo que hará es que se trate de obtener esa clave, 974 00:57:54,330 --> 00:57:56,470 pero si esa clave no existe en la matriz, 975 00:57:56,470 --> 00:58:00,900 luego volverá blanco, o también se puede especificar un valor predeterminado, creo yo, 976 00:58:00,900 --> 00:58:03,500 lo cual es bueno. 977 00:58:09,740 --> 00:58:13,150 Ahora bien, si hacemos lo mismo otra vez, 978 00:58:13,150 --> 00:58:15,970 luego ves ahora funciona la primera vez, 979 00:58:15,970 --> 00:58:18,080 y de nuevo, si escribimos en algunas cosas al azar 980 00:58:18,080 --> 00:58:23,210 y tratar de presentar, a continuación, se queda allí. 981 00:58:23,210 --> 00:58:31,640 >> Y supongo que también te puedo mostrar cómo añadir una plantilla muy rápido. 982 00:58:31,640 --> 00:58:36,140 Lo que podemos hacer en primer lugar es que podemos añadir una nueva vista llamada "template.php" 983 00:58:36,140 --> 00:58:38,890 dentro de la carpeta Views, 984 00:58:38,890 --> 00:58:44,730 y lo que voy a hacer es que voy a imprimir algo que se llama "contenido" 985 00:58:44,730 --> 00:58:49,130 que va a ser mi página principal. 986 00:58:49,130 --> 00:58:51,380 Y tal vez en el mismo fondo que voy a añadir, por ejemplo, 987 00:58:51,380 --> 00:58:53,340 los derechos de autor. 988 00:58:53,340 --> 00:58:56,150 [Pregunta estudiante inaudible] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Tal vez esta es una plantilla muy básica que quiero usar. 990 00:58:58,050 --> 00:59:02,840 Quiero tener una carpeta con mis derechos de autor en cada página, 991 00:59:02,840 --> 00:59:05,560 y ahora lo que voy a hacer dentro de mi controlador 992 00:59:05,560 --> 00:59:07,740 es que ahora en lugar de decir, "se extiende Controller" 993 00:59:07,740 --> 00:59:11,870 Voy a decir, "se extiende Controller_Template" 994 00:59:11,870 --> 00:59:15,890 y ahora en vez de decir, "cuerpo de la respuesta es igual a este punto de vista," 995 00:59:15,890 --> 00:59:24,110 Voy a decir, "este contenido de la plantilla es -" 996 00:59:24,110 --> 00:59:27,690 y creo - Cómo pongo un signo igual? 997 00:59:27,690 --> 00:59:32,710 Me olvide. Sí, eso pensé. 998 00:59:32,710 --> 00:59:37,710 Y ahora me puse esa variable el contenido sea igual a la vista. 999 00:59:37,710 --> 00:59:40,960 Yo puedo hacer lo mismo aquí. 1000 00:59:49,620 --> 00:59:57,170 Y ahora si me refresque, se puede ver ahora este copyright se añade allí, 1001 00:59:57,170 --> 01:00:00,350 y acaba de hacer un post al azar, 1002 01:00:00,350 --> 01:00:06,760 y luego, de nuevo, usted debe ver que el derecho de autor está en la parte inferior de la página. 1003 01:00:06,760 --> 01:00:10,730 >> Gran. Eso es todo lo que quería mostrarles. 1004 01:00:10,730 --> 01:00:14,970 [Aplausos] 1005 01:00:14,970 --> 01:00:18,950 ¿Alguna pregunta? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]