Estou mudando de CodeIgniter para Symfony 2. Alguém pode me dar um exemplo de como:
- Obtenha o url de base (o url sem as partes específicas da rota)
- Passe globalmente essa variável para o pacote de galhos para que eu possa usá-la em todos os modelos.
Respostas:
Por que você precisa obter este URL de raiz? Você não pode gerar URLs absolutos diretamente?
Este código Twig irá gerar o http: // url completo para a rota _demo_hello.
Na verdade, obter o URL base do site é apenas obter o URL completo da rota da página inicial:
( página inicial , ou o que quer que você chame em seu arquivo de roteamento).
fonte
Isso agora está disponível gratuitamente em modelos de galhos (testado em sf2 versão 2.0.14)
Em versões posteriores do Symfony (testado em 2.5), tente:
fonte
{{ app.request.baseUrl }}
(localizará o método getter e o chamará automaticamente){{ app.request.getSchemeAndHttpHost() }}
funciona!Você pode usar o novo método de solicitação
getSchemeAndHttpHost()
:fonte
Válido do Symfony v2.1 até v4.1 +
Se você quiser a URL base para um aplicativo Symfony, você deve usar
getSchemeAndHttpHost()
concatenado junto comgetBaseUrl()
, semelhante a comogetUri()
funciona, exceto sem o caminho do roteador e a string de consulta.Por exemplo, se o URL do seu site Symfony residir em
https://www.stackoverflow.com/app1/
, esses dois métodos retornam estes valores:getSchemeAndHttpHost
getBaseUrl
Nota:
getBaseUrl()
inclui o nome do arquivo do script (ou seja,/app.php
se estiver no seu URL).fonte
O URL base é definido internamente
Symfony\Component\Routing\RequestContext
.Ele pode ser obtido do controlador desta forma:
fonte
Para Symfony 2.3+, para obter a url base em um controlador deve ser
fonte
$this->container->get('request')->getSchemeAndHttpHost()
ou do controlador
fonte
Também para js / css / urls de imagem, há uma função útil asset ()
fonte
Em vez de passar a variável para o modelo globalmente, você pode definir um modelo base e renderizar a 'parte global' nele. O modelo básico pode ser herdado.
Exemplo de modelo de renderização da documentação do symfony:
fonte
Para a versão atual do Symfony (quando escrevi esta resposta, é Symfony 4.1) não acesse diretamente o contêiner de serviço como feito em algumas das outras respostas.
Em vez disso (a menos que você não use a configuração de serviços padrão), injete o objeto de solicitação por sugestão de tipo.
Veja também a documentação oficial do Symfony sobre como recuperar o objeto de solicitação atual .
fonte
fonte
Em uma situação envolvendo um aplicativo multi-domínio,
app.request.getHttpHost
me ajudou. Ele retorna algo comoexample.com
ousubdomain.example.com
(ouexample.com:8000
quando a porta não é padrão). Isso estava no Symfony 3.4.fonte
Eu tentei todas as opções aqui, mas elas não funcionaram para mim. Acabei fazendo funcionar usando
Espero que isso ajude alguém que ainda está lutando.
fonte
site
contém?