Eu quero usar o caminho base em um arquivo de modelo Drupal 8. Tentei o seguinte, mas não obtenho o resultado correto.
{{ app.request.baseUrl }}
{{base_path}}
O que eu preciso é o caminho absoluto para o nó {{ app.request.baseUrl }}/{{ url }}
.
Uma solução que encontrei foi colocar esse código em um gancho de pré-processo e passá-lo para o tema.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Estou procurando uma solução melhor. O que devo usar em vez do que estou usando?
path()
função pode ser aplicada para recuperar rota nó:{{ path('entity.node.canonical', {'node': node.id}) }}
Você quase nunca precisa criar caminhos explicitamente a partir de partes no Drupal 8. Eu usaria algo assim:
fonte
toString
mas notando show, então eu tentei o kint (url) e vi que é objeto.Em
page.html.twig
você terá uma{{ base_path }}
variável de trabalho . Por que ele não está disponível em todos os modelos, não faço ideia. Como eu acho que deveria ser e todo o resto parece confuso, minha solução preferida é fazer exatamente como o Drupal faz na função de página de pré-processo para qualquer lugar que eu precisar.Para
{{ base_path }}
disponibilizar para bloquear modelos em um tema chamado exemplo, adicione este código aoexample.theme
arquivo:Conforme observado na resposta aceita fornecida pelo MPD, ao obter o URL de um nó ou de outra entidade, existem métodos para fazer tudo isso por você.
No entanto, existem razões para obter o caminho_ base, como ao exibir imagens que vivem na sua pasta de temas.
{{ directory }}
fornece o caminho para a pasta do tema, mas deixa de fora o caminho base (geralmente apenas um / mas para preservar o funcionamento adequado do Drupal de um subdiretório de um domínio que não deve ser codificado). Empage.html.twig
ou em qualquer modelo que tenha o pré-processador acima, isso funcionará para esse fim:E, claro, a resposta de Shawn Conn funciona bem se você pode suprimir seu desejo por modelos bonitos, mas eu não consegui.
fonte
E de acordo com a documentação da página na 8.2.x , duas variáveis globais adicionadas para retornar a página inicial e os URLs do caminho base:
Assim, você pode obter o URL da página de fonte
front_page
e o URL base combase_url
Nota
obter o URL da primeira página
{{ url('<front>') }}
tem um problema quando você deseja concatená-lo com outro caminho, como exemploRetorna
esse meio, por padrão, não é texto e retorna uma matriz capaz de renderizar
fonte
Dentro
& no arquivo de modelo você pode chamar via
fonte
Até agora, este tópico não traz nenhuma solução adequada. Podemos concatená-lo usando render_val ()
Aqui está a maneira como eu a usei, para obter o caminho absoluto de uma imagem de entidade:
Primeiro, obtemos o URL base do site. Então precisamos remover um extra /. Em seguida, concatenamos nosso caminho base com o caminho relativo da imagem.
fonte
Todas as opções acima falharam para mim, porque eu tenho os caminhos de idioma configurados, portanto, o URL da minha primeira página se parece
https://example.com/en
.Acabei usando esse código para obter o URL base real do meu site:
fonte
Eu sei que você já marcou isso como correto, mas isso pode ser usado como um elemento ramificado em um arquivo de modelo sem nenhum trabalho extra. Encontrei isso no bloco - system-branding-block.html.twig do tema Classy. Então você pode usá-lo assim:
fonte