Comment puis-je obtenir le pseudonyme et / ou le chemin actuel dans Drupal 8?
Dans Drupal 7, je l'ai fait avec drupal_get_path_alias()
. Quel est le code équivalent que je devrais utiliser dans Drupal 8?
la source
Comment puis-je obtenir le pseudonyme et / ou le chemin actuel dans Drupal 8?
Dans Drupal 7, je l'ai fait avec drupal_get_path_alias()
. Quel est le code équivalent que je devrais utiliser dans Drupal 8?
Certaines des autres réponses n'étaient correctes que lors des précédentes versions alpha / bêta de Drupal 8, ou semblaient être incomplètes. À partir de la version 7 (et, espérons-le, de façon permanente), les règles suivantes devraient s'appliquer:
Pour le chemin brut actuel (le chemin Drupal sans aliasing):
$current_path = \Drupal::service('path.current')->getPath()
Pour l' URI actuel , qui est à peu près une représentation directe de la demande (il peut même inclure une chaîne de requête):
$current_uri = \Drupal::request()->getRequestUri();
Bien entendu, rien ne garantit que cette $current_uri
valeur vous donnera un alias, même s'il en existe un pour la requête, car il ne représente que ce que l'utilisateur a demandé. Donc, pour faire strictement ce que vous demandez (obtenir un alias si disponible, et un chemin sinon), je pense que vous pourriez faire:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
Bien sûr, selon le type de traitement que vous effectuez, il peut être préférable de travailler avec des itinéraires plutôt que des chemins, mais je suppose que c'est un tout autre sujet.
::getAliasByPath()
n'acceptera plus une chaîne de chemin sans slash (depuis beta13 je crois).getAliasByPath
renvoie le chemin sans préfixe de langue. Aucune idée sur la façon de résoudre ça?La manière appropriée pour l'URL sans l'alias d'URL.
la source
\Drupal::request()->getRequestUri();
ce que respect Drupal installe dans un sous-dossier?Dans Drupal 8, vous pouvez le faire avec Twig:
exemple:
à partir de: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
la source
{{ url('<current>') }}
même s'il n'est pas répertorié sous Modèles de remplacement.Pour obtenir le chemin actuel dans Drupal 7, vous utilisez
current_path()
, mais dans Drupal 8, vous utilisez$url = Url::fromRoute('<current>');
.Source: https://www.drupal.org/node/2382211
la source
current_path()
etdrupal_get_path_alias()
ce sont des fonctions différentes.Pour obtenir le chemin actuel (chemin aliasé):
Pour obtenir le chemin actuel (chemin système):
la source
Pour Drupal 8, c’est la solution la plus propre que j’ai pu trouver:
la source
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
Dans le modèle Twig / Drupal 8:
URL de la page en cours
seulement CHEMIN
Voir: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
la source
Si vous voulez aussi l'URL absolue avec la chaîne de requête:
la source