Nuevo en Symfony 3.4: Prefijar todas las rutas de un controlador

En las aplicaciones Symfony, puedes añadir una anotación @Route en la clase del controlador para definir la parte de la URL que es común a todas las acciones de ese controlador:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 
/**
 * @Route("/blog")
 */
class BlogController extends Controller
{
    /**
     * @Route("/", defaults={"page": "1"}, name="blog_index")
     * @Route("/pagina/{page}", name="blog_index_paginated")
     */
    public function indexAction($page, $_format) { ... }
 
    /**
     * @Route("/posts/{slug}", name="blog_post")
     */
    public function showAction(Post $post) { ... }
}

En este ejemplo, todas las acciones del controlador tienen una URL que empieza por /blog, así que en vez de repetirla en cada acción, se define en la anotación @Route de la clase. Así, las URL de la acción index son /blog/ y /blog/pagina/..., mientras que la URL de la acción show es /blog/posts/...

Como se puede ver en este mismo ejemplo, una práctica común al crear este tipo de controladores es utilizar nombres de rutas que siguen un patrón (blog_index, blog_post, etc.) Así que en Symfony 3.4 hemos mejorado la anotación @Route para que también permita definir el prefijo común de todas las rutas del controlador.

Para ello, define el prefijo común mediante la propiedad name de la anotación @Route. El siguiente ejemplo es equivalente al anterior:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 
/**
 * @Route("/blog", name="blog_")
 */
class BlogController extends Controller
{
    /**
     * @Route("/", defaults={"page": "1"}, name="index")
     * @Route("/pagina/{page}", name="index_paginated")
     */
    public function indexAction($page, $_format) { ... }
 
    /**
     * @Route("/posts/{slug}", name="post")
     */
    public function showAction(Post $post) { ... }
}

Esta funcionalidad fue creada por Fabien Potencier en el Pull Request #24031.

Fuente: New in Symfony 3.4: Prefix all controller route names

Comentarios

Compartir en

Publicada el

7 de septiembre de 2017

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Descargas totales de Symfony

1.035.452.926

Ver descargas en tiempo real

Síguenos en @symfony_es para acceder a las últimas noticias.