Ya hemos aprendido a crear un nuevo proyecto en Symfony y podríamos decir que el siguiente paso corresponde a crear la primera página en Symfony. Para una primera página en Symfony solamente necesitamos dos cosas; un controlador y una ruta:
1. – Crear el controlador
No debemos olvidarnos de que Symfony utiliza el Modelo Vista Controlador donde separamos las funcionalidades. Si podemos empezar a crear una nueva página, podríamos empezar creando un nuevo controlador.
Los controladores son clases que normalmente extienden de la clase Controller, un bundle que incluye de fábrica Symfony, y que agiliza la creación de las clases que van a manejar la funcionalidad de la aplicación.
Los controladores se encuentran alojados en el directorio src/AppBundle/Controller. El directorio src es uno de los directorios más importantes y donde estaremos trabajando el 99% cuando desarrollemos en la aplicación. Aquí encontraremos todos los archivos PHP, normalmente son clases.
Para empezar, a los controladores debemos agregarles el espacio de nombre del Controller. Si tienes dudas de qué o cómo manejar espacios de nombres, te remito al tutorial de Laravel donde explico los espacios de nombres.
También debemos incorporar un par de clases esenciales, las clases de Response y Route.
Por último agregamos a la clase una función que por ejemplo, genere un número aleatorio entre 0 y 100 que llamaremos numberAction(), el nombre es indistinto. Nuestro controlador tendría el siguiente aspecto:
<?php // src\AppBundle\Controller namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class LuckyController extends Controller { public function numberAction() { $number = mt_rand(0, 100); return new Response( '<html><body>Lucky number: ' . $number . '</body></html>' ); } }
2. – Agregar el enrutado
A diferencia de Laravel, que cuenta con un archivo independiente de rutas llamado web.php, Symfony nos permite agregar la ruta directamente en el controlador. De hecho, debemos agregar la ruta justo antes del método que contiene la clase en formato comentario y que anteponga la sentencia @Route:
<?php // src\AppBundle\Controller namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class LuckyController extends Controller { /** * @Route("/lucky/number") */ public function numberAction() { $number = mt_rand(0, 100); return new Response( '<html><body>Lucky number: ' . $number . '</body></html>' ); } }
Como se ve, hemos agregado la ruta /lucky/number dentro del @Route. Esto quiere decir que si ingresamos esta dirección dentro del navegador, se nos devolverá un mensaje con un número generado aleatoriamente. De ahí que hayamos agregado la clase Response, para que cuando creemos un objeto de respuesta se nos devuelva el código HTML que hemos escrito.
Más adelante entraremos en profundidad sobre cómo establecer las rutas en profundidad con una entrada dedidacada totalmente al Routing.
Este es el enlace al commit que corresponde al repositorio de este tutorial. En este commit he modificado la respuesta porque ya he usado Twig, el modificador de plantillas del core de Symfony. Algo que se verá posteriormente.
Gracias por compartir tu precioso conocimiento con nosotr@s 🙂