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
o utilizar el trait ContainerAwareTrait
si tu versión de PHP es 5.4 o superior. En ambos casos, el contenedor de servicios de Symfony estará disponible 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.