it-swarm-ko.tech

사이트의 기본 URL을 얻는 방법

내 사이트는 http : //drupal8.local/ 에 있습니다. 해당 URL의 drupal8.local 부분을 어떻게 얻습니까?

Url::fromRoute('<'current'>') 또는 base_path()은 URL의 경로 부분을 반환합니다. 예를 들어 http : //drupal8.local/a/b/c/d/e/f 의 경우 '/a/b/c/d/e/f' 필요할 때 'drupal8.local'.

URL의 해당 부분을 어떻게 얻을 수 있습니까?

38

getHost() 요청에서 호스트 이름 "drupal8.local"을 직접 가져올 수 있습니다.

$Host = \Drupal::request()->getHost();

어떤 경우에는 스키마를 얻을 수도 있습니다. fx https://drupal8.local :

$Host = \Drupal::request()->getSchemeAndHttpHost();
74
Clive

"\Drupal :: request "에서 이러한 방식으로 요청 객체에 직접 액세스하는 것에 대한 경고를 고려하면 Shaun Dychko 가 언급했듯이 아마도 호스트 이름을 얻는 좋은 옵션은 $ base_url 전역 변수에서 얻을 수 있습니다. PHP 함수의 도움 parse_url :

global $base_url;
$base_url_parts = parse_url($base_url);
$Host = $base_url_parts['Host'];
5
camilo.escobar

의존성 주입과 서비스 로이 작업을 수행하려면 RequestStack 을 사용할 수 있습니다.

use Symfony\Component\HttpFoundation\RequestStack;

그리고 이것을 다음과 같이 정의하십시오 :

protected $request;

public function __construct(..., RequestStack $request_stack) {
  ...
  $this->request = $request_stack->getCurrentRequest();
}

public static function create(ContainerInterface $container, ...) {
  return new static(
    ...
    $container->get('request_stack')
  )
}

그런 다음 다음과 같이 선언하십시오.

$this->request->getHost()
$this->request->getSchemeAndHttpHost()
2
Keven