it-swarm.asia

كيف أحصل على اسم المسار أو المسار الحالي؟

كيف يمكنني الحصول على الاسم المستعار الحالي و/أو المسار في Drupal 8؟

في Drupal 7 فعلت هذا باستخدام drupal_get_path_alias() . ما هو الرمز المكافئ الذي يجب استخدامه في Drupal 8؟

61
Yusef

كانت بعض الإجابات الأخرى صحيحة فقط خلال إصدارات ألفا/بيتا السابقة من دروبال 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);

بالطبع ، اعتمادًا على نوع المعالجة التي تقوم بها ، قد يكون من الأفضل العمل مع المسارات بدلاً من المسارات ، لكنني أفترض أن هذا موضوع آخر تمامًا.

116
rjacobs

الطريقة الصحيحة لعنوان URL بدون الاسم المستعار لعنوان URL.

$current_path = \Drupal::service('path.current')->getPath()
35
Daniel Wehner

في Drupal 8 يمكنك القيام بذلك باستخدام Twig:

{{ url('<current>') }}

مثال:

<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>

من: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates

20
Nicola De Lazzari

للحصول على المسار الحالي في Drupal 7 ، يمكنك استخدام current_path() ، ولكن في Drupal 8 تستخدم $url = Url::fromRoute('<current>');.

المصدر: https://www.drupal.org/node/2382211

16
Nitesh Sethia

للحصول على المسار الحالي (مسار مستعار):

// Returns something like /about
$url = \Drupal\Core\Url::fromRoute('<current>');

للحصول على المسار الحالي (مسار النظام):

// Returns node/1
$path = $url->getInternalPath();
9
Rahul Baisane

للحصول على عنوان url الحالي الكامل ليس فقط المسار (Drupal 8) ، هذا هو الحل الأنظف الذي تمكنت من العثور عليه:

Url::fromRoute('<current>',array(),array('absolute'=>'true'))->toString();
8
crobicha

إذا كنت تريد عنوان URL المطلق مع سلسلة الاستعلام أيضًا:

use Drupal\Core\Url;
// ...
Url::fromRoute('<current>', [], ['query' => \Drupal::request()->query->all(), 'absolute' => 'true'])->toString();
4
David Thomas

في Twig template/Drupal 8:

عنوان URL للصفحة الحالية

{{ url('<current>') }}

فقط PATH

{{ path('<current>') }}

انظر: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates

3
elektrorl