Generar links en Drupal 8 fácilmente

Imagen
boya de pesca

Crear links en Drupal 8 es algo muy sencillo, pero si queremos hacerlo utilizando las herramientas que nos proporciona Drupal, puede ser un poco lioso si no conocemos las utilidades que nos provee.

Recientemente he tenido que trabajar generando links de diferentes tipos y características, de modo que aquí va un articulo para que a todo el mundo le sea de ayuda.

Crear un link básico

Para crear los links vamos a utiliza la clase Link, la cual provee varios métodos para ayudarnos a crearlos. Primero vamos a ver el ejemplo más sencillo y básico que podemos tener.

$url_basica = Url::fromUri('http://nireneko.com');
$link_basico = Link::fromTextAndUrl('Link basico', $url_basica);

Lo que estamos haciendo es crear un objeto Url con la dirección (puede ser una uri o url) a donde crearemos en enlace. Una vez tenemos el objeto creado, utilizamos la clase Link para ponerle un texto y prepararlo.

Y listo, no necesitamos nada más, ya podemos pasar lo que nos devuelve la clase Link a una plantilla y renderizarlo.

Crear un link con parámetros

Algo un poco mas avanzado, es crear un link de una ruta utilizando parámetros, realmente es lo mismo, crear un objeto Url y utilizar la clase Link para generar el link.

$url_con_parametro = Url::fromRoute('nireneko.parameter', ['node' => $node->id()]);
$link_url_parametro = Link::fromTextAndUrl('Link url parametro', $url_con_parametro);

Esto es un poquito mas complicado, ya que tenemos que tener el nombre de la ruta, y saber que parámetros admite; una vez sabemos esto, utilizamos el método estático “::fromRoute” y le pasamos como parámetros la ruta y los parámetros en un array.

Opciones avanzadas en links

Por último un ejemplo sobre como añadir opciones a los links, en este caso, vamos a añadir 2 clases, que se podrían utiliza para añadir estilos al link.

$url_opciones = Url::fromUri('http://nireneko.com');
$opciones = [
      'attributes' => [
        'class' => [
          'nireneko',
          'nireneko-link'
        ],
      ],
    ];
$url_opciones->setOptions($opciones);
$link_opciones = Link::fromTextAndUrl('Link con opciones', $url_opciones);

Aquí la única diferencia, es que al objeto Url le añadimos un array con el método “->setOptions()” donde están las clases que vamos a añadirle al link.

Extra:

Por último, os dejo un archivo con todo el código y muchos mas ejemplos. Para que el código funcione al probarlo, debe existir al menos un nodo, ya que el código obtiene el primer nodo que existente, si solo queremos ver los ejemplos, no hace falta que nos preocupemos por esto.

 

Archivo

Artículos relacionados: