web-gelistirme-sc.com

NID'den (veya düğüm nesnesinden) yol takma adını alma

Bir düğüm nesnesi var ve Drupal 8 içinde belirli bir yol almak için kullanmaya çalışıyorum.

Drupal 7 içinde drupal_lookup_path() vardı ama Drupal 8 için herhangi bir eşdeğer veya belge göremiyorum.

Bir düğüm nesnesinden yol almanın yeni "Drupal" yolu nedir?

$node->get('path') gibi basit bir şey olur mu?

Bu basit bir soru gibi görünüyor, ama kesinlikle bununla ilgili herhangi bir belge bulamıyorum.

Geçerli yol için yol diğer adı istemiyorum; Bir düğüm nesnesi veya bir düğüm kimliği verildiğinde, rastgele bir düğümün yol diğer adını istiyorum.

27
Jack Ryan

Bir düğüm kimliğinin yolunu almak için AliasManager :: getAliasByPath kullanın:

$alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$nid);
54
4k4

rl kullanmaya ne dersiniz?

use Drupal\Core\Url;    

...

$url = Url::fromRoute('entity.node.canonical', ['node' => $nid])->toString();
20
Kevin

Sadece nid, 4k4'ün çözümünüz varsa

$alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$nid);

Harika çalışıyor. Ancak zaten bir düğüm nesneniz varsa bir veya iki adımı atlayabilirsiniz. Düğümler aslında URL'leri almak için yerleşik yöntemlere sahiptir.

$node->toUrl()->toString();

Düğümün diğer adının döndürülmesini sağlar.

toUrl () bir url nesnesi döndürür. Buraya bakın https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Url.php/class/Url/8.2.x

ve toString (), url nesnesinin dize olarak temsilini döndüren bir yöntemdir.

16
Matt

Düğüm nesnesinden düğüm URL'sini almanın en iyi yolu

  • Mutlak Yol: $ düğüm-> toUrl () -> setAbsolute () -> toString ();
  • Göreli Yol: $ düğüm-> toUrl () -> toString ();

Ayrıca düğüm dilini de işleyecektir.

3
Prem Patel

Takma ad ayrıntılarının bir dizisini döndürmek için path.alias_storage Yükleme yöntemini veya bu düğüm için bir yol bulunmuyorsa boolean false değerini de kullanabilirsiniz.

$aliasArray = \Drupal::service('path.alias_storage')->load(['source' => '/node/' . $nid]);

2
rchaplin

Düğüm takma adı url'sini diller ile almak istiyorsanız, bu dili kullanmayı unutmayın.

$alias_url = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'. $nid, $langcode);

Bir sınıfta kullanıyorsanız, bağımlılık enjeksiyonunu doğru kullanmayı unutmayın.

1
Diosbel Mezquía