जवाबों:
जब तक आप उस तक पहुँच प्राप्त करते हैं, तब तक पैरामीटर को nid से पूर्ण नोड ऑब्जेक्ट तक बढ़ा दिया गया होगा:
$node = \Drupal::routeMatch()->getParameter('node');
if ($node instanceof \Drupal\node\NodeInterface) {
// You can get nid and anything else you need from the node object.
$nid = $node->id();
}
देखें परिवर्तन रिकॉर्ड अधिक जानकारी के लिए।
/taxonomy/term/{tid}
?
menu_get_object
?
{}
अपने मार्ग में अंदर लिखते हैं । टैक्सोनॉमी शब्दों के लिए मार्ग पैरामाटर को taxonomy_term
मार्ग परिभाषा कहा जाता है /taxonomy/term/{taxonomy_term}
। यहाँ आप इस तरह प्राप्त कर सकते हैं \Drupal::routeMatch()->getParameter('taxonomy_term')
।
यदि आप कस्टम ब्लॉक का उपयोग या निर्माण कर रहे हैं तो आपको वर्तमान url नोड आईडी प्राप्त करने के लिए इस कोड का पालन करना होगा।
// add libraries
use Drupal\Core\Cache\Cache;
// code to get nid
$node = \Drupal::routeMatch()->getParameter('node');
$node->id() // get current node id (current url node id)
// for cache
public function getCacheTags() {
//With this when your node change your block will rebuild
if ($node = \Drupal::routeMatch()->getParameter('node')) {
//if there is node add its cachetag
return Cache::mergeTags(parent::getCacheTags(), array('node:' . $node->id()));
} else {
//Return default tags instead.
return parent::getCacheTags();
}
}
public function getCacheContexts() {
//if you depends on \Drupal::routeMatch()
//you must set context of this block with 'route' context tag.
//Every new route this block will rebuild
return Cache::mergeContexts(parent::getCacheContexts(), array('route'));
}
नोड पूर्वावलोकन पृष्ठ पर ध्यान दें, निम्नलिखित काम नहीं करता है:
$node = \Drupal::routeMatch()->getParameter('node');
$nid = $node->id();
नोड पूर्वावलोकन पृष्ठ के लिए, आपको नोड को इस तरह से लोड करना होगा:
$node = \Drupal::routeMatch()->getParameter('node_preview');
$nid = $node->id();
नोड पूर्वावलोकन पृष्ठ में नोड ऑब्जेक्ट लोड करने के लिए कैसे?