Drupal 8 integra el componente de enrutamiento de Symfony2

Drupal 8, cuya fecha prevista de salida es septiembre de 2013, continúa su proceso de symfonización. El último componente en integrarse ha sido el componente de enrutamiento, encargado tanto de generar rutas como de decidir qué código se ejecuta para responder a cada URL solicitada por los usuarios.

Teniendo en cuenta que Drupal cuenta con unas 1.000 rutas, el enrutamiento es una de las partes más críticas del sistema. En Drupal 7, cada módulo podía crear sus propias rutas mediante un mecanismo llamado hook_menu (ver sus detalles en la API de Drupal 7). Básicamente, consiste en definir las diferentes partes de las rutas mediante arrays asociativos:

function example_menu() {
 
  $items['foo/bar/%node'] = array(
    'title'            => 'My title',
    'page callback'    => 'example_page',
    'page arguments'   => array(2),
    'access callback'  => 'user_access',
    'access arguments' => array('my permission'),
  );
 
  return $items;
}
 
function example_page($node) {
  return "El contenido de la página ...";
}

El nuevo sistema, basado en el componente routing de Symfony2, define las rutas mediante clases de tipo Route que después se añaden a una colección de rutas:

$route = new Route('router_test/test1', array(
    '_controller' => '\Drupal\router_test\TestControllers::test1'
));
 
$collection = new RouteCollection();
$collection->add('router_test_1', $route);

Si la ruta enlaza directamente con un contenido simple, puedes reemplazar la opción _controller por _content:

$route = new Route('router_test/test2', array(
    '_content' => '\Drupal\router_test\TestControllers::test2'
));
 
$collection->add('router_test_2', $route);

Aunque todavía falta mucho trabajo para integrar por completo el componente de enrutamiento de Symfony en Drupal 8, algún programador ya ha comentado que la nueva API no le convence. De hecho, sugiere que se cree alguna función simple similar a Drupal 7 que convierta después la información a la API de bajo nivel de las rutas de Symfony2.

Fuente: New Symfony-based routing system

Comentarios

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

4 de octubre de 2012

Proyectos Symfony destacados

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

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