Bir düğüm diğer adından düğüm kimliğini nasıl alabilirim?


Yanıtlar:


25

Doğrudan bir işlev olup olmadığından emin değilim, ancak bir yol iç yolu aramak için yol takma adı hizmetini kullanmak ve daha sonra bir nesne yükü gerçekleştirmek için geçerli bir düğüm kimliği için regex etmektir:

$path = \Drupal::service('path.alias_manager')->getPathByAlias('/this-is-the-alias');
if(preg_match('/node\/(\d+)/', $path, $matches)) {
  $node = \Drupal\node\Entity\Node::load($matches[1]);
}

4
Nedense, $pathbazen eşittir /this-is-the-alias. Kök yolunun ( node/{id}) başka bir takma adı #migrationstruggles olduğu bir zamanlardı, ancak diğer takma adlarla da mevcuttu.
Chris Happy

7

Bir varlığı alıp yüklemek ve değerlerine erişebilmek için aşağıdaki kodu kullanabilirsiniz.

  use \Drupal\Core\Url;

  $alias = \Drupal::service('path.alias_manager')->getPathByAlias('/etapes-de-la-vie');

  $params = Url::fromUri("internal:" . $alias)->getRouteParameters();
  $entity_type = key($params);
  $node = \Drupal::entityTypeManager()->getStorage($entity_type)->load($params[$entity_type]);
  //to use dpm you need the devel module
  dpm($node->nid->value);

Referanslar


1

Devel modülünü takın ve ardından Devel araç çubuğu öğesini Geçerli rota bilgisi'ni kullanın .

Bu, doğrudan yazabileceğiniz ve drupal kurulumunuzda sorgu parametresi olarak bilinen herhangi bir yolu sağlayabileceğiniz bu url ile sonuçlanır:

/devel/routes/item?path=alias

Bir düğüm olduğunda, düğüm yol kimliğini listelenen yol değişkenlerinin sonundaki ham parametrelerde bulabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.