Como posso obter o alias e / ou caminho atual no Drupal 8?
No Drupal 7 eu fiz isso com drupal_get_path_alias()
. Qual é o código equivalente que devo usar no Drupal 8?
fonte
Como posso obter o alias e / ou caminho atual no Drupal 8?
No Drupal 7 eu fiz isso com drupal_get_path_alias()
. Qual é o código equivalente que devo usar no Drupal 8?
Algumas das outras respostas estavam corretas apenas nas versões alfa / beta anteriores do Drupal 8, ou pareciam estar incompletas. A partir do beta7 (e espero que permanentemente), as seguintes regras devem ser aplicadas:
Para o caminho bruto atual (o caminho Drupal sem alias):
$current_path = \Drupal::service('path.current')->getPath()
Para o URI atual , que é praticamente uma representação direta da solicitação (pode até incluir uma string de consulta):
$current_uri = \Drupal::request()->getRequestUri();
Obviamente, não há garantia de que esse $current_uri
valor fornecerá um alias, mesmo que um esteja disponível para a solicitação, pois representa apenas o que o usuário solicitou. Então, para fazer estritamente o que você está perguntando (obtenha o alias, se disponível, e o caminho, se não), acho que você poderia fazer:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
Obviamente, dependendo do tipo de processamento que você está executando, pode ser melhor trabalhar com rotas em vez de caminhos, mas suponho que esse seja um outro tópico.
::getAliasByPath()
não aceitará mais uma string de caminho sem uma barra inicial (desde a versão beta13, eu acredito).getAliasByPath
retorna o caminho sem prefixo de idioma. Alguma idéia de como resolver isso?A maneira correta para o URL sem o alias do URL.
fonte
\Drupal::request()->getRequestUri();
respeito ao Drupal instala em uma subpasta?No Drupal 8, você pode fazer isso com o Twig:
exemplo:
from: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
fonte
{{ url('<current>') }}
mesmo que não esteja listado em Padrões de substituição.Para obter o caminho atual no Drupal 7, você usa
current_path()
, mas no Drupal 8 você usa$url = Url::fromRoute('<current>');
.Fonte: https://www.drupal.org/node/2382211
fonte
current_path()
edrupal_get_path_alias()
são funções diferentes.Para obter o caminho atual (caminho alternativo):
Para obter o caminho atual (caminho do sistema):
fonte
Para o Drupal 8, esta é a solução mais limpa que consegui encontrar:
fonte
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
No modelo Twig / Drupal 8:
URL da página atual
apenas CAMINHO
Veja: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
fonte
Se você deseja o URL absoluto com a string de consulta também:
fonte