2013-07-15 8 views
22

Ho diversi URL che sembrano come segue:In TWIG, è possibile ottenere l'url assoluto di un collegamento con le variabili di ramoscello in esso?

{{domainID}}/action/{{userId}}/anotherAction

E l'URL punta quest'ultimo a:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

Tuttavia, se provo a caricare viewA da viewB tramite un iframe, il collegamento all'interno di viewA invece di puntare a:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

punterà a:

http://localhost/viewB/{{domainID}}/action/{{userId}}/anotherAction

e l'utente dovrà essere una pagina 404 se segue quest'ultimo.

La mia domanda è:

Esiste un modo per ottenere il percorso assoluto di un URL costruita in quel modo in ramoscello?

EDIT

La definizione percorso è:

@Route("/domain/details/{domainId}", name="domain_detailed_view")

ho cercato di ottenere il percorso assoluto in questo modo:

{{ url({{domainID}}/action/{{userId}}/anotherAction) }}

ma ottengo questo errore:

A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses

+0

Visualizza il codice di generazione in template –

+0

è la seconda fila nella mia domanda: click to edit ILikeTacos

+0

In generale, perché non hai usato il percorso e le funzioni di url del ramoscello? Per questi URL esistono percorsi esistenti? Puoi postare la definizione della rotta? –

risposta

47

I url o path funzioni prendono il nome del percorso, non il percorso. Puoi assegnargli un array associativo come secondo argomento opzionale se il percorso richiede parametri.

Ad esempio:

{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }} 

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

2

Ci sono due modi per fare la stessa cosa. In genere è possibile utilizzare url() o percorso all'interno della funzione absolute_url come tale absoulute_url (percorso (...)). Si consideri il seguente:

// 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 

Generalmente dal Symfony 2.7 è possibile utilizzare absolute_url() con asserisce e relativo percorso anche (relativo alla cartella web/root). Ecco come li potrebbe usare per impostare percorso assoluto per l'immagine in bundle e nella cartella web principale:

[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/alcuni.jpg]

<img src="{{ absolute_url('css/img/some.jpg') }}" /> 

Questo è ciò che symfony consiglia di utilizzare durante il rendering della vista e-mail. http://symfony.com/doc/current/email.html

6

so che è vecchio e ha risposto, ma con symfony 3 & ramoscello si può fare:

{{ app.request.getSchemeAndHttpHost() }} 

/* will match even port :) i.e. 
* http://localhost:8000 
* http://localhost 
* http://example.com 
*/ 

che è estremamente utile: D

Problemi correlati