वर्तमान पृष्ठ का मार्ग नाम प्राप्त करें


24

वर्तमान पृष्ठ का मार्ग नाम किसमें उपलब्ध है page.html.twig? पृष्ठ डिफ़ॉल्ट फ़ीडबैक फ़ॉर्म द्वारा जनरेट किया जाता है।

जवाबों:


57

वर्तमान मार्ग का नाम पाने के लिए, उपयोग करें:

$route_name = \Drupal::routeMatch()->getRouteName();

आप अपनी थीम की ".theme" फ़ाइल में एक चर के रूप में वर्तमान पृष्ठ का मार्ग नाम जोड़ सकते हैं। इस तरह एक _preprocess_page फ़ंक्शन जोड़ें, और ड्रुपल कैश को साफ़ करें।

/**
 * Implements hook_preprocess_page().
 *
 */
function mytheme_preprocess_page(&$variables) {
  $variables['route_name'] = \Drupal::routeMatch()->getRouteName();
}

तो आप इस तरह से page.html.twig में पहुँच सकते हैं:

{{ route_name }}

नोट: \Drupal::routeMatch()->getRouteName() कभी-कभी अशक्त हो जाएगा।

यदि आप चीजों को ठीक से करने के लिए एक वर्ग के अंदर हैं, तो आप कंस्ट्रक्टर में रूट मैच सेवा को इंजेक्ट करना चाहेंगे और फिर इसे इस तरह से कॉल करेंगे:

$this->currentRouteMatch->getRouteName()

निर्माणकर्ता (और चर) इस तरह होगा:

  /**
   * The current route match.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $currentRouteMatch;

  /**
   * Constructs a new ThemeTestSubscriber.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
   */
  public function __construct(RouteMatchInterface $current_route_match) {
    $this->currentRouteMatch = $current_route_match;
  }

यदि यह एक सेवा वर्ग है, तो आप इसे अपने कस्टम मॉड्यूल में yaml फ़ाइल में सेवा में पास करेंगे:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']

वहाँ एक CLI (लाइन मोड कमांड) है जो कहीं न कहीं सभी ड्रुपल मार्गों को दिखाता है ... याद नहीं कर सकता कि यह क्या था ... मैं अपडेट करूंगा (जब तक कि कोई और नहीं जानता)
Sea26.2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.