web-gelistirme-sc.com

Geçerli yol takma adını veya yolunu nasıl edinebilirim?

Drupal 8] 'deki mevcut takma adı ve/veya yolu nasıl alabilirim?

Drupal 7 Bunu drupal_get_path_alias() ile yaptım. Drupal 8?

61
Yusef

Diğer cevapların bazıları sadece Drupal 8 'ın önceki alfa/beta sürümlerinde doğruydu veya eksik görünüyordu. Beta7 itibariyle (ve umarım kalıcı olarak) aşağıdaki kurallar geçerli olmalıdır:

Geçerli ham yol (takma adsız Drupal yol):

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

Geçerli URI için, isteğin hemen hemen doğrudan bir temsili (hatta bir sorgu dizesi içerebilir):

$current_uri = \Drupal::request()->getRequestUri();

Elbette bunun $current_uri değeri, yalnızca kullanıcının ne istediğini temsil ettiğinden, istek için kullanılabilir olsa bile size bir takma ad verir. Yani kesinlikle sorduğunuz şeyi yapmak (varsa takma ad ve değilse yolu almak) Ben yapabileceğini düşünüyorum:

$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);

Tabii ki yaptığınız işlem türüne bağlı olarak, yollar yerine rotalarla çalışmak en iyisi olabilir, ancak sanırım bu tamamen başka bir konudur.

116
rjacobs

URL takma adı olmayan URL için uygun yol.

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

Drupal 8 bölümünde bunu Twig ile yapabilirsiniz:

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

misal:

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

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

20

Drupal 7 içindeki geçerli yolu almak için current_path(), ancak Drupal 8] içinde $url = Url::fromRoute('<current>'); kullanırsınız .

Kaynak: https://www.drupal.org/node/2382211

16
Nitesh Sethia

Geçerli yolu (takma yol) almak için:

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

Geçerli yolu (sistem yolu) almak için:

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

Tam yol URL'sini almak için sadece yol değil (Drupal 8), bulabildiğim en temiz çözüm:

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

Sorgu dizesi ile de mutlak URL istiyorsanız:

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

Twig şablon/Drupal 8:

Geçerli sayfanın URL'si

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

sadece PATH

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

Bakınız: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates

3
elektrorl