Ver índice de contenidos del libro

5.4. La clase base del controlador

Symfony2 proporciona una clase Controller base, que contiene varias utilidades para las tareas más comunes de los controladores y también incluye un acceso a cualquier otro recurso que necesite la clase del controlador. Para acceder a todos estos métodos útiles, haz que la clase que contiene tus acciones herede de la clase Controller.

Para ello, añade la siguiente instrucción use al principio de tu clase controlador y luego modifica la declaración de HelloController para extenderla:

// src/Acme/HelloBundle/Controller/HelloController.php
 
namespace Acme\HelloBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
 
class HelloController extends Controller
{
    public function indexAction($name)
    {
      return new Response('<html><body>Hello '.$name.'!</body></html>');
    }
}

Este cambio no afecta al funcionamiento del controlador. En la siguiente sección, se explican los helpers o métodos útiles que la clase base del controlador pone a tu disposición. Estos métodos sólo son atajos para utilizar más fácilmente las funcionalidades del núcleo de Symfony2 (que también se pueden utilizar sin esta clase base, pero no de forma tan cómoda). Una buena manera de aprender en la práctica esas funcionalidades del núcleo es ver el código fuente de esa clase base en el archivo Symfony\Bundle\FrameworkBundle\Controller\Controller.

Truco Extender la clase base Controller en Symfony es opcional. Aunque muchos programadores lo hacen para utilizar los atajos, no es obligatorio su uso. Si lo prefieres, puedes extender la clase Symfony\Component\DependencyInjection\ContainerAware, para poder acceder al contenedor de servicios de Symfony a través de la propiedad container.

Nota También puedes definir los controladores como servicios. Definirlos así es opcional, pero si lo haces, tendrás un mayor control de las dependencias que se inyectan en tus controladores.