Pasar al contenido principal
Imagen
Laptop

Crear enlaces y URL en Drupal

La clase Drupal\Core\Url de Drupal es una gran utilidad para generar URL y redirigir a rutas específicas. Además del método ::fromRoute() , esta clase proporciona otros métodos estáticos muy útiles. A continuación, vamos a hacer un repaso y descripción general de los métodos estáticos clave y cómo se pueden utilizar.

Url::fromUri()

Este método se utiliza para crear un objeto URL a partir de una cadena "URI", como una URL externa o una URL interna personalizada.

Ejemplo de uso:

// External URL
$url = Url::fromUri('https://www.google.com');
// Internal URL with query parameters
$url = Url::fromUri('internal:/node/60', ['query' => ['key' => 'value']]);
// Custom scheme
$url = Url::fromUri('base:/my-personal-page');

 

Url::fromUserInput()

Este método se utiliza para crear una URL en función de la entrada del usuario. Acepta una ruta relativa que los usuarios pueden introducir en el navegador y la resuelve en un objeto URL.

Ejemplo de uso:

$url = Url::fromUserInput('/my-personal-page');
// Adding query parameters
$url = Url::fromUserInput('/my-personal-page', ['query' => ['filter' => 'active']]);

 

Url::fromInternalUri()

Crea un objeto URL a partir de una URI interna, utilizada específicamente cuando se trabaja dentro de las rutas internas de Drupal.

Ejemplo de uso:

$url = Url::fromInternalUri('node/60');
// Internal URI with options
$url = Url::fromInternalUri('node/60', ['absolute' => TRUE]);

 

Url::createFromPath()

Este método está obsoleto en las versiones modernas de Drupal, pero se utilizaba para crear un objeto URL basado en una ruta.

Ejemplo de uso:

$url = Url::createFromPath('/custom-path');

 

Url::fromString()

Este método se utiliza para crear un objeto URL a partir de una ruta o URL basada en una cadena.

Ejemplo de uso:

// Creating from a string path
$url = Url::fromString('/user/login');
// Including query parameters
$url = Url::fromString('/node/999', ['query' => ['destination' => 'home']]);

 

Url::fromRouteMatch()

Este método crea un objeto URL a partir del objeto RouteMatch actual, lo que resulta útil cuando se trabaja con el sistema de enrutamiento en los controladores.

Ejemplo de uso:

// Get the current route match (usually done within a controller)
$route_match = \Drupal::routeMatch();
// Create a URL object from the route match
$url = Url::fromRouteMatch($route_match);

 

Parámetros comunes en el array $options

Cuando se crea un objeto URL en Drupal con los métodos fromRoute(), fromUri(), u otros, el array $options te permite pasar parámetros adicionales que modifican el comportamiento de la URL generada. Las opciones comunes que se pueden enviar son:

  • absolute: Si TRUE, genera una URL absoluta. Si FALSE(predeterminado), genera una URL relativa.
  • query: Una matriz de parámetros de cadena de consulta para agregar a la URL.
  • fragment: Agrega un identificador de fragmento a la URL (por ejemplo, #section1)
  • language: Un LanguageInterfaceobjeto para generar la URL en un idioma específico.
  • https: Fuerza el esquema a HTTPS si se establece en TRUE. Esta opción está obsoleta en Drupal moderno ya que HTTPS debe manejarse a nivel de servidor.
  • base_url: Una URL base para usar en lugar de la predeterminada.
  • prefix:  Agrega un prefijo de ruta (como un prefijo de idioma o una sección del sitio).
  • entity_type y entity: Para generar URL basadas en entidades.

 

Algunos ejemplos

¡Ahora vamos a mostrar algunos ejemplos poniendo en práctica todo lo visto hasta este punto!

En este primer ejemplo vamos a generar una URL para una ruta, agregar parámetros de consulta, hacerla absoluta y agregar un identificador de fragmento.

// Generate a URL to a specific route with options.
$options = [
 'absolute' => TRUE, // Make the URL absolute
 'query' => ['page' => 1, 'category' => 'food'], // Add query parameters
 'fragment' => 'comments', // Add a fragment identifier
];
// Create a URL to the 'entity.node.canonical' route for node 96.
$url = Url::fromRoute('entity.node.canonical', ['node' => 96], $options);
// Convert the Url object to a string.
$url_string = $url->toString();

La URL generada sería la siguiente: http://www.my-web.com/node/96?page=1&category=food#comments

En el siguiente ejemplo vamos a construir una URL con opciones utilizando Url::fromUri().

// Generate an external URL with query parameters and absolute URL option.
$options = [
'absolute' => TRUE, // Generate an absolute URL
'query' => ['ref' => 'newsletter'], // Add query parameters
'fragment' => 'subscribe', // Add fragment identifier
];
$url = Url::fromUri('https://www.personal-web.com/subscribe', $options);
// Convert to a string.
$url_string = $url->toString();

La URL generada sería la siguiente: https://www.personal-web.com/subscribe?ref=newsletter#subscribe

 

Mostrar URL en una plantilla Twig

Es posible pasar URL's y enlaces a una plantilla Twig. En el siguiente caso de uso, vamos a enviar un enlace desde el controlador y renderizarlo desde una plantilla Twig.

Controlador (mymodule/src/Controller/SampleController.php):

public function myPage() {
$url = Url::fromRoute('entity.node.canonical', ['node' => 1]);
$link = Link::fromTextAndUrl('Go to Node 1', $url);

return [
  '#theme' => 'my_template',
  '#my_link' => $link->toRenderable(),
];
}

Plantilla Twig (mytheme/templates/mytemplate.html.twig):

<div>
{{ my_link }}
</div>

 

¿Y tú, cómo haces uso de las URL en Drupal?

Etiquetas

Únete a la Comunidad Drupal Sapiens

Guarda contenidos que te interesen, conecta con otras personas de la comunidad, contribuye para ganar premios y mucho más.

Inicia sesión o crea una cuenta aquí

Destacado

Últimas noticias