Dans TWIG, est-il possible d'obtenir l'url absolue d'un lien avec des variables twig?
J'ai plusieurs URL qui se présentent comme suit:
{{domainID}}/action/{{userId}}/anotherAction
Et cette dernière URL pointe vers:
http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction
Cependant, Si j'essaie de charger viewA
à partir de viewB
via un iframe, le lien à l'intérieur de viewA
au lieu de pointer vers:
http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction
Il pointera vers:
http://localhost/viewB/{{domainID}}/action/{{userId}}/anotherAction
Et l'utilisateur se retrouvera dans une page 404 s'il suit cette dernière.
Ma question Est:
Existe-t-il de toute façon pour obtenir le chemin absolu d'une url construite de cette façon dans twig?
Modifier
La définition de l'itinéraire est:
@Route("/domain/details/{domainId}", name="domain_detailed_view")
J'ai essayé d'obtenir le chemin absolu de cette façon:
{{ url({{domainID}}/action/{{userId}}/anotherAction) }}
Mais je reçois cette erreur:
Une clé de hachage doit être une chaîne entre guillemets, un nombre, un nom ou une expression entre parenthèses
3 réponses
Les fonctions url
ou path
prennent le nom de la route, pas le chemin. Vous pouvez lui donner un tableau associatif en tant que second argument optionnel si la route nécessite des paramètres.
Par exemple:
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}
Je sais que c'est vieux et répondu, mais avec symfony 3 & twig vous pouvez faire:
{{ app.request.getSchemeAndHttpHost() }}
/* will match even port :) i.e.
* http://localhost:8000
* http://localhost
* http://example.com
*/
Ce qui est extrêmement utile: D
Vous avez deux façons de faire la même chose.
Généralement, vous pouvez utiliser url()
ou path dans la fonction absolute_url comme ceci absoulute_url(path(...)). Considérez ce qui suit:
// example 1:
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}
// example 2:
{{ absolute_url(path('domain_detailed_view', { 'domainId': domainId, 'userId': userId })) }}">
// note - those two do the same thing
Généralement depuis Symfony 2.7, vous pouvez utiliser absolute_url () avec des assertions et un chemin relatif également (relatif au dossier Web / racine). Voici comment vous pouvez les utiliser pour définir le chemin absolu de l'image dans bundle et dans le web principal dossier:
[app / src/UserBundle/Resources/public/img / image.jpg]
<img src="{{ absolute_url(asset('bundle/user/img/image.jpg')) }}" /> // new way since 2.7 up
<img src="{{ asset('bundle/user/img/image.jpg', absolute: true ) }}" /> // old way below 2.7 removed in symfony 3.0
[web/css/img/certains.jpg]
<img src="{{ absolute_url('css/img/some.jpg') }}" />
C'est ce que symfony recommande d'utiliser lors du rendu de la vue email. http://symfony.com/doc/current/email.html