1 00:00:00,000 --> 00:00:02,538 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:02,538 --> 00:00:10,800 3 00:00:10,800 --> 00:00:12,390 >> ERIC Ouyang: Hey, todo el mundo. 4 00:00:12,390 --> 00:00:13,580 Bienvenido. 5 00:00:13,580 --> 00:00:16,860 Se trata del edificio dinámico Aplicaciones Web con Laravel. 6 00:00:16,860 --> 00:00:18,290 Mi nombre es Eric Ouyang. 7 00:00:18,290 --> 00:00:23,860 Soy un estudiante de segundo año estudiando ciencias sociales con una secundaria en ciencias de la computación, 8 00:00:23,860 --> 00:00:27,290 y vivo en Adams Casa aquí en Harvard. 9 00:00:27,290 --> 00:00:33,340 >> Así Laravel, en su forma más básica, es un marco de aplicación web MVC. 10 00:00:33,340 --> 00:00:38,265 Así que te guste lo que ustedes tienen estado haciendo con CS50 Finanzas, 11 00:00:38,265 --> 00:00:42,480 Laravel es un marco que permite que le permite construir aplicaciones web dinámicas. 12 00:00:42,480 --> 00:00:47,710 Así que usted puede pensar en él en algunos sentidos como una extensión del tipo de cosas 13 00:00:47,710 --> 00:00:50,470 que has estado haciendo en CS50 Finanzas, sino un sistema que es 14 00:00:50,470 --> 00:00:55,890 mucho más robusto, mucho más elegante, en algunos sentidos, 15 00:00:55,890 --> 00:00:57,870 y proporciona una gran cantidad de funcionalidad para usted 16 00:00:57,870 --> 00:01:03,060 para construir bastante complejo aplicaciones web. 17 00:01:03,060 --> 00:01:05,010 Así que vamos a ir a través de algunos de las principales características, 18 00:01:05,010 --> 00:01:09,550 y luego vamos a bucear en un ejemplo de construcción de un blog 19 00:01:09,550 --> 00:01:12,500 aplicación con Laravel. 20 00:01:12,500 --> 00:01:16,700 >> Así que una de las primeras cosas que lo diferencia de tipo MVC de trabajo 21 00:01:16,700 --> 00:01:22,100 que usted ha estado haciendo con CS50 es que incluye un motor de ORM. 22 00:01:22,100 --> 00:01:27,410 Así ORM significa objeto mapeo relacional. 23 00:01:27,410 --> 00:01:31,080 Así que esto le permite construir una capa de abstracción 24 00:01:31,080 --> 00:01:35,230 entre la base de datos y sus controladores. 25 00:01:35,230 --> 00:01:39,150 Así que a diferencia de CS50 Finanzas donde directamente realizar consultas, 26 00:01:39,150 --> 00:01:44,790 la capa ORM le permite abstracta que de distancia y crear 27 00:01:44,790 --> 00:01:48,085 modelos que son más poderosos que puede directamente con consultas SQL. 28 00:01:48,085 --> 00:01:50,590 29 00:01:50,590 --> 00:01:53,510 >> Otra cosa que es realmente es útil plantillas heredables. 30 00:01:53,510 --> 00:01:58,990 Así que usted notará en CS50 Finanzas, terminas reescribir un montón de cosas, 31 00:01:58,990 --> 00:02:03,150 donde coloca usted podría potencialmente reutilizar las cosas, no eres capaz de hacerlo. 32 00:02:03,150 --> 00:02:08,539 Así que aquí en Laravel, puede utilizar lo que hay conocido como el motor de plantillas cuchilla 33 00:02:08,539 --> 00:02:10,530 para crear un diseño maestro. 34 00:02:10,530 --> 00:02:15,840 Y a partir de ahí, se puede heredar de modo que los sub-plantillas puede en realidad 35 00:02:15,840 --> 00:02:21,210 incluir elementos dentro de que mayor plantilla base. 36 00:02:21,210 --> 00:02:21,810 >> Migración. 37 00:02:21,810 --> 00:02:29,010 Así que esto es una serie de características bastante estándar en la mayoría de los entornos de aplicaciones web modernas. 38 00:02:29,010 --> 00:02:32,710 Así que esto le permite representar cambios en el esquema de base de datos en código. 39 00:02:32,710 --> 00:02:39,200 Así que sin ir a decir, phpMyAdmin, en realidad se puede crear estas migraciones 40 00:02:39,200 --> 00:02:44,660 donde Representas a la base de datos esquema de cambios en el código directamente. 41 00:02:44,660 --> 00:02:48,070 Y esto le permite a-- especialmente si tiene varias personas que trabajan 42 00:02:48,070 --> 00:02:52,650 en el mismo application-- web realizar un seguimiento de estos cambios, 43 00:02:52,650 --> 00:02:55,380 decir en GitHub, o algún otro repositorio. 44 00:02:55,380 --> 00:03:00,880 >> Así que esto es realmente útil y mitiga la necesidad 45 00:03:00,880 --> 00:03:04,580 a, por ejemplo, pasar alrededor de un montón de SQL vertederos. 46 00:03:04,580 --> 00:03:07,140 Y, por último, Composer es algo muy, muy útil 47 00:03:07,140 --> 00:03:09,840 que le permite utilizar otro código de la gente para hacer cosas impresionantes. 48 00:03:09,840 --> 00:03:14,020 Así Laravel del estructurada como varios paquetes compositor. 49 00:03:14,020 --> 00:03:17,870 Así que dices si quería llevar en un paquete de autenticación 50 00:03:17,870 --> 00:03:23,440 o si usted quiere traer un poco de tipo de script generador o un administrador 51 00:03:23,440 --> 00:03:26,910 interfaz, puede conectar y jugar esos componentes con Composer. 52 00:03:26,910 --> 00:03:30,470 53 00:03:30,470 --> 00:03:31,570 >> Así que vamos a empezar. 54 00:03:31,570 --> 00:03:35,185 Cualquier pregunta de usted chicos antes de empezar? 55 00:03:35,185 --> 00:03:36,500 No hay preguntas? 56 00:03:36,500 --> 00:03:37,490 Fresco. 57 00:03:37,490 --> 00:03:39,990 Así que el primer paso es instalar Compositor. 58 00:03:39,990 --> 00:03:43,590 Así Composer le permite gestionar estas dependencias, 59 00:03:43,590 --> 00:03:47,770 si es el marco Laravel o alguna otra extensión terceros. 60 00:03:47,770 --> 00:03:50,400 El primer comando permite descargar Compositor, 61 00:03:50,400 --> 00:03:55,890 y el segundo comando que permite a moverlo a la carpeta bin locales 62 00:03:55,890 --> 00:04:01,340 por lo que puede ejecutar Compositor directamente a través del terminal. 63 00:04:01,340 --> 00:04:05,405 >> Después de eso, seguir adelante y crear un nuevo proyecto Laravel. 64 00:04:05,405 --> 00:04:07,280 Estamos realmente va a utilizar un código de ejemplo 65 00:04:07,280 --> 00:04:10,760 que he juntado para crear este blog. 66 00:04:10,760 --> 00:04:14,420 Pero si vas a empezar desde cero, sería utilizar este comando 67 00:04:14,420 --> 00:04:18,160 hasta aquí, compositor crear proyectos, Laravel slash Laravel, y luego 68 00:04:18,160 --> 00:04:19,940 el nombre de su proyecto. 69 00:04:19,940 --> 00:04:22,275 Y eso va a incluir todo el código de distribución 70 00:04:22,275 --> 00:04:23,733 para iniciar un nuevo proyecto Laravel. 71 00:04:23,733 --> 00:04:28,870 Así que para los proyectos finales CS50, podrás Probablemente quiera utilizar ese comando. 72 00:04:28,870 --> 00:04:31,210 >> Pero vamos a empezar con esto. 73 00:04:31,210 --> 00:04:34,630 Así que una vez que has hecho que, vas a conseguir 74 00:04:34,630 --> 00:04:40,190 un número bastante extensa de archivos en blog50. 75 00:04:40,190 --> 00:04:43,840 Así que vamos a ir a través de algunos de estos componentes. 76 00:04:43,840 --> 00:04:49,060 Se dará cuenta en esta ruta directorio, hay una carpeta de aplicación. 77 00:04:49,060 --> 00:04:52,960 Dentro de la carpeta de aplicaciones, hay un par de carpetas útiles. 78 00:04:52,960 --> 00:04:56,330 Es de destacar que empezar con es esta carpeta config. 79 00:04:56,330 --> 00:04:59,210 Así que este establece cómo su aplicación web es 80 00:04:59,210 --> 00:05:04,350 ir a, por ejemplo, autentificar las personas o cosas en efectivo o se conectan a la base de datos. 81 00:05:04,350 --> 00:05:06,400 >> Y lo que es realmente útil es que Laravel 82 00:05:06,400 --> 00:05:09,130 le permite configurar diferentes entornos de desarrollo. 83 00:05:09,130 --> 00:05:12,090 Así que lo que hemos hecho aquí es que si vamos debajo de la carpeta local, 84 00:05:12,090 --> 00:05:14,720 hay un archivo database.php. 85 00:05:14,720 --> 00:05:18,320 Y te darás cuenta de que estamos aquí configurar una conexión MySQL que 86 00:05:18,320 --> 00:05:22,230 permite que las personas se conecten al servidor MySQL que es 87 00:05:22,230 --> 00:05:24,310 directamente en el aparato CS50. 88 00:05:24,310 --> 00:05:26,980 Y estamos conectando a una base de datos que configuro llamé Blog50. 89 00:05:26,980 --> 00:05:31,390 90 00:05:31,390 --> 00:05:37,085 >> Así que vamos a seguir adelante y realmente ejecutar la versión de trabajo de este, 91 00:05:37,085 --> 00:05:39,710 sólo para tener una idea de lo que el aplicación que estamos construyendo 92 00:05:39,710 --> 00:05:41,390 parece. 93 00:05:41,390 --> 00:05:46,150 Así que tengo una copia de este Blog50 completado. 94 00:05:46,150 --> 00:05:51,910 Así que en realidad Laravel ha construido en un servidor 95 00:05:51,910 --> 00:05:53,910 que se puede ejecutar directamente desde la línea de comandos. 96 00:05:53,910 --> 00:05:56,900 Así que este es similar a la PSet antes cuando realmente 97 00:05:56,900 --> 00:06:00,580 construir su propio servidor en C. Así que han construido uno en la 98 00:06:00,580 --> 00:06:04,010 que puede ejecutar sus aplicaciones Laravel directamente desde la línea de comandos. 99 00:06:04,010 --> 00:06:11,650 >> Así que si lo hacemos php artesanal servir, esta pondrá en marcha un servidor de desarrollo 100 00:06:11,650 --> 00:06:13,880 en el puerto 8000. 101 00:06:13,880 --> 00:06:18,250 Así que si vamos al host local 8000, te darás cuenta de que, hey. 102 00:06:18,250 --> 00:06:20,800 Tenemos nuestro blog en marcha y funcionando. 103 00:06:20,800 --> 00:06:25,090 Así que aquí está generando Laravel la primera página de nuestro blog. 104 00:06:25,090 --> 00:06:26,350 Aplicación muy simple. 105 00:06:26,350 --> 00:06:28,610 Pero hay un par características realmente ingeniosas 106 00:06:28,610 --> 00:06:31,346 que proporciona debajo de la campana. 107 00:06:31,346 --> 00:06:33,680 >> Así que de la aplicación de blog sencillo. 108 00:06:33,680 --> 00:06:36,430 Si quisiéramos crear un puesto, podemos hacer clic en ese botón. 109 00:06:36,430 --> 00:06:40,470 Podemos decir: "Hey, todo el mundo. 110 00:06:40,470 --> 00:06:44,530 Este es un muy divertido seminario, "por ejemplo. 111 00:06:44,530 --> 00:06:46,560 Y escribir algo aquí. 112 00:06:46,560 --> 00:06:48,180 Texto aquí. 113 00:06:48,180 --> 00:06:51,327 Si nos clic en Enviar, usted cuenta de que nuestro nuevo blog 114 00:06:51,327 --> 00:06:53,410 puesto se ha añadido a la portada del blog. 115 00:06:53,410 --> 00:06:56,532 116 00:06:56,532 --> 00:06:59,970 Si volvemos aquí, te darás cuenta de que ha habido algunos comentarios ya 117 00:06:59,970 --> 00:07:01,160 en el blog. 118 00:07:01,160 --> 00:07:03,630 Así que si nos desplazamos hacia abajo, podrás observe que Jonathan Tan dice 119 00:07:03,630 --> 00:07:08,020 que estaba muy intrigado por este post. 120 00:07:08,020 --> 00:07:11,570 >> Así que vamos a entrar en cómo objeto mapeo relacional permite 121 00:07:11,570 --> 00:07:16,668 que hagas estas relaciones en una manera bastante transparente también. 122 00:07:16,668 --> 00:07:17,660 Fresco. 123 00:07:17,660 --> 00:07:20,290 Una pregunta sobre la funcionalidad de lo que vamos a construir? 124 00:07:20,290 --> 00:07:22,850 125 00:07:22,850 --> 00:07:23,840 Fresco. 126 00:07:23,840 --> 00:07:28,170 Así que empecemos con realidad la creación de las tablas de la base. 127 00:07:28,170 --> 00:07:33,190 >> Así que recordar que en CS50 Finanzas, que armar una mesa para los usuarios 128 00:07:33,190 --> 00:07:37,100 así como para la acciones en su cartera. 129 00:07:37,100 --> 00:07:41,040 Así como hemos mencionado anteriormente, lo que usamos en Laravel 130 00:07:41,040 --> 00:07:43,090 es algo que se conoce como las migraciones. 131 00:07:43,090 --> 00:07:48,570 Así que si nos remontamos a la código de distribución aquí, 132 00:07:48,570 --> 00:07:51,790 el primer comando que es útil que Laravel le proporciona 133 00:07:51,790 --> 00:07:54,240 Es este comando migrate. 134 00:07:54,240 --> 00:07:59,220 Así que podemos hacer migrar artesanal php: hacer. 135 00:07:59,220 --> 00:08:01,760 Así que esto nos permite crear una migración. 136 00:08:01,760 --> 00:08:03,710 >> Y luego vamos a querer para crear una migración 137 00:08:03,710 --> 00:08:07,050 llamado create_posts_table, que va 138 00:08:07,050 --> 00:08:11,521 estar donde vamos a ser almacenar nuestros posts. 139 00:08:11,521 --> 00:08:14,690 Y se dará cuenta aquí que se ejecute a través de algún código que realmente 140 00:08:14,690 --> 00:08:17,580 genera un archivo con una marca de tiempo en él. 141 00:08:17,580 --> 00:08:22,260 Así que si vamos y miramos a base de datos, notamos bajo Migraciones 142 00:08:22,260 --> 00:08:24,830 que ha creado un archivo en blanco para nosotros, que 143 00:08:24,830 --> 00:08:30,100 tiene código repetitivo con el nombre que hemos especificado, crear puestos de la tabla. 144 00:08:30,100 --> 00:08:31,670 >> Y tiene dos funciones en el mismo. 145 00:08:31,670 --> 00:08:40,539 Up es lo que queremos ejecutar cuando el la migración se aplica a la base de datos. 146 00:08:40,539 --> 00:08:46,380 Y abajo es lo que vamos a hacer cuando queremos revertir una migración. 147 00:08:46,380 --> 00:08:49,890 Así que aquí vamos a empezar a cabo con la escritura de esta migración. 148 00:08:49,890 --> 00:08:55,480 Así que hay una clase útil en Laravel llamado esquema. 149 00:08:55,480 --> 00:08:57,910 >> Así que vamos a correr esquema :: crear. 150 00:08:57,910 --> 00:09:01,080 Y vamos a crear una tabla llamada puestos. 151 00:09:01,080 --> 00:09:05,980 Y aquí aplicamos esta utilizando una función. 152 00:09:05,980 --> 00:09:11,010 Y dentro de aquí, vamos a realidad especificar el contenido de nuestra mesa. 153 00:09:11,010 --> 00:09:14,860 Vamos a crear un documento de identidad, que es de incremento automático. 154 00:09:14,860 --> 00:09:19,850 155 00:09:19,850 --> 00:09:24,350 >> Además, vamos para crear un campo que 156 00:09:24,350 --> 00:09:27,060 representa el título de nuestro blog. 157 00:09:27,060 --> 00:09:29,880 158 00:09:29,880 --> 00:09:36,950 También vamos a crear un campo para almacenar el texto de nuestra entrada en el blog. 159 00:09:36,950 --> 00:09:40,600 Y, por último, vamos para guardar algunas marcas de tiempo 160 00:09:40,600 --> 00:09:44,690 para la que se creó nuestro post y cuando se ha actualizado. 161 00:09:44,690 --> 00:09:46,240 Y para abajo, es bastante simple. 162 00:09:46,240 --> 00:09:53,974 Todo lo que queremos hacer es caída la tabla que hemos creado. 163 00:09:53,974 --> 00:09:54,930 >> Grande. 164 00:09:54,930 --> 00:09:55,850 ¿Alguna pregunta? 165 00:09:55,850 --> 00:09:59,730 166 00:09:59,730 --> 00:10:07,110 Así que ahora si vamos por delante y- realidad, anfitrión local, 167 00:10:07,110 --> 00:10:09,640 déjame borrar lo que teníamos antes. 168 00:10:09,640 --> 00:10:14,330 169 00:10:14,330 --> 00:10:15,190 Ir a las bases de datos. 170 00:10:15,190 --> 00:10:17,640 Voy a borrar lo que teníamos antes. 171 00:10:17,640 --> 00:10:22,870 Deja esto y crear una nueva base de datos Blog50. 172 00:10:22,870 --> 00:10:24,930 Así que ahora lo que el mágico parte es aquí que 173 00:10:24,930 --> 00:10:28,760 puede aplicar directamente estas migraciones a la base de datos mediante la línea de comandos 174 00:10:28,760 --> 00:10:29,290 herramienta. 175 00:10:29,290 --> 00:10:35,100 Así que si lo hacemos migran php artesano, te darás cuenta de que, hey. 176 00:10:35,100 --> 00:10:38,320 Se crea la tabla de migración, que vamos a echar un vistazo a un poco, 177 00:10:38,320 --> 00:10:40,540 y se aplica esta primera migración. 178 00:10:40,540 --> 00:10:43,860 179 00:10:43,860 --> 00:10:48,920 >> Así que miramos Blog50, te darás cuenta que ha creado dos mesas para nosotros. 180 00:10:48,920 --> 00:10:50,300 En primer lugar es esta tabla migraciones. 181 00:10:50,300 --> 00:10:54,130 Así que si navegamos esto, te darás cuenta de que esta tabla es bastante sencillo. 182 00:10:54,130 --> 00:10:55,490 Simplemente dice que, hey. 183 00:10:55,490 --> 00:10:58,960 Hemos aplicado esta migración. 184 00:10:58,960 --> 00:11:01,470 Vamos atrás y mirar en los puestos. 185 00:11:01,470 --> 00:11:05,720 Se dará cuenta de que la estructura es exactamente lo que habíamos pedido ella. 186 00:11:05,720 --> 00:11:07,350 Contamos con un ID de incremento automático. 187 00:11:07,350 --> 00:11:10,450 Tenemos una cadena para almacenar el título, y un campo de texto 188 00:11:10,450 --> 00:11:11,450 para almacenar el contenido. 189 00:11:11,450 --> 00:11:14,040 190 00:11:14,040 --> 00:11:14,706 Grande. 191 00:11:14,706 --> 00:11:15,560 Fresco. 192 00:11:15,560 --> 00:11:21,626 ¿Una pregunta sobre las migraciones trabajo, ¿cómo podemos aplicarlos? 193 00:11:21,626 --> 00:11:22,126 ¿No? 194 00:11:22,126 --> 00:11:23,600 Fresco. 195 00:11:23,600 --> 00:11:26,630 Así que ahora vamos a seguir adelante y en realidad crear el modelo. 196 00:11:26,630 --> 00:11:33,100 Así que queremos crear un modelo de mensajes que almacena una abstracción de la base de datos. 197 00:11:33,100 --> 00:11:41,040 Así que en lugar de hacer consultas MySQL directamente, vamos a crear. 198 00:11:41,040 --> 00:11:45,840 Así que tenemos que crear un carpeta en aquí llamados modelos. 199 00:11:45,840 --> 00:11:48,905 Y aquí dentro, vamos a crear un archivo llamado post.php. 200 00:11:48,905 --> 00:11:52,280 201 00:11:52,280 --> 00:11:54,550 >> Dentro de este archivo PHP, vamos a crear 202 00:11:54,550 --> 00:12:00,590 un poste de la clase que se extiende elocuente. 203 00:12:00,590 --> 00:12:08,950 Elocuente es el nombre de la ORM motor que Laravel ofrece. 204 00:12:08,950 --> 00:12:12,799 Y aquí, podríamos esperar que que realmente necesita para escribir algo de código. 205 00:12:12,799 --> 00:12:14,840 Vamos a escribir algunos funciones auxiliares posteriores. 206 00:12:14,840 --> 00:12:19,420 Pero fuera de la caja, esto ya lo hará Reconocer lo que está en la base de datos 207 00:12:19,420 --> 00:12:24,770 y podemos acceder, por ejemplo, el texto de nuestra entrada en el blog o en el título, 208 00:12:24,770 --> 00:12:29,230 y crear cosas directamente con casi ningún código en absoluto. 209 00:12:29,230 --> 00:12:31,110 >> Así que ese es uno de los componentes mágicos. 210 00:12:31,110 --> 00:12:34,980 Y el viento una vez que esta clase está más en toda regla, 211 00:12:34,980 --> 00:12:40,480 vamos a incluir información sobre lo que que está relacionado con, por lo que los comentarios. 212 00:12:40,480 --> 00:12:42,310 También crear una función para que podamos realmente 213 00:12:42,310 --> 00:12:46,340 obtener directamente la URL de una página blog. 214 00:12:46,340 --> 00:12:46,840 Fresco. 215 00:12:46,840 --> 00:12:47,881 ¿Una pregunta sobre eso? 216 00:12:47,881 --> 00:12:51,140 217 00:12:51,140 --> 00:12:51,832 No. 218 00:12:51,832 --> 00:12:54,100 Fresco. 219 00:12:54,100 --> 00:12:57,860 >> Así que ahora, una vez que tenemos nuestro modelo, que desee crear un controlador que es 220 00:12:57,860 --> 00:13:02,340 capaz de interactuar con estos modelos, y, posteriormente, la base de datos. 221 00:13:02,340 --> 00:13:05,540 Así que si echamos un vistazo a BlogController, podrás 222 00:13:05,540 --> 00:13:08,490 observe que no hay mucho aquí en este momento. 223 00:13:08,490 --> 00:13:13,220 Todo lo que hay es una función de índice que genera la página principal, 224 00:13:13,220 --> 00:13:18,220 pero sin nada allí para mostrar todavía. 225 00:13:18,220 --> 00:13:20,560 >> Así que la primera función que vamos a crear 226 00:13:20,560 --> 00:13:25,790 es aquella que nos permite para crear una entrada en el blog. 227 00:13:25,790 --> 00:13:30,540 Así que vamos a declarar una nueva función llamada newPost. 228 00:13:30,540 --> 00:13:36,430 Y aquí dentro, simplemente, vamos para configurar el tamaño de esta página 229 00:13:36,430 --> 00:13:41,850 ser un render versión, si usted recuerda de CS50, 230 00:13:41,850 --> 00:13:48,020 de esta plantilla llamada blog.new, que vamos a crear en un poco. 231 00:13:48,020 --> 00:13:53,170 >> Se dará cuenta de que aquí en la línea seis que especificamos esta variable, el diseño. 232 00:13:53,170 --> 00:13:55,820 Y si echamos un vistazo en la carpeta Vistas, 233 00:13:55,820 --> 00:14:01,640 hay una carpeta Layouts, que incluye un archivo HTML muy básico. 234 00:14:01,640 --> 00:14:04,680 Y, por nota, te darás cuenta que tenemos este contenedor 235 00:14:04,680 --> 00:14:06,800 aquí que produce contenido. 236 00:14:06,800 --> 00:14:09,460 Así que dentro de nuestra plantilla lo que vamos a hacer 237 00:14:09,460 --> 00:14:16,180 es crear lo que va a ser sustituido directamente dentro de este diseño. 238 00:14:16,180 --> 00:14:20,060 >> Entonces dijimos que queremos hacer una plantilla llamada blog.new. 239 00:14:20,060 --> 00:14:23,790 Pero dentro de Blog, hay aún no esta nueva plantilla. 240 00:14:23,790 --> 00:14:26,910 Así que vamos a crear un archivo llamado new.blade.php. 241 00:14:26,910 --> 00:14:29,860 Esto le dice que Laravel este archivo PHP debe 242 00:14:29,860 --> 00:14:31,720 ser prestados con la motor de la plantilla de la hoja. 243 00:14:31,720 --> 00:14:39,510 244 00:14:39,510 --> 00:14:42,630 Así que esto es bastante archivo sencillo. 245 00:14:42,630 --> 00:14:46,690 Va a ser la forma por la cual en realidad nos sumamos en un blog. 246 00:14:46,690 --> 00:14:49,220 >> Así que la magia aquí desde el la herencia es que, hey. 247 00:14:49,220 --> 00:14:52,950 Queremos precisar que la sección, la sección de contenido 248 00:14:52,950 --> 00:14:56,640 aquí, que queda delimitado porsection ystop. 249 00:14:56,640 --> 00:15:02,260 Así que lo que está en entre aquí va a ser sustituido en el diseño maestro. 250 00:15:02,260 --> 00:15:07,000 Y aquí lo que queremos hacer es muy simple crear un nuevo archivo HTML. 251 00:15:07,000 --> 00:15:08,690 Vamos a agregar un título rápido. 252 00:15:08,690 --> 00:15:09,600 Agregar una entrada de blog. 253 00:15:09,600 --> 00:15:12,110 254 00:15:12,110 --> 00:15:15,390 Y dentro de ella, estamos va a crear un formulario. 255 00:15:15,390 --> 00:15:19,197 >> Esta forma va a tener una acción. 256 00:15:19,197 --> 00:15:21,780 Y esto va a ser algo que sustituimos en adelante, 257 00:15:21,780 --> 00:15:24,200 y vamos a ver cómo enrutamiento encaja en aquí. 258 00:15:24,200 --> 00:15:33,600 Pero sólo vamos a definir por el momento que este va a una URL con la ruta 259 00:15:33,600 --> 00:15:34,860 desde createPost. 260 00:15:34,860 --> 00:15:38,200 261 00:15:38,200 --> 00:15:40,320 Y entonces esto va tener método POST. 262 00:15:40,320 --> 00:15:43,940 263 00:15:43,940 --> 00:15:47,590 Dentro de aquí, vamos tener dos campos. 264 00:15:47,590 --> 00:15:49,170 Div class = "forma-grupo". 265 00:15:49,170 --> 00:15:55,806 >> Estamos utilizando la biblioteca Bootstrap CSS gentilmente proporcionada por Twitter. 266 00:15:55,806 --> 00:15:57,720 Así que vamos a crear dos de ellos. 267 00:15:57,720 --> 00:16:01,700 268 00:16:01,700 --> 00:16:05,970 Así que esta primera entrada es va a ser el título. 269 00:16:05,970 --> 00:16:08,437 Así que el nombre de entrada = "title". 270 00:16:08,437 --> 00:16:09,270 Class = "FormControl". 271 00:16:09,270 --> 00:16:13,540 272 00:16:13,540 --> 00:16:14,425 Type = "text". 273 00:16:14,425 --> 00:16:16,050 Voy a añadir un marcador de posición = "Title". 274 00:16:16,050 --> 00:16:21,570 275 00:16:21,570 --> 00:16:26,140 >> Y entonces el segundo es va a ser un área de texto. 276 00:16:26,140 --> 00:16:27,827 Name = "contenido". 277 00:16:27,827 --> 00:16:28,660 Class = "FormControl". 278 00:16:28,660 --> 00:16:33,402 279 00:16:33,402 --> 00:16:34,610 Y marcador de posición = "Escriba aquí". 280 00:16:34,610 --> 00:16:42,030 281 00:16:42,030 --> 00:16:43,480 Hay que ir. 282 00:16:43,480 --> 00:16:46,760 Por último, vamos a añadir un botón de acceso rápido enviar. 283 00:16:46,760 --> 00:16:50,370 Type = "submit" class = "btn btn-primaria". 284 00:16:50,370 --> 00:16:53,370 285 00:16:53,370 --> 00:16:55,340 Así que estos son todos características de Bootstrap lo 286 00:16:55,340 --> 00:16:58,510 que este se puede colocar en una manera que es 287 00:16:58,510 --> 00:17:03,730 presa para el usuario, en lugar de HTML desnudo. 288 00:17:03,730 --> 00:17:06,250 >> Así que hemos definido el controlador aquí. 289 00:17:06,250 --> 00:17:08,930 Hemos definido una visión muy simple. 290 00:17:08,930 --> 00:17:12,339 Pero lo que falta es el tejido conectivo. 291 00:17:12,339 --> 00:17:15,420 Así que en este punto, Laravel tiene ni idea de cómo 292 00:17:15,420 --> 00:17:18,312 vamos a realidad acceder a este controlador. 293 00:17:18,312 --> 00:17:20,270 Así que este se define en una archivo llamado routes.php. 294 00:17:20,270 --> 00:17:22,780 295 00:17:22,780 --> 00:17:24,310 Y ahora mismo, tenemos una ruta. 296 00:17:24,310 --> 00:17:29,060 Que es cuando vamos a la camino a casa de este sitio web, 297 00:17:29,060 --> 00:17:33,140 que va a hacer el controlador de índice. 298 00:17:33,140 --> 00:17:38,880 Así que aquí lo que tenemos que hacer es poner en práctica una nueva ruta para nosotros para crear un poste. 299 00:17:38,880 --> 00:17:41,910 >> Así que usamos este método conseguir, que especifica 300 00:17:41,910 --> 00:17:48,650 que cuando un usuario intenta conseguir este page-- específicamente 301 00:17:48,650 --> 00:17:52,850 el cargo slash nueva page-- lo que vamos a hacer 302 00:17:52,850 --> 00:18:02,060 se utilice el controlador llamado BlogController nuevo puesto. 303 00:18:02,060 --> 00:18:03,460 La que acabamos de crear. 304 00:18:03,460 --> 00:18:08,090 Y luego vamos poner un alias como newPost. 305 00:18:08,090 --> 00:18:17,460 306 00:18:17,460 --> 00:18:19,850 Vamos a crear otro función en un poco. 307 00:18:19,850 --> 00:18:23,520 Pero lo que hay aquí debajo la clave "como" es lo que 308 00:18:23,520 --> 00:18:28,195 podemos sustituir dentro nuestras plantillas de hoja. 309 00:18:28,195 --> 00:18:32,390 310 00:18:32,390 --> 00:18:36,230 Así que por ahora, vamos a en realidad también decir ruta. 311 00:18:36,230 --> 00:18:38,380 Así también vamos para crear un controlador 312 00:18:38,380 --> 00:18:41,020 de manera que podemos crear estos puestos. 313 00:18:41,020 --> 00:18:46,940 Así que si un usuario publica para el cargo página SLASH nuevo, lo que vamos a hacer 314 00:18:46,940 --> 00:18:51,350 es utiliza un controlador que vamos a crear en breve 315 00:18:51,350 --> 00:18:56,160 llamado BlogController en createPost. 316 00:18:56,160 --> 00:19:01,929 Y vamos a alias esto con createPost. 317 00:19:01,929 --> 00:19:03,380 Fresco. 318 00:19:03,380 --> 00:19:05,811 >> ¿Alguna pregunta? 319 00:19:05,811 --> 00:19:06,310 Fresco. 320 00:19:06,310 --> 00:19:09,790 Así que vamos a ejecutar lo que tenemos hasta ahora. 321 00:19:09,790 --> 00:19:16,930 Así que si lo hacemos php artesanal servir, vamos a ver un montón de errores. 322 00:19:16,930 --> 00:19:20,385 Así que parece que tenemos una error de sintaxis en las rutas de la línea 27. 323 00:19:20,385 --> 00:19:20,885 Ah. 324 00:19:20,885 --> 00:19:21,718 Falta un punto y coma. 325 00:19:21,718 --> 00:19:24,900 326 00:19:24,900 --> 00:19:32,870 Así que si nos vamos a 8000, verás nada aquí todavía. 327 00:19:32,870 --> 00:19:34,740 Así que esta es la página de inicio predeterminada. 328 00:19:34,740 --> 00:19:37,730 >> Pero si vamos a publicar recortar nuevo, oye. 329 00:19:37,730 --> 00:19:40,425 Va a ser la forma que acabamos de crear. 330 00:19:40,425 --> 00:19:42,550 En este momento, no tenemos implementado la funcionalidad 331 00:19:42,550 --> 00:19:44,060 de cuando presionamos el botón Enviar. 332 00:19:44,060 --> 00:19:47,110 Así que si hacemos clic en el Presentar botón, se va a ejecutar un error. 333 00:19:47,110 --> 00:19:49,840 Pero vamos a código que en este momento, precisamente, lo que 334 00:19:49,840 --> 00:19:54,840 querer hacer cuando un usuario somete este formulario. 335 00:19:54,840 --> 00:19:55,770 >> Así que vamos a hacer eso. 336 00:19:55,770 --> 00:19:57,380 Volver al archivo de controladores. 337 00:19:57,380 --> 00:20:00,180 Lo que vamos a hacer es implementar esta nueva función 338 00:20:00,180 --> 00:20:04,360 que nos permite crear un post. 339 00:20:04,360 --> 00:20:07,370 340 00:20:07,370 --> 00:20:08,990 Declarar nueva función. 341 00:20:08,990 --> 00:20:11,527 CreatePost función pública. 342 00:20:11,527 --> 00:20:14,610 Y esta función va a ser un poco más sofisticado que lo 343 00:20:14,610 --> 00:20:15,559 que teníamos antes. 344 00:20:15,559 --> 00:20:18,350 Pero verás aquí que no estamos va a escribir en realidad cualquier SQL. 345 00:20:18,350 --> 00:20:20,980 El ORM, el Elocuente ORM, va a permitir 346 00:20:20,980 --> 00:20:26,400 que hagamos esto de alguna formas una forma más elegante. 347 00:20:26,400 --> 00:20:29,140 >> Así que vamos a crear un nuevo puesto. 348 00:20:29,140 --> 00:20:34,120 Y aquí estamos instanciar un nuevo objeto 349 00:20:34,120 --> 00:20:38,080 a partir del modelo que acabamos de creado, el modelo posterior. 350 00:20:38,080 --> 00:20:44,450 Y lo que vamos a hacer es establecer la atributo título de este uso de algo 351 00:20:44,450 --> 00:20:47,380 que obtenemos desde el servidor. 352 00:20:47,380 --> 00:20:52,060 Así que esto es similar a lo que teníamos antes en CS50 Finanzas 353 00:20:52,060 --> 00:20:57,750 donde íbamos a hacer, utilizando el Súper Global Post buscando título. 354 00:20:57,750 --> 00:21:01,600 >> Así Laravel ofrece algunos servicios de saneamiento y otras cosas el uso de esta función auxiliar. 355 00:21:01,600 --> 00:21:07,610 Así que preferimos utilizar este lugar de esta forma cruda muy básico de PHP. 356 00:21:07,610 --> 00:21:17,430 Y entonces, ¿qué vamos a hacer es establecer el contenido de la misma a la Entrada obtener contenido. 357 00:21:17,430 --> 00:21:20,429 358 00:21:20,429 --> 00:21:22,720 Estamos realmente va a envolver esto en una función útil 359 00:21:22,720 --> 00:21:31,820 PHP que proporciona llama nl2br, que Resulta nuevas líneas, NLS, en sa, roturas, 360 00:21:31,820 --> 00:21:35,822 para que podamos tener en realidad diferentes apartados dentro de ella. 361 00:21:35,822 --> 00:21:38,030 Y finalmente lo que vamos que hacer es guardar este post. 362 00:21:38,030 --> 00:21:41,686 Así que llamamos a la función ahorrar en este modelo. 363 00:21:41,686 --> 00:21:43,800 Vamos a guardar la publicación. 364 00:21:43,800 --> 00:21:49,970 Y finalmente lo que vamos a hacer se redirige al usuario específicamente 365 00:21:49,970 --> 00:21:55,060 a la ruta que vamos a crear en breve, alias viewPost. 366 00:21:55,060 --> 00:22:00,435 Y vamos a pasar en los argumentos id, siendo el id de este nuevo puesto. 367 00:22:00,435 --> 00:22:04,280 368 00:22:04,280 --> 00:22:05,640 >> Grande. 369 00:22:05,640 --> 00:22:09,090 Así que ahora si realmente vamos y corremos esto. 370 00:22:09,090 --> 00:22:11,370 Vamos a añadir un nuevo puesto. 371 00:22:11,370 --> 00:22:15,930 Digamos que este es el seminario 50. 372 00:22:15,930 --> 00:22:17,620 Y decir, seguro. 373 00:22:17,620 --> 00:22:18,240 ASDL. 374 00:22:18,240 --> 00:22:18,740 Lo Que Sea. 375 00:22:18,740 --> 00:22:20,320 Algún tipo de contenido. 376 00:22:20,320 --> 00:22:21,180 Y enviarlo. 377 00:22:21,180 --> 00:22:23,850 Y nos dimos cuenta de que, oye. rutas no definidas. 378 00:22:23,850 --> 00:22:32,340 Pero si echamos un vistazo a phpMyAdmin y buscar si nuestra función 379 00:22:32,340 --> 00:22:34,370 hizo nada. 380 00:22:34,370 --> 00:22:36,670 Mira mensajes Blog50. 381 00:22:36,670 --> 00:22:37,720 Nos daremos cuenta de que, hey. 382 00:22:37,720 --> 00:22:43,530 De hecho, sólo creó ese blog Publicación de las marcas de tiempo según lo especificado. 383 00:22:43,530 --> 00:22:46,600 384 00:22:46,600 --> 00:22:51,630 >> Así que ahora vamos a volver y en realidad crean esta otra función en nuestro controlador, 385 00:22:51,630 --> 00:22:54,790 específicamente el controlador viewPost. 386 00:22:54,790 --> 00:23:00,290 ViewPost función tan público. 387 00:23:00,290 --> 00:23:04,070 Así que aquí lo que haremos, en lugar de tener paréntesis vacíos, 388 00:23:04,070 --> 00:23:08,800 vamos a querer pasar en el ID de el puesto que estamos creando. 389 00:23:08,800 --> 00:23:12,800 Y a partir de aquí lo que vamos a hacer es en realidad consultar la base de datos para ello. 390 00:23:12,800 --> 00:23:15,140 >> Así que si nosotros publicamos, hay una función llamada 391 00:23:15,140 --> 00:23:18,860 Encuentra que nos permite consultarlo por ID. 392 00:23:18,860 --> 00:23:22,110 En concreto, en realidad, vamos a utilizar una versión alternativa de este llamado 393 00:23:22,110 --> 00:23:27,880 Encuentra o Fail, que nos permite para dejar de salir de esta función, 394 00:23:27,880 --> 00:23:34,700 lanzar una excepción si el ID pasamos en que no existe. 395 00:23:34,700 --> 00:23:37,500 Y luego vamos a hacer algo similar a lo que hicimos anteriormente 396 00:23:37,500 --> 00:23:41,100 donde montamos el contenido de esta página para estar 397 00:23:41,100 --> 00:23:47,950 la versión renderizada de esta nueva visión que vamos a crear, blog.view. 398 00:23:47,950 --> 00:23:51,030 >> Y vamos a pasar a la it-- Al igual que en el CS50 hacer 399 00:23:51,030 --> 00:23:56,645 function-- un diccionario de variables. 400 00:23:56,645 --> 00:23:59,860 401 00:23:59,860 --> 00:24:04,620 Las claves de este array asociativo convertido en variables dentro de la plantilla. 402 00:24:04,620 --> 00:24:06,830 Así que vamos a hacer que poste. 403 00:24:06,830 --> 00:24:12,474 Así que pasar indirectamente el puesto que hemos preguntó desde la base de datos. . 404 00:24:12,474 --> 00:24:14,390 Ahora lo que vamos a hacer es crear este punto de vista 405 00:24:14,390 --> 00:24:17,560 por lo que podemos ver en realidad las entradas del blog que hemos construido. 406 00:24:17,560 --> 00:24:20,280 >> Así que vamos a crear un archivo llamado view.blade.php. 407 00:24:20,280 --> 00:24:25,870 408 00:24:25,870 --> 00:24:29,640 Así que dentro de esta plantilla, lo que vamos a hacer 409 00:24:29,640 --> 00:24:39,700 está creado una página simple que nos permite mostrar el contenido. 410 00:24:39,700 --> 00:24:44,280 Así que hacemos sección, eso es antes de contenido. 411 00:24:44,280 --> 00:24:46,800 Deténgase. 412 00:24:46,800 --> 00:24:53,920 Y lo que vamos que hacer dentro de aquí es 413 00:24:53,920 --> 00:24:56,930 escribir algo de HTML para mostrar esta página. 414 00:24:56,930 --> 00:25:03,590 >> Así que vamos a envolverlo con una fantasía nuevo elemento HTML5 llamado artículo. 415 00:25:03,590 --> 00:25:05,790 Y aquí, vamos tener una cabecera donde 416 00:25:05,790 --> 00:25:12,190 vamos a simplemente tener un h1, que incluye el título de la entrada. 417 00:25:12,190 --> 00:25:17,120 Así que aquí, si nos fijamos en este doble notación corchete, 418 00:25:17,120 --> 00:25:21,690 esto hará esencialmente Php echo título de la entrada. 419 00:25:21,690 --> 00:25:25,630 Así que es una abreviatura útil que Laravel nos proporciona. 420 00:25:25,630 --> 00:25:31,070 Así que vamos a utilizar esta notación en su lugar. 421 00:25:31,070 --> 00:25:40,220 >> Y aquí, vamos a también imprimir el contenido de la misma. 422 00:25:40,220 --> 00:25:43,480 Y aquí, vamos que ver el contenido del post. 423 00:25:43,480 --> 00:25:46,514 424 00:25:46,514 --> 00:25:50,660 Y abajo en el fondo de lo que somos vamos a hacer es crear un pie de página. 425 00:25:50,660 --> 00:25:57,690 Y en el pie de página, vamos a primera pantalla cuando esta publicación. 426 00:25:57,690 --> 00:26:01,320 Así que esta fue publicada en, creado el. 427 00:26:01,320 --> 00:26:07,996 >> Y Laravel utiliza una muy agradable fecha biblioteca llamada Carbon. 428 00:26:07,996 --> 00:26:11,120 Así que realmente podemos hacer algo llamado difforHumans que has visto antes. 429 00:26:11,120 --> 00:26:14,360 Cuando publicamos. que va a decir, como, hace cinco segundos. 430 00:26:14,360 --> 00:26:16,860 Así que este es un muy buen funcionalidad de Laravel. 431 00:26:16,860 --> 00:26:19,469 432 00:26:19,469 --> 00:26:21,385 Y, por último, vamos para cerrar este pie de página. 433 00:26:21,385 --> 00:26:24,900 434 00:26:24,900 --> 00:26:31,450 >> Así que ahora, si nos remontamos a Home Page vamos 435 00:26:31,450 --> 00:26:34,490 para ver nada aquí todavía porque no hemos codificado la página de inicio. 436 00:26:34,490 --> 00:26:40,962 Pero si vamos a publicar una barra, vamos a ver una excepción. 437 00:26:40,962 --> 00:26:42,670 ¿Alguien sabe por qué vemos una excepción? 438 00:26:42,670 --> 00:26:44,516 ¿Qué nos falta? 439 00:26:44,516 --> 00:26:45,290 ¿Alguna idea? 440 00:26:45,290 --> 00:26:48,050 441 00:26:48,050 --> 00:26:49,790 Así que lo que hicimos nosotros anteriormente para nosotros en realidad 442 00:26:49,790 --> 00:26:52,285 para definir cómo se llega a controladores particulares? 443 00:26:52,285 --> 00:26:54,895 444 00:26:54,895 --> 00:26:55,770 >> ALTAVOZ 1: La ruta? 445 00:26:55,770 --> 00:26:56,519 ERIC Ouyang: Sí. 446 00:26:56,519 --> 00:26:58,070 Así que todavía tenemos que definir la ruta. 447 00:26:58,070 --> 00:26:59,794 Así que volvemos aquí para routes.php. 448 00:26:59,794 --> 00:27:01,710 Se dará cuenta de que en realidad no han definido 449 00:27:01,710 --> 00:27:05,010 cómo vamos a conseguir a este controlador. 450 00:27:05,010 --> 00:27:06,780 Así que ahora vamos a definir esta ruta. 451 00:27:06,780 --> 00:27:09,280 Es bastante sencillo, similar a lo que hicimos antes. 452 00:27:09,280 --> 00:27:13,910 Pero lo que vamos a notar aquí es que vamos a tener un marcador de posición. 453 00:27:13,910 --> 00:27:18,730 >> Así que si lo hacemos route.get puesto slash ID. 454 00:27:18,730 --> 00:27:24,290 Así ID ahora es lo que va a ser aprobado en el controlador. 455 00:27:24,290 --> 00:27:27,820 Esto va a utilizar el controlador que acabamos de 456 00:27:27,820 --> 00:27:33,560 creado, BlogController en viewPost. 457 00:27:33,560 --> 00:27:36,420 Y vamos a alias esto como viewPost. 458 00:27:36,420 --> 00:27:46,544 459 00:27:46,544 --> 00:27:47,490 Grande. 460 00:27:47,490 --> 00:27:49,470 Así que ahora vamos a crear esta ruta. 461 00:27:49,470 --> 00:27:52,100 >> Así que ahora si vamos aquí y volver a cargar esta página, 462 00:27:52,100 --> 00:27:54,410 que, de hecho, tenemos nuestro nuevo blog. 463 00:27:54,410 --> 00:27:57,710 Así que esto es lo que hemos creado antes. 464 00:27:57,710 --> 00:28:01,320 Muy simple página, pero se muestra el entrada de blog que acabamos de crear. 465 00:28:01,320 --> 00:28:04,210 466 00:28:04,210 --> 00:28:04,760 Fresco. 467 00:28:04,760 --> 00:28:08,880 Y si en realidad nos pasamos por el todo proceso de creación de una nueva entrada en el blog, 468 00:28:08,880 --> 00:28:11,700 nos daremos cuenta de que todo redirige correctamente. 469 00:28:11,700 --> 00:28:12,950 Si digo: "Hola. 470 00:28:12,950 --> 00:28:15,710 Soy Jonathan Tan ". 471 00:28:15,710 --> 00:28:18,550 Diga: "Este es mi blog." 472 00:28:18,550 --> 00:28:22,830 Y presentarlo, esto creará esta nueva entrada en el blog con ID 2, 473 00:28:22,830 --> 00:28:28,920 que los incrementos de lo que teníamos previamente y muestra correctamente. 474 00:28:28,920 --> 00:28:30,760 Impresionante. 475 00:28:30,760 --> 00:28:32,930 >> ¿Alguna pregunta? 476 00:28:32,930 --> 00:28:33,430 ¿Sí? 477 00:28:33,430 --> 00:28:36,537 >> ALTAVOZ 2: Cómo maneja Laravel desinfección y todo para usted? 478 00:28:36,537 --> 00:28:37,245 ERIC Ouyang: Sí. 479 00:28:37,245 --> 00:28:42,990 Así que cuando vimos antes, cuando hicimos entrada de colon de colon llegar, 480 00:28:42,990 --> 00:28:47,720 que sanitates cualquier SQL inyecciones y otras cosas 481 00:28:47,720 --> 00:28:51,660 que lo que se quiere llevar a cabo si estamos un usuario malicioso de la página web. 482 00:28:51,660 --> 00:28:54,115 Así Laravel maneja una gran cantidad de que detrás de las escenas. 483 00:28:54,115 --> 00:28:57,030 Buena pregunta. 484 00:28:57,030 --> 00:29:00,390 >> Así que echemos un vistazo a la página de inicio. 485 00:29:00,390 --> 00:29:03,220 486 00:29:03,220 --> 00:29:06,790 Así que si primero volvemos a la controlador de la página principal, 487 00:29:06,790 --> 00:29:08,740 te darás cuenta de que no hace mucho aquí. 488 00:29:08,740 --> 00:29:11,620 Se dará cuenta de que no somos pasando a este controlador 489 00:29:11,620 --> 00:29:13,830 algo particularmente útil. 490 00:29:13,830 --> 00:29:16,660 Es sólo este archivo índice. 491 00:29:16,660 --> 00:29:18,770 >> Así que vamos a pasar en esto algo útil. 492 00:29:18,770 --> 00:29:21,450 Y específicamente, estamos va a pasar en los puestos. 493 00:29:21,450 --> 00:29:28,740 Y Laravel nos permite hacer puesto absoluto, lo que 494 00:29:28,740 --> 00:29:30,625 nos permitirá obtener todos los mensajes. 495 00:29:30,625 --> 00:29:33,160 496 00:29:33,160 --> 00:29:35,730 Ahora bien, si nos remontamos a index.php, verás, hey. 497 00:29:35,730 --> 00:29:37,060 Aquí no hay nada todavía. 498 00:29:37,060 --> 00:29:41,290 Pero lo que queremos hacer aquí es en realidad recorrer, 499 00:29:41,290 --> 00:29:46,420 hacer un bucle foreach en los puestos que nos permite imprimir los mensajes. 500 00:29:46,420 --> 00:29:53,180 >> Mensajes Así como foreach puesto, lo que queremos hacer 501 00:29:53,180 --> 00:29:57,252 se imprime el contenido de la entrada en el blog. 502 00:29:57,252 --> 00:30:00,210 Pero una cosa que notarás es que que en realidad escribió la mayor parte de ese código 503 00:30:00,210 --> 00:30:01,370 Ya, en view.blade.php. 504 00:30:01,370 --> 00:30:04,070 505 00:30:04,070 --> 00:30:08,640 Así que lo que vamos a hacer en realidad es utilizar una buena característica útil de Blade 506 00:30:08,640 --> 00:30:11,300 y factorizar el código común. 507 00:30:11,300 --> 00:30:12,570 Así que vamos. 508 00:30:12,570 --> 00:30:16,210 >> Vamos a tomar este contenido aquí, y lo que vamos a hacer 509 00:30:16,210 --> 00:30:18,170 es crear una nueva carpeta. 510 00:30:18,170 --> 00:30:20,364 Vamos a llamarlo Parciales. 511 00:30:20,364 --> 00:30:22,530 Y aquí, vamos para crear un post.blade.php. 512 00:30:22,530 --> 00:30:26,570 513 00:30:26,570 --> 00:30:33,100 Así que aquí, tomamos en cuenta la forma en la que queremos mostrar estos mensajes. 514 00:30:33,100 --> 00:30:38,690 Y aquí lo que haremos en lugar de realmente tener que HTML directamente, 515 00:30:38,690 --> 00:30:41,530 vamos a utilizar esta directiva llamada incluyen blog.partials.post. 516 00:30:41,530 --> 00:30:45,210 517 00:30:45,210 --> 00:30:50,635 >> ¿Y qué vamos a hacer aquí es pasar en el post de la página. 518 00:30:50,635 --> 00:30:57,076 519 00:30:57,076 --> 00:31:01,050 Así que ahora si regresamos aquí, vamos a observe que la funcionalidad es todavía 520 00:31:01,050 --> 00:31:01,550 lo mismo. 521 00:31:01,550 --> 00:31:05,140 Pero ahora tenemos este un factor fuera de código, este código HTML. 522 00:31:05,140 --> 00:31:07,070 Así que podemos usarlo en el Índice. 523 00:31:07,070 --> 00:31:09,090 Así que aquí, esto es muy sencillo. 524 00:31:09,090 --> 00:31:17,870 Todo lo que hacemos es incluir blog.partials.post y matriz. 525 00:31:17,870 --> 00:31:20,845 Y en algún lugar a antes, hacemos salen post. 526 00:31:20,845 --> 00:31:23,830 527 00:31:23,830 --> 00:31:28,182 >> Así que ahora, si nos remontamos a la página de inicio, vamos a ver que, hey. 528 00:31:28,182 --> 00:31:30,515 Tenemos una lista de todos los entradas de blog que teníamos antes. 529 00:31:30,515 --> 00:31:34,640 530 00:31:34,640 --> 00:31:37,700 Podríamos querer agregar un poco de "si" condiciones y condiciones "else" 531 00:31:37,700 --> 00:31:39,979 de modo que si no tenemos nada en el blog, 532 00:31:39,979 --> 00:31:41,520 queremos mostrar algo útil. 533 00:31:41,520 --> 00:31:42,570 Al igual que, hey. 534 00:31:42,570 --> 00:31:44,340 No hay contenido publicado en el blog. 535 00:31:44,340 --> 00:31:47,670 Y si ustedes realmente Mira el código de distribución en GitHub, 536 00:31:47,670 --> 00:31:50,100 verás un ejemplo de cómo lo hacemos. 537 00:31:50,100 --> 00:31:52,770 538 00:31:52,770 --> 00:31:54,110 >> Fresco. 539 00:31:54,110 --> 00:31:54,890 ¿Alguna pregunta? 540 00:31:54,890 --> 00:31:55,510 Sí. 541 00:31:55,510 --> 00:31:57,468 >> ALTAVOZ 2: Supongo que simplemente una pregunta fundamental. 542 00:31:57,468 --> 00:31:59,480 De vuelta en la ruta. 543 00:31:59,480 --> 00:32:00,230 ERIC Ouyang: Sí. 544 00:32:00,230 --> 00:32:01,935 Si echamos un vistazo a las rutas. 545 00:32:01,935 --> 00:32:06,018 >> ALTAVOZ 2: ¿De dónde viene el uses.blogcontroller a crear correos, 546 00:32:06,018 --> 00:32:07,560 ¿qué nos dirigen a? 547 00:32:07,560 --> 00:32:08,310 ERIC Ouyang: Sí. 548 00:32:08,310 --> 00:32:08,550 Sí. 549 00:32:08,550 --> 00:32:09,716 >> ALTAVOZ 2: O lo que es que-- 550 00:32:09,716 --> 00:32:12,620 ERIC Ouyang: Entonces, echar un vistazo, por ejemplo por ejemplo, esta ruta aquí. 551 00:32:12,620 --> 00:32:17,190 La primera parte es la real URL que el usuario va a ir. 552 00:32:17,190 --> 00:32:19,930 Y esta serie aquí, matriz asociativa, define 553 00:32:19,930 --> 00:32:24,520 cómo queremos tener la aplicación acto en respuesta a la misma. 554 00:32:24,520 --> 00:32:29,090 Así que utiliza es el controlador, la función que nos 555 00:32:29,090 --> 00:32:31,610 querer llamar cuando un usuario va a esta URL. 556 00:32:31,610 --> 00:32:35,190 Así viewPost aquí era un función que hemos definido en el interior 557 00:32:35,190 --> 00:32:36,100 de BlogController-- 558 00:32:36,100 --> 00:32:37,160 >> ALTAVOZ 2: Ya veo. 559 00:32:37,160 --> 00:32:39,368 >> ERIC Ouyang: --así que en realidad puede hacer que un punto de vista, 560 00:32:39,368 --> 00:32:42,590 realizar algunos cálculos, interactuar con la base de datos SQL. 561 00:32:42,590 --> 00:32:43,560 >> ALTAVOZ 2: OK. 562 00:32:43,560 --> 00:32:46,960 >> ERIC Ouyang: Y luego el otro parte ", pues" es un alias que usamos. 563 00:32:46,960 --> 00:32:50,714 Así que si nos damos cuenta cuando hemos creado el formulario, 564 00:32:50,714 --> 00:32:52,380 te darás cuenta de que el URL :: routecreatePost. 565 00:32:52,380 --> 00:32:55,000 566 00:32:55,000 --> 00:32:58,330 Por lo tanto, sustituye en el real URL para que no somos duro 567 00:32:58,330 --> 00:33:02,940 codificación de estos en lo que podemos cambiarlo una vez, decimos si queríamos cambiar de nombre. 568 00:33:02,940 --> 00:33:06,055 En lugar de barra posterior nuevo, queremos hacer como, p 569 00:33:06,055 --> 00:33:09,490 reducir radicalmente nuevo sólo para limpiar nuestras URLs un poco. 570 00:33:09,490 --> 00:33:14,740 Nos gustaría cambiarlo en un solo lugar en vez que a través de todos los diferentes archivos. 571 00:33:14,740 --> 00:33:15,451 >> Fresco. 572 00:33:15,451 --> 00:33:15,950 Eso es bueno. 573 00:33:15,950 --> 00:33:20,070 Así que ahora tenemos una muy plataforma de blogs básica. 574 00:33:20,070 --> 00:33:24,260 Probablemente nos queremos añadir en un botón para que en realidad podemos crear nuevos puestos. 575 00:33:24,260 --> 00:33:27,850 Así que si echamos un vistazo en el Layout Master, 576 00:33:27,850 --> 00:33:31,280 tenemos una sección llamada Cabecera Derecho que sólo hemos definido en la parte superior. 577 00:33:31,280 --> 00:33:34,820 Así que podemos añadir botones a la parte superior de la cabecera. 578 00:33:34,820 --> 00:33:43,950 >> Así que si vamos a index.blade.php, en realidad hacer es definir lo que pasa en el interior de aquí. 579 00:33:43,950 --> 00:33:46,970 Así que esta sección Encabezado Derecho, lo que vamos a hacer 580 00:33:46,970 --> 00:33:55,240 es añadir en un botón para ir a la URL definido por la ruta nueva entrada. 581 00:33:55,240 --> 00:33:58,270 582 00:33:58,270 --> 00:34:01,660 Sólo para limpiarlo y hacer es bonito y todo Bootstrap, 583 00:34:01,660 --> 00:34:04,630 vamos a hacer este botón predeterminado. 584 00:34:04,630 --> 00:34:07,794 Vamos a hacer lo grande para la diversión. 585 00:34:07,794 --> 00:34:09,969 >> Y dentro de ella, podríamos poner un poco de texto. 586 00:34:09,969 --> 00:34:14,030 Pero lo Bootstrap proporciona es glyphicons. 587 00:34:14,030 --> 00:34:17,840 Así que en realidad podemos añadir en esa agradable lápiz que vimos anteriormente. 588 00:34:17,840 --> 00:34:20,570 589 00:34:20,570 --> 00:34:21,781 Glyphicon. 590 00:34:21,781 --> 00:34:22,489 Glyphicon-lápiz. 591 00:34:22,489 --> 00:34:25,449 592 00:34:25,449 --> 00:34:35,340 Así que esto nos va a permitir poner en un icono en lugar de texto. 593 00:34:35,340 --> 00:34:38,960 Ahora bien, si nos detenemos, este definirá esta sección. 594 00:34:38,960 --> 00:34:39,460 Y, oye. 595 00:34:39,460 --> 00:34:45,000 Tenemos un botón agradable que nos une directamente al agregar una página de blog. 596 00:34:45,000 --> 00:34:46,659 >> Así que tenemos una bastante simple blog. 597 00:34:46,659 --> 00:34:49,710 Podemos agregar cosas a la misma. 598 00:34:49,710 --> 00:34:53,650 Pero lo que en general esperamos de los blogs está comentando. 599 00:34:53,650 --> 00:34:57,340 Por lo que es realmente importante para nosotros tener, decir, si alguien visita un sitio web 600 00:34:57,340 --> 00:35:00,620 y realmente le gusta el post que pueden participar en el debate 601 00:35:00,620 --> 00:35:03,100 con otras personas que visitan la página. 602 00:35:03,100 --> 00:35:07,050 Así que vamos a ir y crear una nueva tabla de base de datos y un nuevo modelo 603 00:35:07,050 --> 00:35:12,220 para que podamos asociar comenta con los postes. 604 00:35:12,220 --> 00:35:17,370 >> Así que el primer paso, al igual que antes, es que necesitamos para ejecutar una migración. 605 00:35:17,370 --> 00:35:21,982 Así como antes, lo hacemos php artesanal migran: hacer. 606 00:35:21,982 --> 00:35:24,440 Y vamos a crear una llamado create_comments_table. 607 00:35:24,440 --> 00:35:29,520 608 00:35:29,520 --> 00:35:36,080 Esto creará un archivo que tiene nuestra nueva migración. 609 00:35:36,080 --> 00:35:40,170 Y vamos a, como antes, definir una nueva tabla. 610 00:35:40,170 --> 00:35:42,773 Así esquema :: crear un mesa calificó los comentarios. 611 00:35:42,773 --> 00:35:47,410 612 00:35:47,410 --> 00:35:48,430 Esta función aquí. 613 00:35:48,430 --> 00:35:51,620 Y dentro de este cuadro lo que vamos a hacer es primero, 614 00:35:51,620 --> 00:35:54,260 como antes, asigne un ID. 615 00:35:54,260 --> 00:35:56,552 Incrementa ID. 616 00:35:56,552 --> 00:36:05,440 >> Vamos a permitir que los usuarios asocien su nombre con un comentario particular. 617 00:36:05,440 --> 00:36:10,080 Vamos a tener un poco de contenido que va de la mano con esto, el contenido del texto. 618 00:36:10,080 --> 00:36:13,580 619 00:36:13,580 --> 00:36:15,910 Y aquí lo que vamos a hacer es algo diferente. 620 00:36:15,910 --> 00:36:23,620 Vamos a crear un entero eso se llama post_id que 621 00:36:23,620 --> 00:36:32,100 va a significar lo puesto un comentario en particular va con. 622 00:36:32,100 --> 00:36:35,410 >> Además, de hecho vamos a establecer una restricción de clave externa en esto. 623 00:36:35,410 --> 00:36:37,750 Así MySQL hará cumplir eso. 624 00:36:37,750 --> 00:36:39,840 No estamos tratando de asignar comentario número 625 00:36:39,840 --> 00:36:44,440 5 para publicar 5000 si no tenemos tenía 5.000 puestos en él. 626 00:36:44,440 --> 00:36:50,240 Así que lo que hacemos aquí, hacemos post_id extranjera 627 00:36:50,240 --> 00:37:02,046 va a estar asociado con el campo ID de los puestos de la tabla. 628 00:37:02,046 --> 00:37:05,900 Y que en realidad vamos a hacer algo otra cosa útil, es onDelete. 629 00:37:05,900 --> 00:37:11,180 >> Así que si borramos algunos Publicación de la base de datos, 630 00:37:11,180 --> 00:37:15,507 que queremos conectar en cascada la borra los comentarios también. 631 00:37:15,507 --> 00:37:18,090 Porque no es muy útil para nosotros tener comentarios en los posts 632 00:37:18,090 --> 00:37:19,900 que no existen. 633 00:37:19,900 --> 00:37:23,764 Y, por último, al igual que antes, estamos va a establecer marcas de tiempo en esto. 634 00:37:23,764 --> 00:37:28,690 635 00:37:28,690 --> 00:37:33,510 Y al igual que antes, vamos a tiene la migración inversa sea 636 00:37:33,510 --> 00:37:37,920 eliminar la tabla de comentarios. 637 00:37:37,920 --> 00:37:40,070 >> Así que ahora si nos remontamos de aquí, vamos 638 00:37:40,070 --> 00:37:43,110 para ejecutar esta migración, migrar artesanal. 639 00:37:43,110 --> 00:37:46,400 Y ahora se aplica este migración que acabamos de crear. 640 00:37:46,400 --> 00:37:50,080 Así que si tenemos un vistazo a phpMyAdmin, que hacemos, de hecho, ahora 641 00:37:50,080 --> 00:37:53,210 tener una tabla de comentarios que tiene la estructura que sólo hemos especificado. 642 00:37:53,210 --> 00:37:56,900 643 00:37:56,900 --> 00:37:59,610 Así como antes, estamos va a crear un nuevo modelo 644 00:37:59,610 --> 00:38:04,450 abstraer la tabla de SQL que acabamos de crear. 645 00:38:04,450 --> 00:38:05,450 >> Así que vamos a añadir un nuevo archivo. 646 00:38:05,450 --> 00:38:06,908 Vamos a llamarlo comment.php. 647 00:38:06,908 --> 00:38:10,160 648 00:38:10,160 --> 00:38:15,490 Y esto es en realidad va a ser bastante directa, con un ligero cambio 649 00:38:15,490 --> 00:38:17,520 de lo que teníamos antes. 650 00:38:17,520 --> 00:38:22,790 Así clase Comment extiende elocuente. 651 00:38:22,790 --> 00:38:25,930 Y lo que vamos que hacer aquí es definir 652 00:38:25,930 --> 00:38:31,360 una función que es la relación con otros modelos. 653 00:38:31,360 --> 00:38:39,250 Así que vamos a tener una función posterior aquí que devuelve esta relación. 654 00:38:39,250 --> 00:38:43,330 Así que estamos especificando que esto pertenece a publicar, 655 00:38:43,330 --> 00:38:49,200 diciendo que hay un puesto que este comentario pertenece. 656 00:38:49,200 --> 00:38:53,917 >> En realidad, esto tiene que ser P mayúscula para el modelo. 657 00:38:53,917 --> 00:38:56,500 Y ahora justo al otro flip lado, tenemos que decir que, hey. 658 00:38:56,500 --> 00:38:58,160 Mensajes tienen comentarios. 659 00:38:58,160 --> 00:39:03,030 Así que lo que vamos a hacer es definir los comentarios de función pública. 660 00:39:03,030 --> 00:39:07,100 661 00:39:07,100 --> 00:39:13,620 Y aquí se devuelve Esto tiene muchas comentario. 662 00:39:13,620 --> 00:39:16,630 663 00:39:16,630 --> 00:39:22,010 Así que ahora por arte de magia cuando tenemos un post, podemos obtener los comentarios de atributos 664 00:39:22,010 --> 00:39:25,615 y que va a rellenar con el información de la base de datos. 665 00:39:25,615 --> 00:39:32,950 666 00:39:32,950 --> 00:39:38,220 >> Así que vamos a ir a través de realidad y añadir una nueva característica a nuestro archivo de vista 667 00:39:38,220 --> 00:39:43,600 de modo que poder tanto en la pantalla y crear comentarios. 668 00:39:43,600 --> 00:39:54,010 669 00:39:54,010 --> 00:39:56,865 Así que vamos a definir una nueva sección. 670 00:39:56,865 --> 00:39:59,890 Vamos a la separan con una regla horizontal. 671 00:39:59,890 --> 00:40:04,065 Sección id = "comentarios". 672 00:40:04,065 --> 00:40:06,990 Lo que vamos a hacer aquí es, como antes, 673 00:40:06,990 --> 00:40:09,880 iterar a través de todos los comentarios. 674 00:40:09,880 --> 00:40:12,960 Así que en realidad la forma en que hacemos esto es, como ya he dicho, bastante mágico. 675 00:40:12,960 --> 00:40:14,440 >> Hacemos enviar comentarios. 676 00:40:14,440 --> 00:40:17,410 677 00:40:17,410 --> 00:40:22,710 Y luego podemos hacer esto para cada bucle sobre cada uno de los comentarios. 678 00:40:22,710 --> 00:40:25,740 ¿Y qué vamos a hacer es div class comentario, 679 00:40:25,740 --> 00:40:29,240 y vamos a realidad imprimir este comentario. 680 00:40:29,240 --> 00:40:34,150 Así que mostrar que oye, comentar nombre-- la persona 681 00:40:34,150 --> 00:40:38,080 que colocó este comment-- dice dot dot dot. 682 00:40:38,080 --> 00:40:41,240 Vamos a poner esto en un bloque cita, sólo para que se vea bonito. 683 00:40:41,240 --> 00:40:46,470 Y luego comentar cita de bloque de contenido. 684 00:40:46,470 --> 00:40:49,790 685 00:40:49,790 --> 00:40:50,892 Y foreach. 686 00:40:50,892 --> 00:40:53,100 Así que ahora esto va a loop a través de todos los comentarios 687 00:40:53,100 --> 00:40:56,500 que está asociado con cada uno de los puestos 688 00:40:56,500 --> 00:41:00,960 y mostrar cada uno de esos comentarios. 689 00:41:00,960 --> 00:41:05,120 Voy a añadir otra sección abajo aquí, lo que nos permite añadir un comentario. 690 00:41:05,120 --> 00:41:07,400 Así clase h3. 691 00:41:07,400 --> 00:41:09,580 Ponga un título aquí. 692 00:41:09,580 --> 00:41:10,934 Añadir un comentario. 693 00:41:10,934 --> 00:41:13,886 694 00:41:13,886 --> 00:41:15,700 Y vamos a definir una nueva forma. 695 00:41:15,700 --> 00:41:18,730 >> Así como antes, estamos vamos a hacer una acción de formulario. 696 00:41:18,730 --> 00:41:22,740 Y aquí, la nueva acción es que estamos va a definir un nuevo controlador que 697 00:41:22,740 --> 00:41:26,770 nos permite responder a publicar las solicitudes de creación de comentarios. 698 00:41:26,770 --> 00:41:33,365 Así createComment URL :: ruta. 699 00:41:33,365 --> 00:41:37,730 Voy a pasar en el parámetro aquí. 700 00:41:37,730 --> 00:41:40,380 La identificación del puesto que estamos creando comentario sobre. 701 00:41:40,380 --> 00:41:45,340 702 00:41:45,340 --> 00:41:50,280 Y a continuación, el método de esta forma va a ser puesto. 703 00:41:50,280 --> 00:41:57,240 >> Ahora vamos a añadir en un dos campos, el grupo forma. 704 00:41:57,240 --> 00:42:04,670 Esto va a ser una entrada con el nombre "nombre" y class = "-control de formulario", 705 00:42:04,670 --> 00:42:14,250 type = "text", y con la marcador de posición = "Tu nombre". 706 00:42:14,250 --> 00:42:19,380 También vamos a definir otro campo de formulario, que 707 00:42:19,380 --> 00:42:22,970 va a ser un texto área, ya que teníamos antes. 708 00:42:22,970 --> 00:42:25,480 Al igual que antes, lo llaman contenido. 709 00:42:25,480 --> 00:42:31,160 Class = "control de la forma". 710 00:42:31,160 --> 00:42:41,660 Marcador de posición = "Escriba aquí". 711 00:42:41,660 --> 00:42:44,100 >> Y de la misma manera que nos en realidad puede enviarlo, 712 00:42:44,100 --> 00:42:55,740 submit tipo y clase = "btn btn-primaria." 713 00:42:55,740 --> 00:42:57,005 Cierre el formulario. 714 00:42:57,005 --> 00:42:59,010 Cerrar esta acción. 715 00:42:59,010 --> 00:43:06,580 Así que ahora si volver a cargar esta página en tenemos, por ejemplo, un puesto determinado. 716 00:43:06,580 --> 00:43:10,310 Tenemos que reiniciar el servidor. 717 00:43:10,310 --> 00:43:12,340 PHP artesanal servir. 718 00:43:12,340 --> 00:43:15,630 719 00:43:15,630 --> 00:43:18,334 Reinicie esto. 720 00:43:18,334 --> 00:43:19,500 Tenemos que definir la ruta. 721 00:43:19,500 --> 00:43:25,090 Pero por ahora, vamos a tomar este de modo que en realidad le podemos mostrar 722 00:43:25,090 --> 00:43:28,750 lo que la página se parece, y luego que en realidad a crear esa ruta. 723 00:43:28,750 --> 00:43:29,250 Así que, hey. 724 00:43:29,250 --> 00:43:37,080 Tenemos esta nueva forma aquí abajo para que podamos crear comentarios. 725 00:43:37,080 --> 00:43:39,950 Así que vamos a definir una realidad función dentro del controlador 726 00:43:39,950 --> 00:43:43,020 para que podamos añadir comentarios. 727 00:43:43,020 --> 00:43:43,650 Volvamos. 728 00:43:43,650 --> 00:43:48,420 Y dentro de blogcontroller.php, lo que vamos a hacer 729 00:43:48,420 --> 00:43:51,620 es crear una nueva función llamada crear comentario. 730 00:43:51,620 --> 00:43:54,220 731 00:43:54,220 --> 00:43:57,040 >> Función createComment Pública. 732 00:43:57,040 --> 00:44:00,130 Esto va a tener un solo parámetro, el ID de los mensajes 733 00:44:00,130 --> 00:44:02,280 que estamos comentando. 734 00:44:02,280 --> 00:44:04,790 Y al igual que antes, estamos va a llegar primero al poste. 735 00:44:04,790 --> 00:44:10,790 Así que publicar, Identificación findOrfail. 736 00:44:10,790 --> 00:44:15,020 Después, nos vamos para crear un nuevo comentario. 737 00:44:15,020 --> 00:44:18,880 Por lo tanto comentario = new comentario. 738 00:44:18,880 --> 00:44:26,820 Comentario name = Entrada :: get nombre. 739 00:44:26,820 --> 00:44:39,420 Contenido Comment = la misma línea nueva en las pausas de entrada :: get contenido. 740 00:44:39,420 --> 00:44:43,460 >> Y, por último, vamos a tener que asociar este comentario con el puesto. 741 00:44:43,460 --> 00:44:47,230 Así que vamos a utilizar esta función, comentarios, 742 00:44:47,230 --> 00:44:50,260 que nos permite ahorrar esta relación. 743 00:44:50,260 --> 00:44:54,780 Así que ahora este comentario tendrá automáticamente el ID del mensaje. 744 00:44:54,780 --> 00:44:57,640 También podríamos configurarlo manualmente, pero esto es 745 00:44:57,640 --> 00:45:02,490 más fácil de leer en la medida ya que la función va. 746 00:45:02,490 --> 00:45:05,860 Y después realizamos esto, lo que quiero hacer 747 00:45:05,860 --> 00:45:10,840 es redirigir al usuario a la ruta especificada por viewPost 748 00:45:10,840 --> 00:45:16,010 con la matriz con el parámetro de la ID del mensaje. 749 00:45:16,010 --> 00:45:20,360 750 00:45:20,360 --> 00:45:24,660 >> Y ahora para que esta realidad funciones, tenemos que definir esta ruta. 751 00:45:24,660 --> 00:45:27,126 Ruta :: puesto. 752 00:45:27,126 --> 00:45:32,800 Y ahora vamos a llamar a este puesto slash slash ID comentario. 753 00:45:32,800 --> 00:45:36,725 Matriz utiliza la nueva función que acabamos de crear. 754 00:45:36,725 --> 00:45:37,350 BlogController. 755 00:45:37,350 --> 00:45:40,820 756 00:45:40,820 --> 00:45:44,770 CreateComment como createComment. 757 00:45:44,770 --> 00:45:47,430 758 00:45:47,430 --> 00:45:50,120 Grande. 759 00:45:50,120 --> 00:45:56,150 >> Así que ahora espero que si refrescamos esta página y añadir en un comentario, por ejemplo, David Malan. 760 00:45:56,150 --> 00:46:00,630 761 00:46:00,630 --> 00:46:03,920 "Esperamos que esto funciona." 762 00:46:03,920 --> 00:46:05,216 Enviar. 763 00:46:05,216 --> 00:46:09,050 Nosotros, de hecho, tenemos una comentar en este blog. 764 00:46:09,050 --> 00:46:13,760 765 00:46:13,760 --> 00:46:14,260 Fresco. 766 00:46:14,260 --> 00:46:16,790 767 00:46:16,790 --> 00:46:21,430 Así que ahora tenemos un bastante blog funcional. 768 00:46:21,430 --> 00:46:23,180 Sólo vamos a añadir un par de retoques por lo 769 00:46:23,180 --> 00:46:29,090 que tenemos un poco más útil información sobre estos mensajes. 770 00:46:29,090 --> 00:46:32,780 >> Así que si nos remontamos a la primera página, no tenemos ningún sentido 771 00:46:32,780 --> 00:46:38,790 de la cantidad de comentarios son en cada uno de estos puestos. 772 00:46:38,790 --> 00:46:41,340 Así que lo que estamos realmente va que hacer es, dentro de nuestro modelo, 773 00:46:41,340 --> 00:46:51,250 definir una función auxiliar que permite nos permite especificar el número de comentarios 774 00:46:51,250 --> 00:46:53,020 que van con un puesto determinado. 775 00:46:53,020 --> 00:46:56,050 Así que vamos a crear una función auxiliar. 776 00:46:56,050 --> 00:46:58,020 >> Función Pública. 777 00:46:58,020 --> 00:46:58,770 GetNumCommentsStr. 778 00:46:58,770 --> 00:47:02,030 779 00:47:02,030 --> 00:47:07,180 Así que una cadena que especifica el número de comentarios que van junto con ella. 780 00:47:07,180 --> 00:47:12,850 Y lo que vamos a hacer es decir que num = esta comentarios cuenta. 781 00:47:12,850 --> 00:47:15,150 Así que vamos a contar el número de observaciones. 782 00:47:15,150 --> 00:47:22,900 Y si este número es igual a 1, estamos sólo va a volver 1 comentario. 783 00:47:22,900 --> 00:47:28,890 Y luego otra cosa, queremos volver la concatenación de num y comentarios, 784 00:47:28,890 --> 00:47:31,890 por lo que tenemos la pluralización correcta. 785 00:47:31,890 --> 00:47:33,380 Simplemente haga de esto una única oferta. 786 00:47:33,380 --> 00:47:36,040 787 00:47:36,040 --> 00:47:37,640 Uno de los comentarios. 788 00:47:37,640 --> 00:47:41,140 >> Y ahora podemos utilizar esta función directamente dentro de nuestra visión. 789 00:47:41,140 --> 00:47:44,510 Así que si nos remontamos a la mensajes parciales que hemos creado, 790 00:47:44,510 --> 00:47:49,370 ahora queremos realmente mostrar el número de comentarios. 791 00:47:49,370 --> 00:47:52,660 Así que lo que podemos hacer es posterior, utilice esta función 792 00:47:52,660 --> 00:47:57,230 que acabamos de crear a mostrar el número de comentarios. 793 00:47:57,230 --> 00:48:00,440 Así que si ahora nos refrescamos, que hace, de hecho, la pantalla 794 00:48:00,440 --> 00:48:02,240 los comentarios de números que van junto con ella. 795 00:48:02,240 --> 00:48:05,320 >> Si quisiéramos ser de lujo si realmente mirar el código de distribución, 796 00:48:05,320 --> 00:48:07,800 en realidad podemos vincular esto a los comentarios. 797 00:48:07,800 --> 00:48:17,040 Si usted recuerda, hemos definido dentro de la ver que esto no tiene comentarios sección de identificación. 798 00:48:17,040 --> 00:48:22,460 Así que si en realidad quería vincular directamente a la sección de comentarios, lo que 799 00:48:22,460 --> 00:48:36,000 queremos hacer aquí es a href URL del viewPost ruta. 800 00:48:36,000 --> 00:48:40,550 Pase el ID variedad de ID de mensaje. 801 00:48:40,550 --> 00:48:46,140 Y luego queremos ir a específicamente la sección de comentarios. 802 00:48:46,140 --> 00:48:49,900 >> Aquí vamos a cerrar la etiqueta A. 803 00:48:49,900 --> 00:48:52,950 Así que ahora si refrescamos este página, hacemos clic sobre este. 804 00:48:52,950 --> 00:48:54,700 Iremos directamente a la sección de comentarios. 805 00:48:54,700 --> 00:48:57,580 Si tuviéramos un post más largo, se puede ver realmente este rebote hacia abajo. 806 00:48:57,580 --> 00:49:02,668 Pero te darás cuenta de que es no en la parte superior de la página. 807 00:49:02,668 --> 00:49:04,090 Fresco. 808 00:49:04,090 --> 00:49:04,600 Grande. 809 00:49:04,600 --> 00:49:08,582 Así que eso es un bastante sencillo ejemplo de algo sencillo 810 00:49:08,582 --> 00:49:09,790 que se puede hacer con Laravel. 811 00:49:09,790 --> 00:49:13,230 >> Pero usted puede notar aquí que hemos hecho un montón de cosas 812 00:49:13,230 --> 00:49:16,200 con bastante poca cantidad de código. 813 00:49:16,200 --> 00:49:19,420 Laravel nos permite hacer la Consultas SQL detrás de las escenas. 814 00:49:19,420 --> 00:49:21,960 Se hace el saneamiento para nosotros detrás de las escenas. 815 00:49:21,960 --> 00:49:25,940 Nos permite hacer estas relaciones muy fácilmente sin necesidad 816 00:49:25,940 --> 00:49:33,350 hacer cualquier SQL unirse declaraciones a combinar comentarios con lo que los puestos. 817 00:49:33,350 --> 00:49:36,480 Nos permite hacer esto herencia de plantillas 818 00:49:36,480 --> 00:49:43,780 de modo que podemos definir estos anidación archivos, así que no están repetirnos, 819 00:49:43,780 --> 00:49:47,020 al igual que cuando tuvimos que visualización de las entradas del blog 820 00:49:47,020 --> 00:49:50,770 que nosotros no tenemos que copia y pega el código. 821 00:49:50,770 --> 00:49:55,450 >> Y a partir de aquí se puede construir aplicaciones cada vez más complicados. 822 00:49:55,450 --> 00:49:58,370 Se puede imaginar si querido poner en práctica para acceder al sistema, 823 00:49:58,370 --> 00:50:05,532 podríamos decir, traer a un tercero marco que nos permite hacer eso. 824 00:50:05,532 --> 00:50:07,490 Hay un montón de ellos que son muy, muy 825 00:50:07,490 --> 00:50:09,970 grande que puede hacer, como, recuperación de la contraseña. 826 00:50:09,970 --> 00:50:14,450 Y es que una va a enviar restablecer la contraseña de correo electrónico. 827 00:50:14,450 --> 00:50:18,260 Podemos implementar permiso de modo que pueda crear un puesto, 828 00:50:18,260 --> 00:50:20,350 pero alguien más no puede editarlo. 829 00:50:20,350 --> 00:50:24,610 Podemos implementar funcionalidad para borrar los mensajes. 830 00:50:24,610 --> 00:50:28,160 >> Pero usted puede ver aquí que tenemos bastante tanto todos los componentes rudimentarios 831 00:50:28,160 --> 00:50:31,640 para construir algunos muy, muy, aplicaciones web dinámicas y emocionantes. 832 00:50:31,640 --> 00:50:34,035 Así que con eso, creo que estamos bien. 833 00:50:34,035 --> 00:50:35,720 ¿Ustedes tienen alguna pregunta? 834 00:50:35,720 --> 00:50:36,220 ¿Sí? 835 00:50:36,220 --> 00:50:38,090 >> ALTAVOZ 3: ¿Cómo te obtener contenido estático? 836 00:50:38,090 --> 00:50:39,256 >> ERIC Ouyang: El contenido estático. 837 00:50:39,256 --> 00:50:45,520 Así que usted vio antes que cuando tuvimos esto de aquí, este contenido de diseño, 838 00:50:45,520 --> 00:50:49,625 vista maquillaje, tuvimos este sin esta matriz después. 839 00:50:49,625 --> 00:50:56,440 840 00:50:56,440 --> 00:50:59,152 Blog.index, tuvimos este sólo como un archivo estático. 841 00:50:59,152 --> 00:51:00,860 Así que si no aprobamos nada a lo largo de ella, 842 00:51:00,860 --> 00:51:03,340 sólo va a representar el HTML directamente. 843 00:51:03,340 --> 00:51:09,240 Pero si pasamos en este asociativo variedad de puestos, que es dinámicamente 844 00:51:09,240 --> 00:51:12,950 sacado de la base de datos, nos puede hacer que la página dinámica. 845 00:51:12,950 --> 00:51:13,450 Fresco. 846 00:51:13,450 --> 00:51:14,830 Alguna otra pregunta? 847 00:51:14,830 --> 00:51:16,786 848 00:51:16,786 --> 00:51:19,720 ALTAVOZ 3: ¿Cómo compararía Laravel que tal vez algunas otras opciones? 849 00:51:19,720 --> 00:51:20,525 ERIC Ouyang: Seguro. 850 00:51:20,525 --> 00:51:21,025 Sí. 851 00:51:21,025 --> 00:51:23,430 Así Laravel es-- eso es una gran pregunta-- 852 00:51:23,430 --> 00:51:26,190 una de las muchas opciones para los frameworks web. 853 00:51:26,190 --> 00:51:31,160 Así Ruby on Rails es una que es popular. 854 00:51:31,160 --> 00:51:34,590 Creo Twitter solía ser implementado con Ruby on Rails. 855 00:51:34,590 --> 00:51:37,600 Creo que han cambiado desde entonces. 856 00:51:37,600 --> 00:51:40,780 Hay otra que se llama FuelPHP. 857 00:51:40,780 --> 00:51:46,120 >> Así Ruby on Rails utiliza el lenguaje Ruby e implementa un montón de cosas MVC 858 00:51:46,120 --> 00:51:48,200 que vemos aquí. 859 00:51:48,200 --> 00:51:52,320 FuelPHP es otro framework PHP. 860 00:51:52,320 --> 00:51:54,490 Django es uno de mis favoritos. 861 00:51:54,490 --> 00:51:57,010 Es un framework de desarrollo web para Python. 862 00:51:57,010 --> 00:52:01,270 Así que usted puede escribir su aplicación web en Python. 863 00:52:01,270 --> 00:52:03,760 Así que hay un montón de estas opciones. 864 00:52:03,760 --> 00:52:06,170 >> Laravel, creo, por y grande es mi derecho favorita 865 00:52:06,170 --> 00:52:08,232 ahora para PHP sólo porque de los componentes 866 00:52:08,232 --> 00:52:09,440 que hemos hablado antes. 867 00:52:09,440 --> 00:52:11,910 Es Compositor habilitado. 868 00:52:11,910 --> 00:52:15,750 Incluye un muy, muy sistema ORM expresivo. 869 00:52:15,750 --> 00:52:18,800 También tiene una plantilla realmente impresionante lenguaje que algunos de los otros 870 00:52:18,800 --> 00:52:20,630 simplemente no proporcionan. 871 00:52:20,630 --> 00:52:21,400 Y migraciones. 872 00:52:21,400 --> 00:52:23,432 Las migraciones son impresionantes. 873 00:52:23,432 --> 00:52:24,860 Enfriar? 874 00:52:24,860 --> 00:52:25,390 Impresionante. 875 00:52:25,390 --> 00:52:27,560 Bueno, muchas gracias por viendo este seminario, 876 00:52:27,560 --> 00:52:30,650 y buena suerte en sus proyectos finales. 877 00:52:30,650 --> 00:52:31,616