¿Cómo se estructura el ciclo de respuesta en un framework?
Cuando trabajamos con frameworks en el desarrollo web, la estructura y el ciclo de respuesta son aspectos clave que facilitan el flujo de información desde el momento en que una solicitud llega al sistema hasta que se envía una respuesta. En este caso, comenzamos creando la estructura básica donde todo inicia en el archivo index, desde donde se procesa la solicitud, se llama al controlador correspondiente y se retorna una respuesta, en este caso, una vista.
¿Cómo se configuran las vistas y plantillas en este contexto?
Inicialmente, dentro de la carpeta de vistas, es fundamental crear un archivo que manejará la vista inicial, en este caso, home.php. Aquí encontrarás contenido básico que simplemente represente la sección "home" de tu sitio. A continuación, configuramos un archivo de plantilla, que aquí se llama layout. Esta plantilla tiene la misión de contener el diseño general en HTML de nuestro sitio web.
Integración de Bootstrap
Para enriquecer el diseño visual del sitio, se integra Bootstrap, un conocido framework CSS que facilita el establecimiento de una apariencia consistente, adaptable y de calidad. Se incorpora un enlace directo hacia Bootstrap para incluir sus estilos y funcionalidades. Esto permite utilizar componentes como contenedores (container), filas y columnas con sus respectivas clases propias del framework.
<!DOCTYPEhtml><htmllang="es"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Mi sitio web</title><!-- Enlace a Bootstrap --><linkhref="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"rel="stylesheet"></head><body><divclass="container"><divclass="row"><!-- Aquí se imprimirá el contenido de la a variable --><?= $contenido; ?></div></div></body></html>
¿Cómo se optimiza el código utilizando plantillas?
Utilizar plantillas en el diseño de un sitio web ofrece múltiples beneficios, como la creación de un diseño uniforme que afectará a todas las páginas. Por ejemplo, se puede implementar un navegador utilizando las clases de Bootstrap para crear un navbar con propiedades específicas de diseño y funcionalidad adaptativas.
El contenedor principal se ajusta a 12 columnas que ofrece Bootstrap, y aquí solo utilizamos ocho para la página de inicio. Se puede incluir contenido en HTML puro, como párrafos con texto de ejemplo (Lorem Ipsum), proporcionando un diseño más realista para cada vista.
¿Cómo se desarrolla el ciclo de solicitud-respuesta en el sistema?
El ciclo comienza en index, donde se carga el sistema de autoload de Composer para gestionar las dependencias, se interpreta la solicitud y se llama al método send. Este método es crucial para ejecutar la configuración y luego identificar el controlador y método correctos que ejecutarán la respuesta.
// Ejemplo del archivo indexrequire'vendor/autoload.php';$app=newApp();$app->send();
Este proceso implica:
Cargar el sistema de autoload de Composer para manejar las dependencias.
Interpretar la solicitud entrante y delegarla al controlador adecuado mediante el método send.
Retornar una instancia de response que contiene el método send que imprimirá los datos.
¿Qué ventajas ofrecen los frameworks en el desarrollo web?
Los frameworks simplifican el desarrollo web al reducir el tiempo y esfuerzo necesario para configurar aspectos técnicos como vistas, plantillas, controladores, espacios de nombres, sistemas de autenticación, conexiones a bases de datos e inclusive almacenamiento en caché. Además, ofrecen protección de seguridad integrada, asegurando que el código esté alineado con las mejores prácticas actualizadas.
Ejercicio práctico
Para poner en práctica lo aprendido, crea una página de "contactos" y una página de "servicios". Esto no solo reforzará tus habilidades, sino que también te dará la oportunidad de experimentar y verificar cómo se maneja el contenido en el marco de las plantillas y la estructura del ciclo de respuesta.
Explorar y practicar con el uso de frameworks te permitirá aprovechar su poder y flexibilidad, facilitando la creación de aplicaciones web robustas y eficientes. ¡Adelante, pon manos a la obra y sigue ampliando tu conocimiento!
Increíble la capacidad pedagógica para explicar algo tan complejo como un framework web. Palmas para el profe.
El sistema de plantillas es algo que me costó trabajo aceptar, pero la verdad es que si hace más fácil el maquetado, ya no se usa include "heder.php" o include "footer.php" etc. Ahora se suele centrar todo el contenido html de la web en una plantilla base con los elementos comunes, y cargar dinámicamente el contenido que queremos mostrar, y es justo eso lo que hace la variable $content, esa variable está guardando la vista que necesitamos y es mandada a llamar en la plantilla, es por eso que nos permite hacer la carga de una manera más dinámica
Crees que sea necesario hacer un curso para dominar el sistema de plantillas de Laravel o Symfony?
@eduerpj1 Podría ser, pero realmente un sistema de plantillas es algo muy fácil de aprender, no se si exista algún curso específico de Blade "El sistema de plantillas de Laravel" pero si no, seguramente lo explican en el curso de Laravel!
Reto cumplido
1. Crear los archivos ContactController.php y ServiceController.php en la carpeta controllers.
.
.
.
2. Crear vistas service.php y contact.php en la carpeta vistas.
.
.
.
3. Añadir los enlaces en el nav de layout.php que se encuentra en la carpeta views.
.
.
Listo
.
muchas gracias
Reto cumplido:
Como le haces para subir las fotos? Cuando le pico a imagen me sale algo así como ![] (url) :(
Debes guardar las imágenes en algún sitio externo y hacer referencia a ellas mediante la url puedes subirlas gratis aquí
Listo!!
Buena explicación y resumen del **flujo **en los Frameworks. Es complicado de entender e incluso un poco lioso, pero lo vas explicando poco a poco.
Reto realizado, muy chévere aprender todo esto!!
Complete los ejercicios :D
Contacto
Servicios
Mi aporte cuando no existe el controlador o el método.
publicfunctionsend(){ $controller=$this->get_controller(); $method = $this->get_method();if(class_exists($controller)){ $object =new $controller;if(method_exists($object,$method)){ $response =call_user_func([ $object, $method
]);}else{// si no existe el metodo llamo al index del controlador $response =call_user_func([$object,'index']);}}else{// si no existe el controlador lo redirijo al home $response =call_user_func([newHome,'index']);}}
Muy buen aportes, en cambio yo lo maneje mediante excepciones y te mostrara la tipica de error 404.
<?php
namespace App\Http\Controllers; use App\Http\Response;//We use Response from this route.classError404Controller{publicfunctionerror(){returnnewResponse('error404');}}
Y finalmente crear una vista, simple o muy elaborada.
He notado que cuando usamos tecnologías como bootstrap no se respeta la semantica
Tanto Frameworks como librerías imponen sus convenciones y reglas, una que me llama la atención es el uso de la etiqueta div para maquetar todo. ¿Dónde queda la semántica a la hora de elegir estas herramientas? ¿Se ve afectada? ¿Cómo la implementan?
Hola,
Supongo que más "ejemplo" de uso de las "views" que de semántica. Aunque tienes razón, el hecho de usar cualquier framework CSS no es sinónimo de no respetar la semántica.
la semántica la pone el implementador, los fw de CSS se encargan de los estilos no de la semántica, otra cosa es la claridad del código, para lograr un determinado efecto unos fw usarán 3 clases, mientras que otros usarán 5 clases (por ejemplo), unos serán más pesados que otros, yo por colaboración elijo Bootstrap ya que me parece es el más ampliamente usados de estos, pero he escuchado que Tailwind es mucho más ligero, tengo pendiente el estudiarlo.
Desde hace unas clases atras tengo un problema con las vistas y el método Request.
El error:
Fatal error:UncaughtError:Class'App\Http\Controllers\DataController' not found inC:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\app\Http\Request.php:49Stack trace: #0C:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\public\index.php(7):App\Http\Request->send() #1{main} thrown inC:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\app\Http\Request.php on line 49
Yo probaría dos cosas. Primero: fijate con var_dump($segments) si los indices 1 y 2 son realmentes los del controlador y método respectivamente. A mi me pasó (usando xampp) que los indices eran 3 y 4.
Segundo: agrega el require DIR . '/../../vendor/autoload.php'
aunque esto no debería afectarte en nada, yo no lo tengo y funciona bien.
En efecto, los problemas eran los indices del arreglo segmento.
Como el maestro, tiene una url corta,como localhost:platzi.test por ello usa 1 y 2
Yo al usar toda la ruta
localhost/Data/PHP/CursoPlatzi/IntroFrameworks/public/
entonces debo usar los índices 6 y 7.
Gracias por la ayuda :)
¿Cómo cargó un estilo .css de forma local o las imágenes?
Puedes usar la sintaxis para vistas propia de PHP ( <?=?> ).
Para el css puedes hacerlo dentro de la etiqueta <head> de tu layout.php. De esta forma:
Me pueden ayudar con este error
Fatal error: Uncaught Error: Class "App\Http\Controllers\LaravelController" not found in C:\xampp\htdocs\Laravel\app\Http\Request.php:54 Stack trace: #0 C:\xampp\htdocs\Laravel\public\index.php(6): App\Http\Request->send() #1 {main} thrown in C:\xampp\htdocs\Laravel\app\Http\Request.php on line 54
Hola. Tu controlador "LaravelController" realmente esta creado en App\Http\Controllers ?
Saludos
Como lo solucionaste?
con mucho esfuerzo llegue aquí
Excelente clase Italo...
Quedo claro el concepto.
Me gusta la pedagogia del profesor, explica cada componente en detalle.
Aporte del reto
Flujo de información del Framework
Hola, alguien me puede ayudar por favor. No me esta tomando los estilos en la pagina y el nav no me lo muestra.
Te falta el script del js, pero independientemente de eso, deberia funcionar , revisa si en la consola te da algun tipo de error..
Hola @RicardoRA20, gracias. Estaba utilizando XAMPP como servidor web y me mostraba solo lo que subí en el comentario anterior. Ahorita estoy utilizando Laragon y ya me sale el nav pero ahora me muestra lo siguiente: