Drupal 8에서 현재 별명 및 / 또는 경로를 얻으려면 어떻게해야합니까?
Drupal 7에서는이 작업을 수행했습니다 drupal_get_path_alias()
. Drupal 8에서 사용해야하는 동등한 코드는 무엇입니까?
Drupal 8에서 현재 별명 및 / 또는 경로를 얻으려면 어떻게해야합니까?
Drupal 7에서는이 작업을 수행했습니다 drupal_get_path_alias()
. Drupal 8에서 사용해야하는 동등한 코드는 무엇입니까?
답변:
다른 답변 중 일부는 Drupal 8의 이전 알파 / 베타 버전에서만 정확했거나 불완전한 것으로 보였습니다. 베타 7 현재 (및 희망적으로 영구히) 다음 규칙이 적용되어야합니다.
현재 원시 경로 (별칭 화되지 않은 Drupal 경로)의 경우 :
$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 설치를 존중 합니까 ?
Drupal 8에서는 Twig로이를 수행 할 수 있습니다.
{{ url('<current>') }}
예:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
에서 : https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
{{ url('<current>') }}
대체 패턴 아래에 표시되지 않더라도 보기> 필드> 결과 다시 작성> 링크 경로가 허용 됩니다.
Drupal 7에서 현재 경로를 얻으려면을 사용 current_path()
하고 Drupal 8에서는을 사용 $url = Url::fromRoute('<current>');
합니다.
current_path()
그리고 drupal_get_path_alias()
서로 다른 기능입니다.
나뭇 가지 템플릿 / Drupal 8에서 :
현재 페이지의 URL
{{ url('<current>') }}
PATH 만
{{ path('<current>') }}
참조 : https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates