Introducción

Recientemente estuve trabajando en un proyecto con el framework Symfony. Veamos cómo instalarlo y hacer el hola mundo para comenzar a trabajar con el mismo.

Lecturas recomendadas

Únicamente te invito a ver cómo instalar XAMPP en caso de que no tengas un servidor instalado en tu PC.

Comenzar proyecto con Symfony

Debes tener instalado composer. Si no lo tienes, instálalo y agrégalo a la variable PATH. Una vez que lo tengas, navega en la terminal hasta un lugar arriba de donde quieres crear tu proyecto.

Por ejemplo, si tus proyectos los guardas en C:\xampp\htdocs, entonces navega ahí, ya que con el comando que veremos se creará una carpeta. En otras palabras, no es necesario crear la carpeta en donde guardarás tu proyecto.

Una vez ahí, ejecuta:

composer create-project symfony/website-skeleton probarsymfony

En ese caso le indicamos a composer crear un proyecto (create-project) basado en el paquete symfony/website-skeleton y lo más importante es que al final indicamos en cuál directorio instalará nuestro proyecto; lo cual en mi caso es probarsymfony.

Comenzará a instalar las dependencias…

Crear proyecto con symfony 4

Se llevará un poco, hay que esperar. Al final nos dice cómo configurar nuestras bases de datos y hacer tests:

Después de instalar symfony

Lo más importante es que indica cómo ejecutar el proyecto. Veamos qué opciones tenemos.

¿Servir con servidor web o con PHP?

Aquí tenemos dos opciones. Servir nuestro proyecto como se suele hacer normalmente, a través de Apache y todo eso usando XAMPP o un paquete similar. O hacer que PHP sirva el proyecto.

Nota: si elegimos al servidor web, tendremos que agregar index.php al final de la URL para que las rutas sean entendidas. En cambio, si usamos el servidor de PHP no tendremos que hacer nada. Más abajo entenderás esto.

Con servidor web

Si ya tenemos un servidor configurado, por ejemplo XAMPP, entonces creamos nuestro proyecto ahí y navegamos al locahost/nombredetuproyecto/public. En mi caso navego a:

http://localhost/probarsymfony/public/

Y ya está todo servido. Ahora en el navegador puedo ver mi página:

Symfony con servidor web

Con servidor de PHP

Si no tenemos un servidor web o queremos que PHP se encargue, entonces navegamos a donde se creó el proyecto y ejecutamos:

php -S 127.0.0.1:8080 -t public

Ahí iniciamos un servidor en la dirección 127.0.0.1 en el puerto 8080, sirviendo el directorio public. Ahora simplemente navegamos a:

http://127.0.0.1:8080/

Y estará todo servido. En el navegador se ve así:

Servir symfony con PHP

Lo que recomiendo

Es gusto de cada quien, pero mejor usar el servidor web, no el de PHP.

Hola mundo

Independientemente de cómo hayamos servido nuestra app, es hora de hacer nuestro hola mundo. Para ello navegamos a src/Controller y creamos el archivo HolaController.php. Ponemos este contenido dentro de él:

<?php
namespace App\Controller;
 
use Symfony\Component\HttpFoundation\Response;
 
# El nombre de la clase debe coincidir con el nombre del archivo .php 
class HolaController
{
    public function hola()
    {
        return new Response(
            '<html><body>Hola mundo desde <strong>Symfony</strong><br>parzibyte.me</body></html>'
        );
    }
}
?>

Lo único que estamos haciendo es definir nuestro controlador. Dentro de él escribimos una función llamada hola que lo único que hace es regresar una respuesta HTML.

¿Y desde dónde se llaman estas funciones? desde la URL, es decir, cuando el usuario navega a una URL las rutas son traducidas para saber a cuáles funciones llamar.

Eso lo configuramos en config/routes.yaml. Al final del archivo agregamos:

hola_mundo:
  path: /hola
  controller: App\Controller\HolaController::hola

Primero ponemos el nombre de la ruta, por ahora no es importante pero hay que darle un nombre. Y le decimos que su ruta será /hola, para que al ser ejecutada llame a la función hola dentro del controlador HolaController.

Aquí viene la parte que explicaba arriba sobre poner index.php al final de la ruta. Si lo servimos con un servidor web, la ruta es:

http://localhost/probarsymfony/public/index.php/hola

Es decir, tenemos que agregar un index.php entre public y la ruta que definimos en el fichero YAML. Así se ve cuando navegamos a ella:

Hola mundo con symfony y servidor web

En cambio, si estamos sirviendo con PHP navegamos a:

http://127.0.0.1:8080/hola

La cual es una ruta más corta y luce así:

Servir con servidor integrado

Y ya hemos hecho nuestro hola mundo en Symfony.

Alternativa a rutas

Symfony sugiere que, en lugar de configurar todo en el archivo YAML, usemos Anotaciones para definir las rutas en symfony.

¿Qué sigue?

Podemos crear más controladores, y configurar más rutas dentro del fichero de configuración routes.yaml. Más tarde conectaremos estos controladores con Modelos para seguir el patrón MVC e interactuar con bases de datos.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Buenos días. Lo he instalado desde el ejecutable que aparece en la página oficial y también con composer.

    Si instalo la versión para microservicio, console application o API, sale todo bien, sin errores, pero, si lo instalo para aplicación Web tradicional (el que usted utilizó para el ejemplo), arroja lo siguiente:

    No route found for "GET /"

    He intentado solucionarlo agregando un controlador para la ruta, pero persiste el problema.

    De antemano, gracias, Mildred

    • Hola, está usando anotaciones o el archivo yaml? podría compartir un poco de código? si usa anotaciones revise que el comentario está bien definido (ya que debe ser el comentario con astericos en cada línea) y en caso de que use YAML verifique las tabulaciones
      Saludos

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.