Nuevo en Symfony 4.1: Prefijar los nombres de las rutas importadas

En Symfony 3.4 y 4.0 añadimos la posibilidad de prefijar los nombres de las rutas de un controlador mediante la opción name de la anotación @Route. Por ejemplo, en este controlador los nombres de las rutas serán blog_index y blog_post:

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

En Symfony 4.1 hemos mejorado esta funcionalidad para poder usarla también cuando se importan rutas en los archivos de configuración. Gracias a la nueva opción name_prefix puedes prefijar el nombre de todas las rutas que importes por ejemplo de algún bundle o librería de terceros:

app:
    resource: ../controller/routing.yaml

api:
    resource: ../controller/routing.yaml
    # este prefijo se añade al nombre de todas las rutas
    name_prefix: api_
    # este prefijo se añade a todas las URL de los controladores
    prefix: /api

El mismo ejemplo usando XML sería:

<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing
        http://symfony.com/schema/routing/routing-1.0.xsd">
 
    <import resource="../controller/routing.xml" />
    <import resource="../controller/routing.xml" prefix="/api" name-prefix="api_" />
</routes>

Esta funcionalidad fue contribuida por Samuel Roze en el pull request #25178.

Fuente: New in Symfony 4.1: Prefix imported route names

Comentarios

Publicada el

31 de enero de 2018

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.672.552.925

Ver descargas en tiempo real

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