Ben nid almak istiyorum ama elimdeki tek bilgi http://example.com/this-is-the-alias olduğunu .
Sayfada değilse, bu takma ad için / düğüm / * iç yolunu almanın bir yolu var mı? Yoksa nid'i bu takma addan hemen almanın bir yolu var mı?
Ben nid almak istiyorum ama elimdeki tek bilgi http://example.com/this-is-the-alias olduğunu .
Sayfada değilse, bu takma ad için / düğüm / * iç yolunu almanın bir yolu var mı? Yoksa nid'i bu takma addan hemen almanın bir yolu var mı?
Yanıtlar:
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]);
}
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);
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.
$path
bazen 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.