Un controlador es una función PHP creada por ti y que se encarga de obtener la información de la petición HTTP y de generar y devolver la respuesta HTTP (en forma de objeto de tipo Response
de Symfony2). La respuesta puede ser una página HTML, un documento XML, un array JSON serializado, una imagen, una redirección a otra página, un error de tipo 404 o cualquier otra cosa que se te ocurra. El controlador contiene toda la lógica que tu aplicación necesita para generar el contenido de la página.
Para ver lo sencillo que es esto, echemos un vistazo a un controlador real de Symfony2.
El siguiente controlador genera una página que simplemente imprime Hello world!
:
use Symfony\Component\HttpFoundation\Response;
public function helloAction()
{
return new Response('Hello world!');
}
El objetivo de un controlador siempre es el mismo: crear y devolver un objeto Response
. Para ello, a veces obtiene información de la petición, o busca un recurso en la base de datos, envía un correo electrónico, o guarda información en la sesión del usuario. Independientemente de lo que haga, el controlador siempre devuelve un objeto Response
que se utiliza para generar la respuesta que se envía al usuario.
Como ves ni Symfony se comporta de forma automágica ni existe más requisitos de los cuales preocuparse. Estos son algunos ejemplos de casos comunes:
- Controlador A prepara un objeto
Response
que genera el contenido HTML de la portada del sitio. - Controlador B lee el parámetro
slug
de la petición para cargar una entrada del blog desde la base de datos y crea un objetoResponse
para mostrar ese blog. Si elslug
no se puede encontrar en la base de datos, crea y devuelve un objetoResponse
con un código de estado de error 404. - Controlador C procesa la información enviada en un formulario de contacto: lee la información del formulario desde la petición, guarda la información del contacto en la base de datos y envía mensajes de correo electrónico con la información de contacto al administrador del sitio web. Por último, crea un objeto
Response
que redirige el navegador del cliente desde el formulario de contacto a la página de agradecimiento.