WEBVTT

00:00:00.036 --> 00:00:03.976 align:middle
Como esta página acaba de
cargarse sin ningún error,

00:00:04.396 --> 00:00:09.416 align:middle
pensamos que acabamos de registrar con éxito
un mensaje a través del servicio de registro.

00:00:09.606 --> 00:00:12.366 align:middle
Pero... ¿dónde van los mensajes de registro?

00:00:12.796 --> 00:00:13.676 align:middle
¿Cómo podemos comprobarlo?

00:00:14.486 --> 00:00:20.016 align:middle
El servicio de registro lo proporciona una biblioteca
que hemos instalado antes, llamada monolog.

00:00:20.586 --> 00:00:22.366 align:middle
Formaba parte del paquete de depuración.

00:00:22.896 --> 00:00:29.176 align:middle
Y puedes controlar su configuración dentro
del archivo config/packages/monolog.yaml,

00:00:29.516 --> 00:00:33.666 align:middle
incluyendo dónde se registran los mensajes
de registro, como por ejemplo en qué archivo.

00:00:34.076 --> 00:00:36.646 align:middle
Nos centraremos más en la
configuración en el próximo tutorial.

00:00:37.186 --> 00:00:43.396 align:middle
Pero una forma de ver siempre los mensajes de
registro de una petición es a través del perfilador

00:00:44.106 --> 00:00:45.606 align:middle
Esto es muy útil.

00:00:46.856 --> 00:00:52.646 align:middle
Ve a la página de inicio, haz clic en cualquier enlace
de la barra de herramientas de depuración web...

00:00:52.646 --> 00:00:54.896 align:middle
y luego ve a la sección Registros.

00:00:55.886 --> 00:01:00.266 align:middle
Ahora veremos todos los mensajes de
registro que se hicieron sólo durante

00:01:00.266 --> 00:01:02.756 align:middle
esa última petición a la página de inicio.

00:01:03.186 --> 00:01:05.226 align:middle
¡Genial! Excepto que...

00:01:05.306 --> 00:01:08.646 align:middle
nuestro mensaje de registro se
realiza en una ruta de la API...

00:01:09.186 --> 00:01:14.516 align:middle
¡y los puntos finales de la API no tienen una barra de
herramientas de depuración web en la que podamos hacer clic!

00:01:15.216 --> 00:01:16.486 align:middle
¿Estamos atascados?

00:01:17.096 --> 00:01:20.306 align:middle
¡No! Actualiza esta página una vez más...

00:01:20.746 --> 00:01:24.466 align:middle
y luego ve manualmente a /_profiler.

00:01:27.246 --> 00:01:28.026 align:middle
Esto es...

00:01:28.166 --> 00:01:31.386 align:middle
una especie de puerta secreta
al sistema de perfiles...

00:01:31.816 --> 00:01:36.126 align:middle
y esta página muestra las diez últimas
peticiones realizadas a nuestro sistema.

00:01:36.966 --> 00:01:41.146 align:middle
La segunda en la parte superior es la
petición de la API que acabamos de hacer.

00:01:41.146 --> 00:01:44.736 align:middle
Haz clic en el pequeño
enlace del token para ver...

00:01:45.286 --> 00:01:49.226 align:middle
¡sí! ¡Estamos viendo el perfil
de esa petición de la API!

00:01:50.056 --> 00:01:51.466 align:middle
En la sección de Registros...

00:01:51.766 --> 00:01:52.996 align:middle
¡ahí está!

00:01:53.236 --> 00:01:55.976 align:middle
Devuelve la respuesta de la
API para la canción 5 ...

00:01:56.606 --> 00:01:59.516 align:middle
e incluso puedes ver la
información extra que hemos pasado.

00:02:00.636 --> 00:02:03.976 align:middle
Vale, los servicios son tan importantes que...

00:02:03.976 --> 00:02:05.836 align:middle
Quiero hacer un ejemplo rápido más.

00:02:06.256 --> 00:02:07.806 align:middle
Vuelve a VinylController.

00:02:08.856 --> 00:02:14.026 align:middle
El método render() es en realidad un
atajo para obtener el servicio " Twig",

00:02:14.296 --> 00:02:17.616 align:middle
llamar a algún método de ese objeto
para representar la plantilla...

00:02:17.786 --> 00:02:22.896 align:middle
y luego poner la cadena HTML
final en un objeto Response.

00:02:23.736 --> 00:02:26.936 align:middle
Es un gran atajo y deberías usarlo.

00:02:27.396 --> 00:02:33.636 align:middle
Pero! Como reto, ¿podríamos renderizar
una plantilla sin utilizar ese método?

00:02:34.236 --> 00:02:34.916 align:middle
¡Por supuesto!

00:02:35.256 --> 00:02:36.306 align:middle
Hagámoslo.

00:02:37.056 --> 00:02:41.316 align:middle
Primer paso: encontrar el servicio que
hace el trabajo que necesitas hacer.

00:02:41.856 --> 00:02:44.816 align:middle
Así que tenemos que
encontrar el servicio Twig.

00:02:44.816 --> 00:02:51.896 align:middle
Volvamos a hacer nuestro truco: php
bin/console debug:autowiring twig Y...

00:02:52.146 --> 00:02:58.186 align:middle
¡sí! Al parecer, el tipo de pista que
tenemos que utilizar es Twig\Environment.

00:02:59.206 --> 00:03:06.346 align:middle
¡De acuerdo! Vuelve a nuestro método, añade un argumento,
escribe Environment, y pulsa el tabulador para autocompletarlo

00:03:06.346 --> 00:03:09.436 align:middle
y que PhpStorm añada la sentencia use.

00:03:10.206 --> 00:03:11.376 align:middle
Llamémoslo $twig.

00:03:12.736 --> 00:03:20.256 align:middle
A continuación, en lugar de usar render,
digamos $html = y luego $twig->.

00:03:21.266 --> 00:03:27.146 align:middle
Al igual que con el registrador, no necesitamos
saber qué métodos tiene esta clase, porque,

00:03:27.276 --> 00:03:31.906 align:middle
gracias a la sugerencia de tipo, PhpStorm
puede decirnos todos los métodos.

00:03:32.576 --> 00:03:36.076 align:middle
El método render() parece que
es probablemente lo que queremos.

00:03:36.816 --> 00:03:40.176 align:middle
El primer argumento es el nombre de
la cadena de la plantilla a renderizar

00:03:40.326 --> 00:03:43.486 align:middle
y el argumento $context contiene las variables.

00:03:43.706 --> 00:03:48.296 align:middle
Así que... tiene los mismos
argumentos que ya estábamos pasando.

00:03:48.296 --> 00:03:52.366 align:middle
Para ver si funciona, dd($html).

00:03:53.736 --> 00:03:54.726 align:middle
¡Hora de probar!

00:03:55.516 --> 00:03:56.586 align:middle
Dirígete a la página de inicio...

00:03:57.536 --> 00:04:02.046 align:middle
y ¡sí! ¡Acabamos de renderizar
una plantilla manualmente!

00:04:02.256 --> 00:04:03.896 align:middle
¡Realmente increíble!

00:04:04.576 --> 00:04:13.926 align:middle
Y podemos terminar esta página envolviendo eso
en una respuesta: return new Response($html).

00:04:13.926 --> 00:04:14.606 align:middle
Y ahora...

00:04:14.966 --> 00:04:16.916 align:middle
¡la página funciona!

00:04:17.306 --> 00:04:22.766 align:middle
Y entendemos que la verdadera forma de renderizar
una plantilla es a través del servicio Twig.

00:04:22.766 --> 00:04:28.786 align:middle
Algún día te encontrarás en una situación
en la que necesites renderizar una plantilla

00:04:28.976 --> 00:04:31.446 align:middle
pero no estés en un controlador...

00:04:31.806 --> 00:04:36.486 align:middle
y por tanto no tienes el método de
acceso directo $this->render().

00:04:37.486 --> 00:04:42.856 align:middle
Saber que hay un servicio Twig que puedes recuperar
será la clave para resolver ese problema.

00:04:43.316 --> 00:04:45.506 align:middle
Más sobre esto en el próximo tutorial.

00:04:45.986 --> 00:04:51.506 align:middle
Pero en una aplicación real, en un controlador,
no hay razón para hacer todo este trabajo extra.

00:04:51.686 --> 00:04:53.846 align:middle
Así que voy a revertir esto...

00:04:54.206 --> 00:04:56.086 align:middle
y volver a utilizar render().

00:04:56.516 --> 00:05:00.106 align:middle
Y... entonces ya no necesitamos
autocablear ese argumento...

00:05:00.486 --> 00:05:03.006 align:middle
e incluso podemos limpiar la declaración use.

00:05:04.326 --> 00:05:08.216 align:middle
Aquí están los tres grandes, gigantescos
e importantes puntos de partida.

00:05:08.296 --> 00:05:13.126 align:middle
En primer lugar, Symfony está repleto
de objetos que hacen su trabajo...

00:05:13.506 --> 00:05:15.536 align:middle
que llamamos servicios.

00:05:15.536 --> 00:05:17.716 align:middle
Los servicios son herramientas.

00:05:17.776 --> 00:05:22.166 align:middle
Segundo, todo el trabajo en
Symfony lo hace un servicio...

00:05:22.516 --> 00:05:24.106 align:middle
incluso cosas como el enrutamiento.

00:05:25.026 --> 00:05:32.056 align:middle
Y en tercer lugar, podemos utilizar los servicios para ayudarnos a
realizar nuestro trabajo mediante la autoconexión de los mismos.

00:05:32.746 --> 00:05:38.066 align:middle
En el próximo tutorial de esta serie,
profundizaremos en este concepto tan importante.

00:05:38.946 --> 00:05:45.756 align:middle
Pero antes de que terminemos este tutorial,
quiero hablar de otra cosa increíble y

00:05:45.756 --> 00:05:52.876 align:middle
asombrosa: Webpack Encore, la clave para
escribir CSS y JavaScript de forma profesional. A

00:05:53.576 --> 00:05:59.286 align:middle
lo largo de estos últimos capítulos, vamos
a dar vida a nuestro sitio e incluso a hacerlo

00:05:59.286 --> 00:06:02.456 align:middle
tan responsivo como una
aplicación de una sola página
