Mon site est sur http: //drupal8.local/ . Comment obtenir la partie drupal8.local de cette URL?
Url::fromRoute('<'current'>')
ou base_path()
renvoie le chemin parth de l'URL; Par exemple, pour http: //drupal8.local/a/b/c/d/e/f , ils reviennent « /a/b/c/d/e/f'
lorsque j'ai juste besoin d'obtenir 'drupal8.local'
.
Comment puis-je obtenir cette partie de l'URL?
Réponses:
Vous pouvez obtenir le nom d'hôte "drupal8.local" directement à partir de la
getHost()
requête:Dans certains cas, vous voudrez peut-être aussi obtenir le schéma, fx
https://drupal8.local
:la source
\Drupal::request()->getSchemeAndHttpHost()
reviendrahttp://drupal8.local
.Url::fromRoute('<front>', [], ['absolute' => TRUE]);
Certains avertissements concernant l'accès direct à l'objet de requête de cette manière sont les suivants
\Drupal::request
:\Drupal\Core\Form\FormBase
Cette dépendance est automatiquement injectée dans tous les contrôleurs de formulaire se prolongeant automatiquement. Vous pouvez y accéder à l'aide de:Je pense (mais je n'ai pas testé) qu'un contrôleur de page standard extensible
\Drupal\Core\Controller\ControllerBase
pourrait fournir lerequest_stack
service en remplaçant la\Drupal\Core\Controller\ControllerBase::create
fonction, puis en définissant une$request
propriété dans le constructeur. Ceci est très bien décrit pour les formulaires et le même processus devrait s’appliquer aux contrôleurs de page: https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a- forme .la source
En prenant en compte les " avertissements concernant l'accès direct à l'objet de requête de cette manière dans \ Drupal :: request " mentionnés par Shaun Dychko , une bonne option pour obtenir le nom d'hôte est de l'obtenir à partir de la variable globale $ base_url , avec l'aide de php fonction parse_url :
la source
Si vous souhaitez effectuer cette opération avec une injection de dépendance et un service, vous pouvez utiliser RequestStack :
Et définissez-le comme ceci:
Et puis déclarez-le comme ceci:
la source