A pesar de que un controlador puede ser cualquier código ejecutable PHP (una función, un método en un objeto o un Closure
), en Symfony2 un controlador suele ser un método dentro de un objeto de tipo controlador. Los controladores también se conocen como acciones.
// src/Acme/HelloBundle/Controller/HelloController.php
namespace Acme\HelloBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
class HelloController
{
public function indexAction($name)
{
return new Response('<html><body>Hello '.$name.'!</body></html>');
}
}
Truco Ten en cuenta que el controlador es el método indexAction
, que se encuentra dentro de una "clase controlador" (HelloController
). No te dejes confundir por la nomenclatura: una clase controlador simplemente es una forma cómoda de agrupar varios controladores/acciones relacionados. Generalmente, la clase controlador contiene varios controladores (por ejemplo, updateAction
, deleteAction
, etc.).
Este controlador es bastante sencillo, pero vamos a analizarlo línea por línea:
- Línea 3: Symfony2 utiliza los namespaces de PHP 5.3 para asignar un "espacio de nombres" completo a la clase del controlador. La palabra clave
use
importa la claseResponse
, que la misma que nuestro controlador debe devolver. - Línea 6: el nombre de clase es la concatenación del nombre de tu clase controlador (es decir
Hello
) y la palabraController
. Esta es una convención que proporciona consistencia a los controladores y permite hacer referencia sólo a la primera parte del nombre (es decir,Hello
) en la configuración del enrutador. - Línea 8: cada acción en una clase controlador se sufija con
Action
, pero en la configuración de enrutado se utiliza solo el nombre corto de la acción (index
). En la siguiente sección, se crea una ruta asociada a esta acción. Así se verá cómo las partes variables de la ruta (por ejemplo,{name}
) se convierten en argumentos para el método de la acción (por ejemplo,$name
). - Línea 10: el controlador crea y devuelve un objeto
Response
.