আমি কীভাবে কোনও পাথের ওরফে নোড আইডি পেতে পারি?


16

আমি নিডটি পেতে সক্ষম হতে চাই তবে আমার কাছে কেবলমাত্র তথ্য হল http://example.com/this-is-the-alias

আমি যদি পৃষ্ঠাটিতে না আছি তবে উলামের জন্য / নোড / * এর অভ্যন্তরীণ পথটি পাওয়ার কোনও উপায় আছে কি? বা ঠিক তখনই alias উরফ থেকে নিড পাওয়ার কোনও উপায় আছে?

উত্তর:


25

আমি সরাসরি ফাংশন আছে কিনা তা নিশ্চিত নই, তবে একটি রুটটি হল অভ্যন্তরীণ পথটি অনুসন্ধানের জন্য পাথ ওরফে ম্যানেজার পরিষেবাটি ব্যবহার করে তারপরে কোনও অবজেক্ট লোড সম্পাদনের জন্য বৈধ নোড আইডির জন্য এটি পুনরায় তৈরি করুন:

$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
কোনও কারণে, $pathকখনও কখনও সমান হয় /this-is-the-alias। একবার যখন রুট পাথ ( node/{id}) ছিল অন্য একটি উপন্যাস # অভিবাসন সংগ্রাম, তবে এটি অন্যান্য এলিয়াসের সাথে উপস্থিত ছিল।
ক্রিস হ্যাপি

7

কোনও সত্তা পেতে এবং লোড করতে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন এবং এর মানগুলিতে অ্যাক্সেস রাখতে পারেন।

  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);

তথ্যসূত্র


1

ডিভেল মডিউলটি ইনস্টল করুন এবং তারপরে ডিভেল টুলবার আইটেমটি বর্তমান রুটের তথ্য ব্যবহার করুন

এর ফলে এই ইউআরএল আসে, যা আপনি সরাসরি টাইপ করতে পারেন এবং আপনার ড্রুপাল ইনস্টলেশনটিকে কোয়েরি প্যারামিটার হিসাবে পরিচিত কোনও পথ সরবরাহ করতে পারেন:

/devel/routes/item?path=alias

এটি যখন নোড হয় আপনি তালিকাভুক্ত রুট ভেরিয়েবলের শেষে কাঁচা প্যারামিটারগুলিতে নোড আইডি পাবেন find

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.