मैं Drupal 8 में वर्तमान उपनाम और / या पथ कैसे प्राप्त कर सकता हूं?
Drupal 7 में मैंने इसके साथ किया drupal_get_path_alias()
। Drupal 8 में मुझे किस समान कोड का उपयोग करना चाहिए?
मैं Drupal 8 में वर्तमान उपनाम और / या पथ कैसे प्राप्त कर सकता हूं?
Drupal 7 में मैंने इसके साथ किया drupal_get_path_alias()
। Drupal 8 में मुझे किस समान कोड का उपयोग करना चाहिए?
जवाबों:
अन्य उत्तरों में से कुछ केवल Drupal 8 के पिछले अल्फा / बीटा संस्करणों के दौरान सही थे, या अपूर्ण प्रतीत हो रहे थे। Beta7 के रूप में (और उम्मीद है कि स्थायी रूप से), निम्नलिखित नियम लागू होने चाहिए:
वर्तमान कच्चे रास्ते के लिए (अन-अलिस्ड ड्रुपल पथ):
$current_path = \Drupal::service('path.current')->getPath()
वर्तमान URI के लिए , जो कि अनुरोध का प्रत्यक्ष प्रतिनिधित्व बहुत सुंदर है (इसमें क्वेरी स्ट्रिंग भी शामिल हो सकती है):
$current_uri = \Drupal::request()->getRequestUri();
इस बात की कोई गारंटी नहीं है कि यह $current_uri
मान आपको एक उपनाम देगा, भले ही वह अनुरोध के लिए उपलब्ध हो, क्योंकि यह केवल यह दर्शाता है कि उपयोगकर्ता ने क्या अनुरोध किया है। इसलिए सख्ती से करें कि आप क्या पूछ रहे हैं (यदि उपलब्ध हो तो उर्फ प्राप्त करें, और यदि नहीं) तो मुझे लगता है कि आप कर सकते हैं:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
बेशक आप जिस प्रकार की प्रोसेसिंग कर रहे हैं, उसके आधार पर रास्तों के बजाय मार्गों के साथ काम करना सबसे अच्छा हो सकता है, लेकिन मुझे लगता है कि यह एक पूरा विषय है।
::getAliasByPath()
अब प्रमुख स्लैश के बिना एक पथ स्ट्रिंग को स्वीकार नहीं करेगा (क्योंकि बीटा 13 मुझे विश्वास है)।
getAliasByPath
बिना भाषा उपसर्ग के पथ को वापस करता है। कुछ पता है इसे कैसे हल करना है?
URL उपनाम के बिना URL के लिए उचित तरीका।
$current_path = \Drupal::service('path.current')->getPath()
\Drupal::request()->getRequestUri();
ड्रुपल एक सबफ़ोल्डर में सम्मान स्थापित करता है?
Drupal 8 में आप इसे Twig के साथ कर सकते हैं:
{{ url('<current>') }}
उदाहरण:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
से: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-tapers
{{ url('<current>') }}
भले ही प्रतिस्थापन पैटर्न के तहत सूचीबद्ध नहीं है।
Drupal 7 में वर्तमान पथ प्राप्त करने के लिए, आप उपयोग करने के लिए उपयोग करते हैं current_path()
, लेकिन Drupal 8 में आप उपयोग करते हैं $url = Url::fromRoute('<current>');
।
current_path()
और drupal_get_path_alias()
वे विभिन्न कार्य हैं।
वर्तमान पथ (अन्य पथ) पाने के लिए:
// Returns something like /about
$url = \Drupal\Core\Url::fromRoute('<current>');
वर्तमान पथ (सिस्टम पथ) पाने के लिए:
// Returns node/1
$path = $url->getInternalPath();
टहनी टेम्पलेट / ड्रुपल 8 में:
वर्तमान पृष्ठ का URL
{{ url('<current>') }}
केवल पथ
{{ path('<current>') }}
देखें: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-tapers
यदि आप संपूर्ण URL को क्वेरिस्ट्रिंग के साथ भी चाहते हैं:
use Drupal\Core\Url;
// ...
Url::fromRoute('<current>', [], ['query' => \Drupal::request()->query->all(), 'absolute' => 'true'])->toString();