Ver índice de contenidos del libro

6.4. El nombre lógico de los controladores

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 claseBlogControllery el métodoshowAction`. 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.