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.
Bir düğüm kimliğinin yolunu almak için AliasManager :: getAliasByPath kullanın:
$alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$nid);
rl kullanmaya ne dersiniz?
use Drupal\Core\Url;
...
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid])->toString();
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.
Düğüm nesnesinden düğüm URL'sini almanın en iyi yolu
Ayrıca düğüm dilini de işleyecektir.
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]);
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.