Je suis en train de passer de CodeIgniter à Symfony 2. Quelqu'un peut-il s'il vous plaît me donner un exemple de la façon de:
- Obtenez l'URL de base (l'URL sans les parties spécifiques à l'itinéraire)
- Passez globalement cette variable au bundle twig afin que je puisse l'utiliser dans chaque modèle.
Réponses:
Pourquoi avez-vous besoin de cette URL racine? Ne pouvez-vous pas générer directement des URL absolues?
Ce code Twig générera l'url http: // complète de la route _demo_hello.
En fait, obtenir l'URL de base du site Web n'obtient que l'URL complète de l'itinéraire de la page d'accueil:
( page d'accueil , ou comme vous l'appelez dans votre fichier de routage).
la source
Ceci est maintenant disponible gratuitement dans les modèles Twig (testé sur sf2 version 2.0.14)
Dans les versions ultérieures de Symfony (testé sur 2.5), essayez:
la source
{{ app.request.baseUrl }}
(il localisera la méthode getter et l'appellera automatiquement){{ app.request.getSchemeAndHttpHost() }}
fonctionne!Vous pouvez utiliser la nouvelle méthode de requête
getSchemeAndHttpHost()
:la source
Valable de Symfony v2.1 à v4.1 +
Si vous voulez l'URL de base vers une application Symfony, vous devez utiliser
getSchemeAndHttpHost()
concaténée avecgetBaseUrl()
, comme celagetUri()
fonctionne, sauf sans le chemin du routeur et la chaîne de requête.Par exemple, si l'URL de votre site Web Symfony se trouve à
https://www.stackoverflow.com/app1/
, ces deux méthodes renvoient ces valeurs:getSchemeAndHttpHost
getBaseUrl
Remarque:
getBaseUrl()
inclut le nom de fichier du script (c'est-à-dire/app.php
) s'il est dans votre URL.la source
L'URL de base est définie à l'intérieur
Symfony\Component\Routing\RequestContext
.Il peut être récupéré à partir du contrôleur comme ceci:
la source
Pour Symfony 2.3+, pour obtenir l'URL de base dans un contrôleur doit être
la source
$this->container->get('request')->getSchemeAndHttpHost()
ou du contrôleur
la source
Aussi pour les URL js / css / image, il y a une fonction pratique asset ()
la source
Au lieu de passer la variable au modèle globalement, vous pouvez définir un modèle de base et y rendre la «partie globale». Le modèle de base peut être hérité.
Exemple de modèle de rendu de la documentation symfony:
la source
Pour la version actuelle de Symfony (au moment d'écrire cette réponse, il s'agit de Symfony 4.1), n'accédez pas directement au conteneur de services comme cela a été fait dans certaines des autres réponses.
À la place (sauf si vous n'utilisez pas la configuration de services standard), injectez l'objet de requête en indiquant le type.
Consultez également la documentation officielle de Symfony sur la manière de récupérer l'objet de requête actuel .
la source
la source
Dans une situation impliquant une application multi-domaine,
app.request.getHttpHost
m'a aidé. Il renvoie quelque chose commeexample.com
ousubdomain.example.com
(ouexample.com:8000
lorsque le port n'est pas standard). C'était dans Symfony 3.4.la source
J'ai essayé toutes les options ici mais elles n'ont pas fonctionné pour moi. Finalement, je l'ai fait fonctionner en utilisant
J'espère que cela aide quelqu'un qui a encore du mal.
la source
site
contient?