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 plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Descargas totales de Symfony

1.846.621.306

Ver descargas en tiempo real

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