Tengo un objeto de nodo y estoy tratando de usarlo para obtener una ruta determinada en Drupal 8.
Había drupal_lookup_path()
en Drupal 7 pero no veo ningún equivalente o documentación para Drupal 8.
¿Cuál es la nueva forma "Drupal" de obtener una ruta desde un objeto de nodo?
¿Sería algo tan simple como $node->get('path')
?
Parece una pregunta simple, pero no encuentro absolutamente ninguna documentación al respecto.
Tenga en cuenta que no quiero el alias de ruta para la ruta actual; Quiero el alias de ruta para un nodo arbitrario, dado un objeto de nodo o una ID de nodo.
8
nodes
path-aliases
Jack Ryan
fuente
fuente
Respuestas:
Para obtener la ruta para una identificación de nodo, use AliasManager :: getAliasByPath :
fuente
¿Qué pasa con el uso de Url :
fuente
Url
objeto directamente como$node->toUrl()
.Si solo tiene el nid, la solución de 4k4 de
Funciona genial. Pero si ya tiene un objeto de nodo, puede omitir uno o dos pasos. Los nodos en realidad han incorporado métodos para obtener URL.
Devuelve la URL con alias del nodo.
toUrl () devuelve un objeto url. Ver aquí https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Url.php/class/Url/8.2.x
y toString () es un método del objeto url que devuelve la representación de cadena de la url.
fuente
$node->toUrl()->setAbsolute()->toString()
devolverá la URL absoluta, útil para compartir, etc.También puede usar el método de carga de
path.alias_storage
para devolver una matriz de los detalles de alias o boolean false si no se encontró una ruta para ese nodo.$aliasArray = \Drupal::service('path.alias_storage')->load(['source' => '/node/' . $nid]);
fuente
La mejor manera de obtener la URL del nodo del objeto nodo-
También manejará el lenguaje de nodo.
fuente
Si desea obtener la URL del alias de nodo por idiomas, no olvide usar el idioma de esta manera.
Si lo está utilizando en una clase, no olvide utilizar la inyección de dependencias correctamente.
fuente
Esperaba una solución más "drupalesca", pero esto es lo que hice para hacer el trabajo:
fuente