Todas las rutas definen una variable llamada _controller
que indica el controlador que se debe ejecutar. El valor de esta variable es una cadena de texto que indica el controlador utilizando una notación especial llamada nombre lógico del controlador. Este nombre se divide en tres partes, cada una separada por dos puntos:
bundle:controlador:acción
Así que por ejemplo, el valor AcmeBlogBundle:Blog:show
haría referencia al bundle + AcmeBlogBundle, la clase
BlogControllery el método
showAction`. El código del controlador podría ser algo como lo siguiente:
// src/Acme/BlogBundle/Controller/BlogController.php
namespace Acme\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class BlogController extends Controller
{
public function showAction($slug)
{
// ...
}
}
Ten en cuenta que Symfony sufija automáticamente la cadena Controller
al nombre de la clase (Blog
se transforma en BlogController
) y Action
al nombre del método (show
se transforma en showAction
).
También es posible hacer referencia al controlador utilizando el namespace completo de su clase: Acme\BlogBundle\Controller\BlogController::showAction
. Pero si lo piensas un poco, es mucho mejor utilizar el nombre lógico, poruqe además permite una mayor flexibilidad.
Nota Además de utilizar el nombre lógico o el namespace completo de la clase, Symfony define una tercera forma de referirse al controlador. Este método utiliza un solo separador de dos puntos (por ejemplo, service_name:indexAction
) y puedes emplearlo cuando defines tus controladores como servicios, tal y como se verá más adelante.