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

25
demandé sur ILikeTacos 2013-07-15 23:02:48

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 }) }}

Http://symfony.com/doc/master/reference/twig_reference.html

54
répondu kunal 2013-07-15 20:31:08

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

6
répondu Tom St 2017-04-23 18:39:10

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

4
répondu DevWL 2018-01-31 00:43:00